athena-team / athena-signal

Apache License 2.0
516 stars 194 forks source link

some question about mmse gain #11

Closed yemifeng closed 4 years ago

yemifeng commented 4 years ago

Thanks for sharing the noise reduction code. There exists some questions that make me confusing in the noise reduction module(in the file dios_ssp_ns_api.c).

In the following code from the dios_ssp_ns_api.c (computing mmse gain), can you tell me the meaning of the variable "pSAP" or where can I find it in any research paper?

Thanks very much!

for (i = 0; i < srv->m_sp_size; ++i ) { vk = srv->m_sp_snr[i]srv->m_gammak[i]/(1+srv->m_sp_snr[i]); j00 = first_modified_Bessel( 0, vk/2 ); j11 = first_modified_Bessel( 1, vk/2 ); tmpC = (float)exp( -0.5vk ); if (srv->m_gammak[i] < 1.0e-3) { tmpA = 0; // Limitation }
else { tmpA = (float)sqrt(PI) / 2 (float)pow( vk, 0.5 ) tmpC / srv->m_gammak[i] ; } tmpB = (1+vk)j00+vkj11; evk = (float)exp( vk ); Lambda = (1-0.3f) / 0.3f * evk / ( 1+srv->m_sp_snr[i] ); pSAP = Lambda/(Lambda+1 );

    tmp = tmpA*tmpB*pSAP;
    srv->m_gain[i] = tmp;
}
songhui5561 commented 4 years ago

It is a conversion coefficient to calculate MMSE gain using a prior SNR and posterior SNR. You can find it in this paper: Speech enhancement using a minimum mean-square error short-time spectral amplitude estimator.

yemifeng commented 4 years ago

Thank you for your reply