|
List Info
Thread: Re: Echo Cancellation - Progress
|
|
| Re: Echo Cancellation - Progress |

|
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 )
|