I am reading this paper about speech enhancement using a minimum mean square error short time spectral amplitude estimator for our speech enhancement project. Basically in the paper they mix a clean speech with noise and try to recover the clean speech.

The paper keeps mentioning a priori SNR and a posteriori SNR. I am confused by what does it mean. A priori SNR is the SNR from before the mixing? But that can't be right. If we knew the clean speech signal from the beginning this exercise would be pointless.

This is the paper if you are wondering: Y. Ephraim and D. Malah, “Speech Enhancement Using a- Minimum Mean Square Error Short-Time Spectral Amplitude Estimator”, IEEE Transactions on Acoustics, Speech, and Signal Processing, Vol. ASSP-32, No. 6, Dec. 1984.


  • $\begingroup$ Haven't read the paper but from what I know, these are used for accuracy and performance analysis. In this case you know what the clean signal is. $\endgroup$ – ThP Dec 12 '14 at 13:22

The a priori SNR is the ratio of the power of the clean signal and of the noise power. The a posteriori SNR is the ratio of the squared magnitude of the observed noisy signal and the noise power. Both SNRs are computed for each frequency bin.

Of course, the only signal we have is the observed noisy signal. The noise power as well as the power of the clean signal must be estimated. The noise power can be estimated during absence of the desired signal, but in practice it can be difficult to detect the presence or absence of the desired signal, at least when the SNR is bad. There are so-called noise tracking algorithms that estimate the noise power without relying on detecting the presence or absence of the desired signal. They are based on the assumption that the desired signal is "more non-stationary" than the noise. The power of the desired clean signal can be estimated using a decision-directed approach, as described in Ephraim and Malah's paper. In that approach, the estimated clean amplitude, i.e. the output or 'decision' of the algorithm, and the a posteriori SNR are used to estimate the a priori SNR.

  • $\begingroup$ hey @Matt L. Does the "a" in front of priori mean anything? I noticed that you edited my question to include the "a" and am not sure what is its significance. $\endgroup$ – D.Zou Dec 13 '14 at 19:34
  • 1
    $\begingroup$ @D.Zou: Yes, it's part of it and you can't just leave it out. It's Latin, and in English it's sometimes even contracted to form apriori. $\endgroup$ – Matt L. Dec 13 '14 at 19:55

@Matt L. I'm also using this same paper by Y. Ephraim and D. Malah and the decision directed approach mentioned in the paper. But there is this formula eq no 53 which uses recursion to find priori SNR but i am having hard time implementing the code. enter image description here

Can anyone help me how to code it? If i initialize the snr using Gain as 1 for n=0, then how will i get value of Priori SNR for n=1? I've been told to use value of Priori SNR at n=0 to find Gain at n=1? But isn't it mathematically incorrect?


  • $\begingroup$ dude, do you go to concordia by any chance? $\endgroup$ – D.Zou Dec 16 '14 at 0:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.