I did this project as part of course requirements of the course BITS F434 Digital Signal Processing. Overall, this course made me realize the beauty and immense power of Digital Signal Processing and how it is being used to change the world in ways one cannot even imagine.
Digital Signal Processing teaches you how to design a system which can process data(digital data, mind you) and extract useful information from it. Now this extraction can be done in a lot of ways, from filtering to what not. However, one of the main objectives of DSP is to transform and analyze the signal and then “filter” the useful information. This is accomplished by using Digital and both Analog filters. You can imagine the process as a Assembly line where muck is flowing in. Your job is to design a sieve which can separate out the tiny god nuggets from the muck. This is not as easy as this analogy sounds!
To give you an idea about potential problems, imagine if the gold particles get covered in muck and look just like rest of it. How do you differentiate it now?
Adaptive Digital Signal Processing is all about designing the filter which can adapt to changes in noise and signal and readjust it’s coefficients in order to get the best possible output signal. It’s like saying the filter which can adjust it’s sieve size according to the size of the gold particles to be filtered out! It is a pretty amazing thing to make and watch at work.
To begin learning Digital Signal Processing, I strongly recommend watching Dr. S C Dutta Roy’s lectures delivered at IIT Delhi. It is available on NPTEL. He is amazing. Period.
For my project on Adaptive Digital Signal Processing, we built a small GUI in Matlab which accepts a noisy audio/text file and the perfect desired output file. Then, it applies an adaptive filter(out of multiple algorithms which can be chosen by the user) and filters the muck. It makes for a pretty cool demonstration with the included audio files “noisy_audio.wav” and “orig_audio.wav”.
Please remember to run the application in flow, that is, from top to bottom, left to right. Otherwise, you may get some crashes as I could not optimize the application in time to account for irregular flow of user control. Ensure you have set every option and clicked every button at least once before you start filtering.
Code on Github
I am also attaching the powerpoint presentation I used.
This was the final report which we submitted/
Hope this helps you!