I'm trying to filter noise from an audio signal. The signal was and is going to be recorded in a city environment which always contains some white/pink noise.

At this moment I'm using two options to filter the noise. Spectral Subtraction algorithm and Wiener filter.

I'm assuming the initial samples are noise only and that's how the filter starts subtracting noise, but I can't make this assumption at all times. I have to automatically detect when it's noise and when it's not.

My audio signal

I'm using Matlab btw.

If anyone has any sugestion... thanks

  • 1
    $\begingroup$ You can use Voice Activity Detection(VAD) algorithm for the required task. the choice of VAD algorithm depends on the characteristics/features of noise present in your recordings. If speech is supposed to have very high energy(magnitude) in comparison to noise than you can directly use some threshold on energy(to be calculated frame wise of length around 20 ms) and declare corresponding frames as noise or speech. $\endgroup$ – Arpit Jain Jun 10 '16 at 11:58
  • 1
    $\begingroup$ Carlos, welcome to DSP.SE! This is an on-topic question, but it may be a little general as asked. Can you expand on why you're asking the question if At this moment I'm using two options to filter the noise. ? What is wrong with the two options you have? $\endgroup$ – Peter K. Jun 10 '16 at 12:21
  • $\begingroup$ ok, sorry for not being clear x) . I'm assuming, in these two options, that I have a noise sample before I run the algorithm. but when the algorithm is runing it will not know what is noise at the begining. The algorithm has to run in real time. So no offline verification of what is a sample of noise only. the algorithm (distributed through a series of microphones along a location in a city) has to adapt to each point of the city and identify samples that are only noise, so that it can then run the noise filters (Spectral Subtraction or Wiener) $\endgroup$ – Carlos_Rei Jun 10 '16 at 16:44
  • $\begingroup$ @arpit I'm not sure if VAD is right in this situation. I've got to detect sound events that are not speech as well. using a threshold it might work in a few , maybe most, cases , but it will eliminate some events that might be relevant for me. $\endgroup$ – Carlos_Rei Jun 10 '16 at 16:50
  • $\begingroup$ @Carlos_Rei do you want to detect all the events except ambient noise ? $\endgroup$ – Arpit Jain Jun 11 '16 at 9:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.