Skip to content

A repo with Jupyter notebooks that go over the core functionality developed for my thesis, allowing software-based sound pressure levels measurement.

Notifications You must be signed in to change notification settings

tiaqui/my_thesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My engineering thesis

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".

Overview

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.

Development

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: 3D device model

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.

Digital processing - Code

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:

Monitoring station block diagram

Notebooks

  1. Inverse filtering design and implementation.

Notebook 1

  1. A, C and Z frequency weightings.

Notebook 2

  1. Octave and one-third octave band filters.

Notebook 3

  1. Slow and Fast time weightings.

Notebook 4

  1. Acoustic measurements

Notebook 5

Requirements

To run the notebooks the folowing packages are required:

  • numpy
  • scipy
  • matplotlib
  • datetime
  • pandas
  • seaborn
  • IPython
  • ipywidgets

About

A repo with Jupyter notebooks that go over the core functionality developed for my thesis, allowing software-based sound pressure levels measurement.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published