Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 2.4 KB

README.md

File metadata and controls

44 lines (31 loc) · 2.4 KB

rattlesnake

A python application that does noise cancellation

Motive

During the spring semester of 2017 I had to do a project for my studies at university. The topic was to think of experiments regarding audio, sound, sonic waves etc. that we could prepare for fellow students to experience during future lectures with the goal of imparting acoustics to the students. During this project I came up with the idea of demonstrating Active Noise Cancellation with a custom script.

Explanation

This python tool can do Active Noise Cancellation (ANC) respectively Active Noise Reduction (ANR). It reads in a stream of audio, either live or from a pre-recorded file and calculates an inverted signal for every byte of the data stream utilizing an XOR operation.
After the execution is finished the program calculates a median of the difference levels which reflects the results of the algorithm. It also plots a graph with the results and displays it afterwards.

More details soon to follow

Installation

Clone the repo and install the requirements via pip:
pip install -r requirements.txt

Usage

Run the python script from your terminal and specify the mode you want to use:
python3 rattlesnake.py --mode --result nth_iteration filename.wav

Every argument type only accepts one at a time.

Argument Description
--live (-l) This is the 'live-mode' which expects a wave audio file (.wav) as the fourth argument. It then cancels noise captured by a connected microphone while playing back an audio file. This way it functions like noise-cancelling headphones. (--mode)
--file (-f) This is the more basic 'file-mode' which expects a wave audio file (.wav) as the fourth argument. It then plays back the original file as well as the inverted audio to effectively cancel both out. (--mode)
--playback (-p) This is the 'playback-mode' that does exactly what one would expect. It can be used to test an existing file. (--mode)
--decibel (-db) This argument will cause the 'decibels' to be plotted at the end. (--result)
--waves (-wv) This argument will cause the 'waves' to be plotted at the end. (--result)
nth_iteration This argument is required and needs to be a number. It specifies on which nth iterations data is saved for calculating and plotting the results. The lower the value, the more precise the results.

License

MIT