[Speex-dev] Notch Filter in AEC

Steve Underwood steveu at coppice.org
Wed Mar 3 18:05:44 PST 2010

On 03/03/2010 10:22 PM, QianBin wrote:
> Hi,
>     But in fact, it really affects the voice quality. One of my tester says, "Is your mouth far way from the mic?"
>     Could you explain why we should cut 200hz below?
We already said it affects the quality when the voice is compressed. Are
you asking why that should be?

Even with a simple form of lightly lossy compression like alaw/ulaw, a
big low frequency waveform can push the coder into using coarse steps,
so the more interesting energy in the middle of the voice band is coded
with those coarse steps - i.e. poorly.

Low bit rate codecs, like G.729 or speex, usually apply their own fast
rolloff filter for low frequencies - e.g. G.729 rolls off its input
hard, with a turnover at 140Hz - their whole coding methodology tends to
break down without that.

The telephone network normally rolls off hard below about 300Hz, so this
actually perfectly normal voice for a phone call.

A second reason to remove the bass frequencies is if you don't you can
get nasty echoes if the audio is sent to the PSTN. Analogue PSTN
interfaces don't always remove the bass frequencies, and digital
interfaces (BRI/E1/T1) never do. If you sent those frequency through an
analogue segment of the network, the hybrids can do horrible non-linear
things that the echo cancellers cannot handle. To protect their own
stability, echo cancellers may insert their own bass filter when then
switch on, but its poor practice to rely on that. Its better not to
throw the bass frequencies at them.

>> The notch filter is specifically designed to cut below 200 Hz when 
>> working in narrowband. In wideband, the cutoff is more around 50 Hz. The 
>> reason is that in narrowband operation (irrespective of the codec), 
>> you're not really supposed to have anything below ~200 Hz, but a lot of 
>> people forget that.
>> 	Jean-Marc
>> On 2010-03-03 02:40, brant wrote:
>>> Hi,
>>>     The notch filter in AEC is only used to remove DC signal, and the time of convergence is not important, right?
>>> If so, I think preset value of notch_radius is too small, and it causes noticeable distortion(freq<  200hz cut).
>>> There is a picture in attachment to show signals under different radius in time-domain.
>>>    By setting notch_radius to 0.999 for all sampling rates, I found better voice effect(distortion), while AEC still
>>> working fine.

More information about the Speex-dev mailing list