top of page

EECS 351 Final Project Report - Group 13

Broadband Noise Suppression in Digital Audio Signals

Purpose

Real world signals and realistic noise are often too complex for a simple filter to separate without excessive loss of information. Our final project was to design and implement a filter that could filter interesting and meaningful signals from predictable noise with minimum loss of information.  Such a filter is robust in the range of signals that it can filter, and requires the bare-minimum of information regarding the original signal and noise.  This means that it can be quickly applied to real-world signals in order to reliably improve the accuracy of the information that they are carrying.

​

​

​

Broadband noise, noise distributed over a wide range of frequencies, is common in real world applications such as audio recording, wireless communications and remote sensing. When the frequency spectrum of the noise overlaps with the frequency of the signal, simple filters such as low-pass or band-pass filters will fail to eliminate the noise without also truncating the original signal.

​

A truly robust filter should be able to perform without knowing the frequency spectrum of the noise beforehand. However, real world noise can often be modeled statistically, such as in Additive White Gaussian Noise. Thus, this filter could be useful in a wide variety of imperfect communication and transmission problems, such as audio enhancement and improving sensor accuracy.

​

​

Real-World Applications

BNC.png

Fig 1. Time and frequency domain representations of a signal corrupted with broadband noise

Figure 1 demonstrates how random Gaussian noise has a frequency spectrum that overlaps that of the original signal, thus rendering low/high/band pass filtering relatively ineffective.

PSC.png

Fig 2. Noisy signal filtered by bell-curve passbands around the frequency peaks

As demonstrated in the Progress Report, we attempted to filter using simplistic methods such as pass-band filters to develop an intuition about the difficulty of this problem. Filtering with pass-bands maintains the overall shape of the frequency spectrum, but loses enormous amounts of information. In practice on an audio signal, this filter produces poor results that are difficult to decipher.  In particular, the filtered audio signal is barely recognizable when played, suffering from strong artefacting and distortion that renders the filtering process meaningless.

Wiener Filter

The Wiener Filter is a type of statistical filter. Given that we do not know the frequency spectrum of the noise beforehand, a Wiener Filter allows us to extract information regarding the characteristics of statistics of the noise from the corrupted signal and use this information to suppress the noise. For example, White Gaussian Noise is a common model for the random noise found in nature.

WFBD.png
IWF.PNG

Fig 3. Wiener Filter block diagram and function, a common result of derivation upon which we based our filtering algorithm

The  optimal form of the Wiener Filter is shown above, although its derivation was not the focus of the project. Filter coefficients are derived by minimizing the squared error between the original and estimated signals. 

​

A machine learning algorithm could do gradient descent to find the best possible coefficients, but you would need a sizeable dataset and be aware of overfitting. 

​

​

Without systematic distortions, H[w] can be considered 1, and the filter simplifies even further.  We make this assumption for our project, as the goal is to design a robust filter that can suppress broadband noise, and we are not focusing on the reversal of systematic corruption processes such as blurring or time delays.  The equations below show the simplified form.

​

SIWF.PNG

SNR, Signal to Noise ratio, represents the magnitude of the signal over the magnitude of the noise.

 

SNR values near one indicate similar power between the two, and the filter attenuates in the frequency domain. SNR values approaching infinity indicate the signal is much stronger than the noise, so the filter does not modify frequency domain characteristics. Finally, SNR values approaching zero indicate a much stronger noise relative to the signal, and the filter performs poorly trying to extract a weak signal.

​

Implementation Diagram

ID.PNG

Fig 4. Algorithm block diagram, designed by the group to implement a Wiener Filter

The block diagram above illustrates the algorithm that we designed in order to extract the parameters of the Wiener filter function from nothing more than a noisy signal.  y[k] represents the noisy signal that is assumed to be input to the algorithm, and x_hat[k] is the estimated signal that is determined by the algorithm.

​

​

Current Performance

Screen Shot 2019-04-23 at 9.26.42 PM.png

Fig 5. Filter algorithm performance for very noisy signal

The figure above shows the performance of our filtering algorithm for a signal with very strong broadband noise corruption.  Prior to filtering, the SNR between the noise and intended signal is 3.978dB.  After filtering, the SNR becomes 17.446dB, representing an improvement of 13.47dB.  Visually, the reconstructed signal (shown in blue overlaid onto the noisy signal) looks very similar to the original, although it is noteworthy that not all of th enoise has been removed.

​

Screen Shot 2019-04-23 at 9.32.37 PM.png

Fig 6. Filter algorithm performance for a less noisy signal

Figure 6 shows the same information as Figure 5, but for a signal that has been corrupted with slightly weaker noise.  ​The SNR in this case has been raised from 10.095dB to 28.288dB, representing an overall improvement of 18.193dB.

When observing this data, we noted that there seems to be a "sweet spot" of noisiness, where the filter is able to achieve the highest SNR increase. 

 

