# Removing Bounded Noise from an Audio Signal

I'm currently trying to remove some noise from a "contaminated" audio file. From what's given, I know that the noise is isolated to a specific frequency band - that is, from ~1400 Hz - ~1800 Hz.

The most straightforward approach is to obviously implement a stop-band filter - which I've done successfully. However, I wanted to explore alternative options being that a band-pass filter also eliminates the desired signal.

Here's what I've done thus far:

In MATLAB, I explored some aspects of the signal, such as it's power spectrum, autocorrelation, etc:

It's clear that the noise is concentrated in the band I mentioned above, and it appears that the noise is Gaussian.

My initial thought was to apply a spectral subtraction method, such as the Ephraim-Malah Algorithm, but one of the assumptions made by this method is that the underlying noise is Gaussian White Noise. In the file I have, the noise is limited to only a particular band, not the entire signal. My concern is that if I were to apply the algorithm, I would unintentionally introduce minor distortions to potentially good portions of the signal.

At the moment, I'm considering splitting the signal into two portions: use a stop-band filter to extract the unaffected frequencies, and use a band-pass filter to capture the noisy region, apply the algorithm to the latter band, and recombine the signals.

Is this an appropriate approach, or is there a simpler and/or better method that I could use?

NOTE:

Being that I have an idea of what the noise is, I could potentially use a Weiner Filter.

• could you elaborate on why you think the noise is Gaussian
– sav
Commented Dec 4, 2015 at 15:00
• @sav There are two reasons: (1) When I generated the spectrogram of the signal that focused on frequency range in question, the power density was fairly uniform. (2) The autocorrelation of the signal seems to closely resemble the dirac delta function. Commented Dec 5, 2015 at 1:20
• @Mlagma, I think you might be mistaken on the meaning of "Gaussian noise". What you describe are conditions for band limited white noise. Gaussianess is a property that reflects in the amplitude statistics, not in the correlations. Commented May 31, 2016 at 14:52

If you have some prior information about your noise e.g frequency band, you can simply implement an noise removing algorithm with emphasis on removing the noise on that band (I mean use a somehow weighted noise removing process).

One of nice methods is weighted multi-band spectral subtraction (this is not the only method and in fact these weighted methods have many variations). The improvement of MBSS is due to the fact that the multi-band speech takes into account the non-linear effect of coloured noise on the spectrum of speech i.e. some frequencies are affected more adversely than others. Multi-band spectral subtraction (MBSS) method provides a definite improvement over other methods such as the conventional power spectral subtraction method.

Speech spectrum is divided into $N$ non-overlapping bands and spectral subtraction is applied to each band independently. The estimation of the clean speech spectrum in $i$'th band can be obtained from:

$$|x(\omega)|^2=|y(\omega)|^2 – \alpha_i \delta_i |d(\omega)|^2$$

for

$c_i<\omega<c_{i+1}$

Where $c_i$ and $c_{i+1}$ are the beginning and ending frequency band (your specific band) respectively. In the $i$'th band, $\alpha_i$ is the over-subtraction factor and $\delta_i$ is factor to control noise removal properties in each band individually. So you can set coefficient to remove the bounded noise from an audio signal.

For more help, you can read this paper :

Sunil D. Kamath, Philipos C. Loizou, “A multi-band spectral subtraction method for enhancing speech corrupted by colored noise,” Proc. IEEE Int. Conf. Acoust., Speech, Signal Process., vol. 4, July 2002.

• Can I please ask you to edit your response for clarity and if possible include one or two key references to papers or other work that is along the lines of your recommendation? I can see that you are recommending a weighted subtraction of the noise profile from the signal (?) but I do not this that this is immediately obvious.
– A_A
Commented Sep 29, 2016 at 7:38

The Reaper digital audio workstation (DAW) software has a ReaFIR plugin that can be taught the spectral profile of the noise from a sample of it, and it can do spectral "subtraction". The last time I checked you can try it out for free.

You can definitely use spectral subtraction methods. The basic assumption that needs to be met is that the noise is approximately stationary or only slowly varying. Note that spectral subtraction is performed in the frequency domain by modifying the magnitude of each frequency bin. If you know in advance that the noise is only present in a certain frequency band, you can apply spectral subtraction just in that band, and leave all other frequency bins unmodified.

A simple but fairly effective method would be a moving average.

Basically, you take the average of your noisy signal with a determined amount of forward and backward values. If $x$ is your noisy signal and $y$ is the output of the moving average, and you choose an averaging length of 5: $$y(k) = \frac{1}{5} \big{(}x(k-2) + x(k-1)+x(k)+x(k+1)+x(k+2)\big{)}$$

• This is not an ARMA model. The current output sample, $y(k)$ does not depend on previous output samples $y(k-i)$ (for $i > 0$) which would be the autoregressive (AR) part of the model. Your equation describes an acausal finite impulse response (FIR) filter. This can be viewed as a moving average (MA) of length 5. Commented Sep 29, 2016 at 12:07
• You are correct, my mistake. I will edit. Commented Sep 29, 2016 at 14:00