Before using a music file with our classification analysis, we want to ensure that the signal is clean of white noise. While most music files are fairly clear, we wanted to account for live shows, music recorded from radio, and older music recordings. We chose wavelet based denoising, because it is advantageous for non-stationary signals (such as music).
The wavelet transform is similar to the windowed Fourier transform. But, instead of sines and cosines, the wavelet transform uses a range of functions. This means that the transform can provide resolution across the time and frequency space (as opposed to being completely in the frequency domain, as with the Fourier transform). When researching the wavelet transform, we found this website very insightful.
The discrete wavelet transform decomposes the original signal into a set of orthogonal wavelets. There are different families of wavelets to choose for the transform, including Haar and Daubechie wavelets (the most common type). Matlab also includes a symlet wavelet, the most symmetrical version of a Daubechie wavelet.
We used the wden function from the wavelet toolbox in Matlab. This function uses multilevel wavelet decomposition, and provides several thresholding options.
The signal is sent through a series of high pass and low pass filters, whose coefficients are determined by the wavelet chosen. The top series of filters produces the detail coefficients, while the bottom series produces approximation coefficients.
There are four different methods to determine the threshold applied to Detail Coefficients:
Universal, SureShrink, Heursure, and Minimax (defined here, under TPTR)
There are two different ways to apply the threshold:
Hard Thresholding: After removing coefficients below the threshold, do nothing
Soft Thresholding: After removing coefficients below the threshold, subtract thethreshold from the remaining values
For more information, check out this webinar from Matlab, which gives a great explanation of the decomposition and thresholding techniques.
For our analysis, we found that using the SureShrink method to compute the threshold, and applying that threshold using soft thresholding, yielded the best results.
1) Show successful denoising of a signal using wavelet denoising technique
Since our input dataset doesn't have noise, we will add simulated white noise
Test different combinations of wavelet types and thresholding techniques
2) Compare results to denoising using Moving Average (a simple filter we learned in lecture)
Moving Average takes the average of the last N samples of the sequence
y[n] = 1/N * ( x[n-1] + x[n-2] + ... + x[n - (N-1)] )
3) Compare output from our analysis algorithms before and after denoising
Add white noise to a music file, and run algorithm
Denoise the file, and run through the same algorithm, and see if results change