0

Very similar, practically the same question was asked here: Remove noise from wav file, MATLAB

however I still don't know what to do. Here is the sound file that I am dealing with: https://uploadfiles.io/pstrt

i need to remove the noise from it. I know how to apply a variety of filters, the only thing I don't know is where does the noise actually occur. Following the steps from the question mentioned above I have the following spectrum: enter image description here

The person that answered the mentioned question was able to deduce where is the noise from the spectrum. I have no idea what gives it away. Could someone explain it to me? Thank you.

Scavenger23
  • 209
  • 1
  • 6
  • Possible duplicate of [Remove noise from wav file, MATLAB](https://stackoverflow.com/questions/24195089/remove-noise-from-wav-file-matlab) – Wolfie Dec 18 '18 at 12:26

1 Answers1

1

There is no foolproof way how to distinguish signal from noise just by looking at the spectrum unless you have some knowledge of the signal a-priori. The person that answered to the mentioned post listened to the sound, concluded that the speech had a higher pitch than the noise, calulated the FFT and started to tinker around with what he guessed was noise and listed to the modified result. An iterative process if you like. Often the stronger tones in your spectrum are your signal. In your application this would be around 900 Hz. Also, tones that are at multiples of the frequency you believe is your main signal component are often distortion. Distortion means that you have some nonlinearity in your device and that creates tones at muliples of your signal (in your case maybe 1800 Hz, 2700 Hz ...). Hope this helps

Mouse On Mars
  • 1,086
  • 9
  • 28
  • If you are confused as what to do with the noise "suspects" I would simply set these bins in your spectrum to zero. Make sure you keep the spectrum symmetric by always setting one bin and its replica bin to zero – Mouse On Mars Dec 18 '18 at 00:29
  • I see. Is there something else I could do in matlab to actually find out where the noise is coming from? I did a lot of attempts to filter the sound, including lowpass high pass and band pass filters, with no luck whatsoever. Thanks. – Scavenger23 Dec 18 '18 at 00:40
  • I would refrain form using filters since you are adding more variables to your problem, e.g. did you design the filter correctly, are you really attenuating the noise but not your signal... Instead calculate the FFT and set the bins to zero that you suspect are noise. Do this iteratively and you might improve the overall result gradually. You might also automate the process in Matlab, i.e. a loop iterates over all the bins and sets the current one to zero and generates a wav from the outcome. Of course you still need to listen to each of the wavs to decide whether there was any improvement – Mouse On Mars Dec 18 '18 at 00:53