**Rainer Martin**introduced a method to estimate noise power by using the smoothed short-time noisy power spectrum and the SNR estimator.

Martin explained not very well his noise power estimation method (section 2.3 of his article) in my opinion. There is a master diploma work "Kalman filtering and speech enhancement" by

**Jan Kybic**which explained it better. A function called "

**specsubm**" in Matlab toolbox "

**Voicebox**" implemented this method.

When I was implementing Martin's algorithm, three oversubtraction factor calculation methods made me confused. So I explain here their differences.

**1. Berouti's method**

In Berouti's article "ENHANCEMENT OF SPEECH CORRUPTED ACOUSTIC NOISE", a simple formula of calculating the oversubtraction factor has been given:

oversubtraction factor given by Berouti |

**2. Jan Kybic's method**

Kybic gave a formula in his diploma work to calculate the oversubtraction factor $\delta$:

oversubtraction factor given by Jan Kybic |

**3. Voicebox's specsubm**

To calculate oversubtraction factor, this Matlab function generates firstly a curve $osf(k)$ for frequency weighting:

frequency weighting curve |

**4. Comparison**

By listening the subtracted speech results, I found the Berouti's oversubtraction factor is more drastic than the Voicebox one. Using the same parameters, the first one eliminates more noise but also suppress more low energy speech than the second one.

click to enlarge |

**5. Matlab Code**

https://github.com/ronggong/voiceenhance

## No comments:

## Post a Comment