How to detect noise/interference in audio signal

10 visualizaciones (últimos 30 días)
Madeline Liccione
Madeline Liccione el 3 de Dic. de 2016
Comentada: Madeline Liccione el 4 de Dic. de 2016
I have an audio signal that has loud high-pitched tones in it that I am supposed to filter out (using both Simulink and MATLAB). I am currently working on the Simulink solution. When playing the audio file with Windows Media Player you can really only hear the high-pitched sounds.
When I take the FFT of the audio signal and look at that plot, I see a lot of different frequencies and I don't know how to tell which ones are the noise I am hearing. I have been trying to google around to see what human speech looks like but I am really not sure.
The zip file is the .wav file I am supposed to process; MATLAB doesn't allow uploads of .wav files. In addition, the frequency domain plot y-axis is in dB not Amplitude like the plot suggests.
  1 comentario
Tamir Suliman
Tamir Suliman el 4 de Dic. de 2016
I will take a look at it today it would help if you also upload your simulink model file.

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 4 de Dic. de 2016
Hint: if you subtract off the mean, fft the result, and zero out anything above a certain absolute magnitude, inverse transform, and play, then you will be able to get most of the way. Not all of the way because the pesky interfering frequencies will not be completely eliminated this way, but as you look at the plot of the fft() you will be able to see pretty clearly the range of frequencies that are causing the problem.
The equivalent of this is "low pass filter".
  1 comentario
Madeline Liccione
Madeline Liccione el 4 de Dic. de 2016
Thanks for your response. I have some follow-up questions and findings.
Could you go into a bit more detail about what you mean by "zero out anything above a certain absolute magnitude?" Are you suggesting something like multiplying the data that corresponds to the n (in an n-point FFT) at which those frequencies reside? i.e. if a high-magnitude frequency peak occurs at n=197, I should be looking to create a function that will reduce the magnitude of that peak?
I was able to create a filter using the fdatool that blocks everything above 2500Hz and that worked okay. I can still hear some low-volume tones that shouldn't be there. So when I looked at the plot of the FFT of the filtered signal (where you can hear the human voice but there are still some underlying tones), all of the signals I thought I was suppressing were still there, just at about -60dB. I'm so confused. I was expecting to see the frequency content of the voice to appear. But then again I don't really know what I'm looking for; something between 300-3000Hz was suggested for the range of the spoken voice on the track.
In addition, I plotted the FFT of the signal with the mean subtracted and it looked identical to the unaltered FFT.

Iniciar sesión para comentar.

Categorías

Más información sobre Measurements and Spatial Audio en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by