In this repo you'll find Jupyter notebook examples of different funcionality that was used for my engineering thesis: "Development of a low-cost urban acoustic monitoring station".
This thesis was developed to finally obtain my engineering degree at the UNTREF university. You can see the full .pdf thesis document (in Spanish) here.
What inspired this work was one of the main problems that many experience nowadays (mainly in big cities like BA, where I live): noise. The first step in taking action to reduce noise is to have precise objective measurements of it. Traditionally, this was done by professionals using sound level meters. In the present, there are devices (acoustic monitoring stations) that overcome the limitations of that process (mainly the time and space limitations in the measurements).
This thesis objective was to develop a low-cost device that allows acoustic noise measurements continuously, remotely and autonomously. Since most of the similar alternatives in the market are cost-prohibitive, since they are usually manufactured with a portable and standard-compliant professional sound level meters.
The designed device uses a Raspberry Pi 2 Model B along with a digital I2S MEMS microphone to capture, process and measure the input sound. A customized housing for the microphone was built using a 3D printer, looking like this:
For the audio processing the below block diagram was proposed, in which the focus was to adapt the regular processes that traditional analog sound level meters perform to a digital device. ![](missing image)
In the notebooks included in this repo we will go over most of the functions and processes neccessary to have a functioning monitoring station.
The core code is available in dthis other repo RAMON (in Spanish), in which you can find functionality for:
- Obtaining input audio in pre-defined cycles of fixed length.
- Applying the microphone's inverse filter.
- Octave band and fractional octave-band filtering.
- Frequency weighting according to the A, C or Z curves.
- Linear integration or exponential (Fast or Slow) time weightings.
- Recording a calibration tone and saving its RMS level.
- RMS level calculation of the input audio.
- dBSPL and Leq levels measurement.
- Correction of the octave-band or fractional octave-band levels.
- DataFrame, .npy or HDF5 format storage of values.
- GUI execution for:
- the transformation of values between compressed and tabular formats.
- datetime index generation.
- customization of the measured period to preview.
- modify the temporal integration increasing granularity.
- percentile calculation.
- Lden calculation.
- visualization of the desired values.
- storing the information in a tabular file (.xlsx for example).
The basic monitoring station's operation can be seen in the image below:
To run the notebooks the folowing packages are required:
numpy
scipy
matplotlib
datetime
pandas
seaborn
IPython
ipywidgets