How to detect noise/interference in audio signal

조회 수: 9 (최근 30일)
Madeline Liccione
Madeline Liccione 2016년 12월 3일
댓글: Madeline Liccione 2016년 12월 4일
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
Tamir Suliman
Tamir Suliman 2016년 12월 4일
I will take a look at it today it would help if you also upload your simulink model file.

댓글을 달려면 로그인하십시오.

답변 (1개)

Walter Roberson
Walter Roberson 2016년 12월 4일
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
Madeline Liccione
Madeline Liccione 2016년 12월 4일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Measurements and Spatial Audio에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by