In order to investigate this further, we parameterized our algorithm in Matlab and swept through wider range of noise amplitudes.  The results of this testing are displayed in the video below.

Automatic Noise Detection

A feature of the Wiener filter that greatly interested us was its ability to suppress broadband noise without knowing any information about the original signal besides that which is contained within the corrupted signal.  As can be seen from the algorithm block diagram, a key step of our filter is the determination of the statistical properties of the noise that the signal is corrupted with.  In order to extract these properties, we needed a "silent" portion of the signal, where the additive noise is the only data contained in the signal. 

 

Initially, we assumed that the signals we were testing on would have a "silent" segment at the beginning, and conducted our testing based on this assumption.  However, following our presentation, we implemented our own algorithm to automatically detect noise-only signal segments, regardless of where they occur in the vectors.  The idea was to build upon the theme of robustness, one of the attributes that initially attracted us to the Wiener filter.  In this way, we continue to reduce the information about the original signal that the algorithm needs in order to suppress noise.  It is now sufficient only to know that there is some silent segment or group of segments somewhere in the signal, regardless of their position in the vector.  Tuning is required by the user on the part of the threshold by which noise is identified, as this threshold will vary based on the standard deviation of the noise distribution.

​

The high-level process for determining these noise-only segments is as follows:

  1. Determine a moving average of the absolute value of the noisy signal.

  2. Identify which parts of the signal are within a user-specified threshold of the minimum of the moving average

  3. Combine the parts of the signal that meet this criteria into a single vector, from which noise statistics are estimated

​

​

Screen Shot 2019-04-23 at 4.53.03 PM.png
Screen Shot 2019-04-23 at 4.57.10 PM.png

Fig 7. Automatic noise detection in the original testing signal, and another signal with silent segment not at the beginning of the signal still being detected.

Wiener Filter Parameter Variation

Another future goal which we described in our presentation and chose to investigate in our last week was the addition of scaling parameters to the standard form of the Wiener filter function.  In particular, we noted that the attenuation caused by the filter could be increased if a constant factor were added to the denominator of the simplified filter function.

​

​

​

​

​

The addition of the K parameter to the function allows us to increase the attenuation when the SNR approaches 1.  In theory, this should have the effect of attenuating the signal more when the noise is estimated to be much stronger than the original signal, thus improving the noise suppression.  The drawback of this is that it also raises the threshold at which the filter "decides" not to attenuate the signal, as the original condition of SNR>>1 now becomes SNR>>K, and K is assumed to be created than 1.  The video below illustrates the results our experimentation with this parameter.  For these tests, the standard deviation of the noise was fixed, and instead K was varied over a wide range to observe the effect that it has on the SNR-boosting capabilities of the Wiener filter.

Screen Shot 2019-04-23 at 10.03.09 PM.pn
Screen Shot 2019-04-23 at 10.03.04 PM.pn

An interesting result of this testing is that the improvement in SNR approaches an asymptote around 30dB, indicating that for this particular noise level there is a limit to how much the value of K can improve the SNR.  Given more time, it may be worthwhile to investigate other parameters that could be added to the function in order to improve performance.​

​

​

​

​

​

Applied Techniques Breakdown

Techniques From Class:

​

  • Low/High/Band Pass Filtering

    • Our project sought to implement an alternative to these "in-class" filters, in the filtering of signals corrupted by broadband additive noise.  We designed and implemented a band-pass filter with many pass bands, centered around frequency-domain peaks, as an initial investigation of the limitations of these simpler filter types when applied to broadband noise corruption.  As expected, this filter did not adequately reconstruct the original signal, and thus we moved forward with our implementation of the Wiener filter.

  • Frequency-Domain Analysis

    • In order to correctly implement the Wiener filter, the statistical characteristics of the frequency-domain representation of the corrupted signal must be analyzed.​  This requires the individual DFT's of the full signal and the noise-only segment(s) of the signal.  The frequency-domain representation of the original signal is then estimated, and converted back into the time-domain to reconstruct the noiseless signal.

​

Techniques From Outside of Class:

​

  • The Wiener filter (and statistical filters)

    • The filters that we have investigated in class have largely been ​deterministic, as the frequencies of interest were assumed to be known.  Because our project goal was to design a robust filter that could adequately suppress broadband noise with almost no prior knowledge of the signal or noise, such filters would not be applicable to our goals.  The idea of using the statistical properties of the corrupted signal to construct the filter that would produce the best estimate of the original signal was not something that we had seen before.  As such, we initially had a lot of trouble wrapping our heads around how to go about creating our filter.  At every turn, it seemed that the filter required more information than our intended applications would have available.  However, once we got into the mindset of estimating the properties of the signal vs. exactly determining them, we were able to more fully tackle this design problem.

bottom of page