MMSE based noise PSD tracking algorithm  

Matlab implementation of the noise PSD tracking algorithm described in "MMSE BASED NOISE PSD TRACKING WITH LOW COMPLEXITY", by Richard C. Hendriks, Richard Heusdens and Jesper Jensen, IEEE International Conference on Acoustics, Speech and Signal Processing, 03/2010, Dallas, TX, p.4266-4269, (2010)

The algorithm can be run by starting the m-file "noise_psd_tracker" with the command
[shat, noise_psd_matrix,T]=noise_psd_tracker(noisy,fs), where noisy is the noisy time-domain waveform and fs the sample frequency. The ouput, noise_psd_mat is a matrix where the columns contain the estimated noise PSDs per time-frame. shat containds the estimated clean signal, and T the computation time.
For more details on the algorithm, see the above referenced paper (included in the zip-file)

Update details:
23/1/2012 V2: uploaded a computationally faster version where special functions are tabulated. In addition the script also computes the estimated clean speech time-domain waveform by means of a super-Gaussian based estimator from

[1] J.S. Erkelens, R.C. Hendriks, R. Heusdens, and J. Jensen,
"Minimum mean-square error estimation of discrete Fourier coefficients with generalized gamma priors",
IEEE Trans. on Audio, Speech and Language Proc., vol. 15, no. 6, pp. 1741 - 1752, August 2007.

[2] J.S. Erkelens, R.C. Hendriks and R. Heusdens
"On the Estimation of Complex Speech DFT Coefficients without Assuming Independent Real and Imaginary Parts",
IEEE Signal Processing Letters, 2008.

[3] R.C. Hendriks, J.S. Erkelens and R. Heusdens
"Comparison of complex-DFT estimators with and without the independence assumption of real and imaginary parts",
ICASSP, 2008.

noise_tracker_V2.zip333.76 KB