Bart Cerneels
2011-May-25 12:49 UTC
[Speex-dev] pre-processor's residual echo suppression and AEC order
Hi, Arun and me are working on a echo-canceler module for pulseaudio build around speex. When using the preprocessor's echo filter, specifically in combination with denoise and AGC, it's unclear whether these have to run before or after the AEC. Right now we've got one instance of speex_preprocessor doing AGC and denoise running before the echo canceler; and a second for echo suppression after the echo canceler. This seems to have effect, but we have not tested the total quality of this configuration yet. In the code however preprocessor.c compute_gain_floor() both noise and echo variables, suggesting these belong together in the same instance. So is speex_preprocess_run always supposed to be run *after* speex_echo_cancellation, does it perhaps depend on which filter function is enabled? Thanks Bart
Andras Kadinger
2011-May-25 15:05 UTC
[Speex-dev] pre-processor's residual echo suppression and AEC order
The echo canceller (AEC) should be run first on the recorded signal. Only do denoise and AGC and others after AEC - otherwise whatever you did (e.g. denoise, AGC, etc.) will only confuse the AEC. Look under http://ns.surfnonstop.com/~bandit/speex/echocard1/ example 6 to have an idea about what quality to expect. 2011.05.25. 14:49 keltez?ssel, Bart Cerneels ?rta:> Hi, > > Arun and me are working on a echo-canceler module for pulseaudio build around > speex. When using the preprocessor's echo filter, specifically in combination > with denoise and AGC, it's unclear whether these have to run before or after > the AEC. > > Right now we've got one instance of speex_preprocessor doing AGC and denoise > running before the echo canceler; and a second for echo suppression after the > echo canceler. This seems to have effect, but we have not tested the total > quality of this configuration yet. > > In the code however preprocessor.c compute_gain_floor() both noise and echo > variables, suggesting these belong together in the same instance. > > So is speex_preprocess_run always supposed to be run *after* > speex_echo_cancellation, does it perhaps depend on which filter function is > enabled? > > Thanks > Bart > _______________________________________________ > Speex-dev mailing list > Speex-dev at xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev