[Speex-dev] speex denoiser adaptation time

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Mon Feb 21 02:19:19 PST 2005

Hi Tom,

Of course the current tuning of the denoise is approximative and could
probably be improved... That being said, the modulo 100 isn't the
adaptation time itself, but rather the window over which to look for
minima. The main idea is this: if the power in a certain bin isn't too
much higher than the minimal value for a certain window, then we can
adapt the noise estimate. The algorithm name is "Minima Controlled
Recursive Average" (MCRA) and it's from Cohen.

As for the arbitrary 3 frames before resuming adaptation, it's simply a
a matter of being on the safe side. It doesn't cost much to not adapt
when we're not sure, but a mistake is costly. In general, I would say
that the VAD-based adaptation is almost useless now with the MCRA.


Le lundi 21 février 2005 à 01:11 -0800, Tom Harper a écrit :
> Hi Jean Marc & List,
> So I have been fiddling with the denoiser (again).  While poking
> around I noticed that nb_preprocess is basically a counter that
> is mod-ded with 100 (the default), which causes Smin[] to be re-
> seeded with the value in Stmp[] (min of the previous adaptation
> period).  Smin[] is then used to update the noise probability, which
> is (probably) less likely when adaptation period is shorter.
> Ok so that I can get from looking at the code- my actual question is
> why 100 runs (i.e. 2 seconds @ 8000 hz) is chosen as the adaptation
> period (mathematical reason or engineering judgement) ?  I haven't
> been able to decipher the Ephraim/Malah paper yet but i am finding in
> other literature an adaptation time of 320 ms (16 runs) or so might be
> reasonable for fast/short term adaptation-
> I noticed that you also turn off adaptation when vad finds something
> for up to consec_noise (==3, so 60 ms for me).   Was curious
> how that number was picked (i.e. perceptual, engineering judgment, etc)?
> I understand you wouldn't want to adapt the denoiser when someone is
> talking, the question is whether a small amount of residual echo
> could mess it up (i.e. maybe 3 is too small?)
> Thanks-
> Tom
Jean-Marc Valin <Jean-Marc.Valin at USherbrooke.ca>
Université de Sherbrooke

More information about the Speex-dev mailing list