Tell me more ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

I am planning to compare two audio files. I have recorded two voices and compared them using cross correlation. Since the presence on background noise while recording the resulting correlation value is always near 0.5. If i give any recorded waves from internet, i am able to get the correct value. So how can i reduce the background noise from the recorded .wav file. If i come to know how to do it, then i will try to implement technically. Any basic ideas will be helpful for me to learn and apply it. Thanks.

share|improve this question
1  
Cross correlation should work even in the presence of background noise. In general, you can't remove noise from a recording, unless you have some idea of what that noise is. If your answer is "the noise is anything other than the specific signal I'm looking for", then that's what cross-correlation is for. – endolith Nov 1 '10 at 15:07
How is this an electronics or robotics question? – XTL Nov 2 '10 at 13:12
If i can understand the concept for solving this using DSP, i will try to implement technically. – Warrior Nov 2 '10 at 13:17

3 Answers

I recommend you look at the software package Audacity. It's free open-source software, and it has a noise reducing algorithm/plugin. I wouldn't expect you could copy it straight from the source, but it might give you some ideas on how it's done.

share|improve this answer

Noise usually creeps up at various specific frequencies in audio, these frequencies change depending on the environment.

Option 1
The easiest way to get rid of noise is the put a band pass filter right around where the frequency of your voice is at. There may still be noise at the same frequency of your voice, but this will be much harder to deal with.

Option 2
I am not sure what Audacity does, but I have seen many programs that require a sample of "silence" and use that to determine the noise. In other words, you record your voice but leave a gap of dead air at the end or beginning. Then you can go analyze what frequency components are around in your dead air. From this you can know how much of each frequency to remove from your voice signal.

share|improve this answer

If by "background noise", you mean noise that has a wide bandwidth and is relatively stationary, then spectral subtraction should work quite well for you. This is the general technique that Audacity/Cool Edit use when they say "Noise Reduction". Spectral subtraction is a very google-friendly term if you're interested in more research.

You take a sample of sound where there is no signal, and you create an FFT noise template from that. Then, you subtract that FFT noise template from the FFT of your signal + noise. Some algorithms get fancy and smooth the resulting frequency domain waveform before doing the inverse FFT. You have to be careful about how "strong" the reduction is, or you get these "underwater musical echoes". Sometimes it's better to do two "weak" passes than one "strong" pass.

However if there's e.g. cars moving in the background this won't work. In such a case, you might want to look at crazier stuff like Wiener filters.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.