Hi, I've been trying to understand the documentation on the Speex echo canceller, and unless I'm confused, I think there's a mistake somewhere. The documentation on http://speex.org/docs/manual/speex-manual/node7.html#SECTION00740000000000000000 says, " The recommended tail length is approximately the third of the room reverberation time". However, the Octave script echo_diagnostic.m has the code: if (b > .3*tail_length) printf ('This is too much delay, try delaying the far-end signal a bit\n'); This seems to mandate that the tail length should be at least 3 (or 3.33...) times the delay, which conflicts with what the manual says. Is this a mistake, or is my understanding incorrect (I'm assuming that far-end delay and room reverberation time are the same thing). I'd really appreciate if someone could clear this up, as I've not had much luck getting the echo canceller to work. Thanks in advance, Dave
David Baker a ?crit :> Hi, > > I've been trying to understand the documentation on the Speex echo > canceller, and unless I'm confused, I think there's a mistake > somewhere. The documentation on http://speex.org/docs/manual/speex-manual/node7.html#SECTION00740000000000000000 > says, " The recommended tail length is approximately the third of > the room reverberation time". However, the Octave script > echo_diagnostic.m has the code: > > if (b > .3*tail_length) > printf ('This is too much delay, try delaying the far-end > signal a bit\n'); > > This seems to mandate that the tail length should be at least 3 (or > 3.33...) times the delay, which conflicts with what the manual says.There's no conflict. The b above has nothing to do with the reverberation time. It's the buffering delay of the audio playback/capture and if it's more than 30% of the tail length, it means you're wasting that much of your tail. If it's larger than the tail length, then it means that no cancellation is possible at all. Cheers, Jean-Marc> Is this a mistake, or is my understanding incorrect (I'm assuming that > far-end delay and room reverberation time are the same thing). I'd > really appreciate if someone could clear this up, as I've not had much > luck getting the echo canceller to work. > > Thanks in advance, > > > Dave > _______________________________________________ > Speex-dev mailing list > Speex-dev at xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev > >
On 20 Apr 2009, at 12:27, Jean-Marc Valin wrote:> > > David Baker a ?crit : >> Hi, >> >> I've been trying to understand the documentation on the Speex echo >> canceller, and unless I'm confused, I think there's a mistake >> somewhere. The documentation on http://speex.org/docs/manual/speex-manual/node7.html#SECTION00740000000000000000 >> says, " The recommended tail length is approximately the third of >> the room reverberation time". However, the Octave script >> echo_diagnostic.m has the code: >> >> if (b > .3*tail_length) >> printf ('This is too much delay, try delaying the far-end >> signal a bit\n'); >> >> This seems to mandate that the tail length should be at least 3 (or >> 3.33...) times the delay, which conflicts with what the manual says. > > There's no conflict. The b above has nothing to do with the > reverberation time. It's the buffering delay of the audio > playback/capture and if it's more than 30% of the tail length, it > means > you're wasting that much of your tail. If it's larger than the tail > length, then it means that no cancellation is possible at all. > > Cheers, > > Jean-Marc > >> Is this a mistake, or is my understanding incorrect (I'm assuming >> that >> far-end delay and room reverberation time are the same thing). I'd >> really appreciate if someone could clear this up, as I've not had >> much >> luck getting the echo canceller to work. >> >> Thanks in advance, >> >> >> Dave >> >Ah, that makes sense. Many thanks for the prompt response! Dave