BE2M31DSP seminar
Frequency-domain suppression of stationary additive noise in a stationary signal
- Creation of noisy signals
- Load the set of sinusoids from the file sink.mat saved in particular lines of a matrix. It is the file in binary MATLAB format, to load it into MATLAB use the function load (Use exactly the command "load sins.mat"). Sampling frequency of these signals is 16000 Hz.
- Create clean stationary signal as the sum of the first three sinusoidal components in the matrix sink.
- Load the stationary noise from the file
nc2.bin (stacionary HF noise,
binary PCM, to load it into MATLAB use the function loadbin.m) and change its power by its scaling using the multiplicative constant "K=0.3" (or 0.001 for the purpose of tuning the code, or use also other values for the modeling of various levels of noise background).
- Add clean signal and scaled noise and compute SNR of this noisy signal.
- Result> Observe
- waveform of clean and noisy signal with stationary background noise,
- SNR of noisy signal.
- Noise suppression using Wiener filtering
- Estimate smoothed power spectral densities of clean signal and additive noise. Use available information about both particular components.
- Realize Wiener filtering in frequency domain - signal should be processed again in short-time frames of the length 512 samples and OLA technique with Hamming window and 50% overlap. Add this approach to the previously created structure for spectral subtraction.
- Determine again SNR of output signal and SNR enhancemend when WF is used.
- Result: Observe
- waveform of output signal with suppressed noise using WF,
- spectrograms of input and output signals,
- impovement of SNR using WF for noise cancellation.
- DCT-based noise cancellation
- Compute DCT and smoothed power spectra based on DCT of clean signal and additive noise. Use again available information about both particular components as above for WF.
- Realize noise suppression based on DCT using the weighting on the basis of apriory SNR - - signal should be processed again in short-time frames of the length 512 samples and OLA technique with Hamming window and 50% overlap. Add this approach to the previously created structure containing already solution with spectral subtraction and WF.
- Determine again SNR of output signal and SNR enhancemend when DCT-based noise suppression is used.
- Result: Observe
- waveform of output signal with suppressed noise using DCT-based noise suppression,
- spectrograms of input and output signals,
- impovement of SNR using DCT-based noise suppression.
- Noise suppression using magnitude spectral subtraction and OLA technique with general window
- Estimate noise magnitude spectrum using available apriory information about the additive noise.
- Realize spectral subtraction with half-wave rectification (possibly also using full-wave rectification).
- Proscessing should be done in particular short-time frames of the length 512 samples and OLA technique with Hamming window with 50% overlap. You can use the following prepared structure for OLA technique ola_general_empty.m.
- Compute SNR of output signal (use the clean input signal as a reference for the computation of residual noise at the output) and observe the enhancement (impovement) of SNR in comparison to input noisy signal.
- Result: Observe
- waveform of output signal with suppressed noise using spectral subtraction,
- spectrograms of input and output signals,
- impovement of SNR using the spectral subtraction for noise cancellation.
- Experiments with further signals
- Try above desribe techniques also for other signals, e.g. for
- clean signal containing the sum of all available sinusoids in matrix sink,
- real signal vm0.bin (binary raw format, to load into MATLAB use the function loadbin.m),
- further variants of noises in files nc1.bin (stationary LF noise), nc3.bin (stationary band noise),nc4.bin (stationary band noise).