List Info

Thread: Re: Echo Cancellation - Progress




Re: Echo Cancellation - Progress
user name
2007-02-28 09:14:18
Steve Kann wrote:
>;
> David Brazier wrote:
>; > The compile of iaxclient using Speex 1.2beta1 only fails at 2 points
> > in audio_encode.c, where it references st->speech_prob and
> > st->loudness2.  The SpeexPreprocessState struct is now opaque, and as
> > it happens, both of these members have been removed anyway.  The AGC
> > level, which I think is what loudness2 used to be, is available via:
> >
> > speex_preprocess_ctl(st, SPEEX_PREPROCESS_GET_AGC_LEVEL, &agc_level)
> >
> > There is a new member was_speech which might be used in place of
> > speech_prob, but there is no SPEEX_PREPROCESS_GET_ for that, so I've
> > tried just commenting that out.
> >
> Those references are used by the AAGC (analog auto-gain control)
> mechanism in iaxclient, which basically works by adjusting the input
> gain at the soundcard mixer to normalize input levels whenever speex
> detects speech.
>
> Ideally, I think, this mechanism should get added to speex itself, so
> that speex can anticipate the adjustments that are being made.
>
> It is very useful to have this analog method, in addition to the
> multiplicative (digital) method used inside speex, because the
> multiplicative method results in quality losses when the input gain is
> too low, and doesn't help much at all if the input gain is too high and
> there is clipping.

I don't think the old use of speech_prob is required now anyway, and
perhaps never was, as the return value from speex_preprocess
(now speex_preprocess_run) indicates if there was speech.  So AAGC
should still work.

David

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )