I don't think the echo canceller works yet. The best I could get it to do is trash my audio. If it does work, some sample code demonstrating its use would be really appreciated... Here is what Jean-Marc has said about it in the past:> What should I use for a filter length for speex_echo_state_init()?"Well, it depends on your problem. The filter length represents the maximum delay of the echo. For acoustic echo, that value is generally higher than for line echo. You'll need to experiment, but a value around 500 (for 8 kHz) might be a good start."> [question about params for echo canceller function]"Actually, ref is the incoming frame (with echo), echo is the outgoing frame (that has only the echo) and out is the echo-cancelled frame. As for Yout, it is an estimation of the residual echo that can be sent to the denoiser so that residual echo can be removed as well. Note that this last feature is still experimental." <p>Tom Harper (harper@archila.com) wrote:> > Hi, > > So I have had a chance to delve deeper into the new pre-processing > code- I was also able to get VAD, AGC, Denoising, etc working inside of the > current release candidate (1.0.3). For some reason, the 1.1.2 > release didn't properly encode/decode in our system (on windows) > and I haven't had time to determine why. In any case, all of the features > jointly work very well- great job! > > I realize the echo cancellation element may still be in development, but I am > having trouble getting that part of the preprocessor to work. When > I don't pass NULL into the speex_preprocess for the echo parameter, things > seem to go haywire- some memory appears to be getting trampled somewhere > (this is probably my fault). Maybe I am misunderstanding the purpose of this > parameter? Except for the first few packets, the preprocessor > appears to be removing all audio- The algorithm I am using passes in a recently > decoded frame... Any ideas? Do I need to set some settings in somewhere > in order for this to work properly? > > Thanks, > Tom--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
Hi, Thanks, that gave me some ideas. I have tried calling speex_echo_cancel and speex_preprocess separately and jointly, with a number of different filter lengths, and using the cancelled and non-cancelled data as input to the pre-filter, with and without the residual echo, etc. but there doesn't appear to be valid data in the echo or the cancelled frame any way I try it. Back to the drawing board (and eagerly awaiting the next release), Tom At 05:28 AM 11/26/2003, Tom Grandgent wrote:>I don't think the echo canceller works yet. The best I could >get it to do is trash my audio. If it does work, some sample >code demonstrating its use would be really appreciated... > >Here is what Jean-Marc has said about it in the past: > > > What should I use for a filter length for speex_echo_state_init()? > >"Well, it depends on your problem. The filter length represents the >maximum delay of the echo. For acoustic echo, that value is generally >higher than for line echo. You'll need to experiment, but a value around >500 (for 8 kHz) might be a good start." > > > [question about params for echo canceller function] > >"Actually, ref is the incoming frame (with echo), echo is the outgoing >frame (that has only the echo) and out is the echo-cancelled frame. As >for Yout, it is an estimation of the residual echo that can be sent to >the denoiser so that residual echo can be removed as well. Note that >this last feature is still experimental." > > >Tom Harper (harper@archila.com) wrote: > > > > Hi, > > > > So I have had a chance to delve deeper into the new pre-processing > > code- I was also able to get VAD, AGC, Denoising, etc working inside > of the > > current release candidate (1.0.3). For some reason, the 1.1.2 > > release didn't properly encode/decode in our system (on windows) > > and I haven't had time to determine why. In any case, all of the features > > jointly work very well- great job! > > > > I realize the echo cancellation element may still be in development, > but I am > > having trouble getting that part of the preprocessor to work. When > > I don't pass NULL into the speex_preprocess for the echo parameter, things > > seem to go haywire- some memory appears to be getting trampled somewhere > > (this is probably my fault). Maybe I am misunderstanding the purpose > of this > > parameter? Except for the first few packets, the preprocessor > > appears to be removing all audio- The algorithm I am using passes in a > recently > > decoded frame... Any ideas? Do I need to set some settings in somewhere > > in order for this to work properly? > > > > Thanks, > > Tom > >--- >8 ---- >List archives: http://www.xiph.org/archives/ >Ogg project homepage: http://www.xiph.org/ogg/ >To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' >containing only the word 'unsubscribe' in the body. No subject is needed. >Unsubscribe messages sent to the list will be ignored/filtered.<p>--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
Tom, You can look in my archives for my posts on this topic, but what I've found is that the echo canceller works to some extent, but if you're also using the other preprocessing (which you'd definitely need to do _after_ ec, otherwise ec probably won't work at all), the AGC function ends up reversing the effect of ec. That is, while ec reduces the echo, it doesn't completely eliminate it, and then AGC goes and raises the level of the residual echo. So, try ec alone, without AGC, and you should be able to see some effect. -SteveK <p>Tom Harper wrote:> Hi, > > Thanks, that gave me some ideas. I have tried calling speex_echo_cancel > and speex_preprocess separately and jointly, with a number of > different filter lengths, > and using the cancelled and non-cancelled data as input to the > pre-filter, with > and without the residual echo, etc. but there doesn't appear to be > valid data in the > echo or the cancelled frame any way I try it. > > Back to the drawing board (and eagerly awaiting the next release), > > Tom > > At 05:28 AM 11/26/2003, Tom Grandgent wrote: > >> I don't think the echo canceller works yet. The best I could >> get it to do is trash my audio. If it does work, some sample >> code demonstrating its use would be really appreciated... >> >> Here is what Jean-Marc has said about it in the past: >> >> > What should I use for a filter length for speex_echo_state_init()? >> >> "Well, it depends on your problem. The filter length represents the >> maximum delay of the echo. For acoustic echo, that value is generally >> higher than for line echo. You'll need to experiment, but a value around >> 500 (for 8 kHz) might be a good start." >> >> > [question about params for echo canceller function] >> >> "Actually, ref is the incoming frame (with echo), echo is the outgoing >> frame (that has only the echo) and out is the echo-cancelled frame. As >> for Yout, it is an estimation of the residual echo that can be sent to >> the denoiser so that residual echo can be removed as well. Note that >> this last feature is still experimental." >> >> >> Tom Harper (harper@archila.com) wrote: >> > >> > Hi, >> > >> > So I have had a chance to delve deeper into the new pre-processing >> > code- I was also able to get VAD, AGC, Denoising, etc working >> inside of the >> > current release candidate (1.0.3). For some reason, the 1.1.2 >> > release didn't properly encode/decode in our system (on windows) >> > and I haven't had time to determine why. In any case, all of the >> features >> > jointly work very well- great job! >> > >> > I realize the echo cancellation element may still be in >> development, but I am >> > having trouble getting that part of the preprocessor to work. When >> > I don't pass NULL into the speex_preprocess for the echo parameter, >> things >> > seem to go haywire- some memory appears to be getting trampled >> somewhere >> > (this is probably my fault). Maybe I am misunderstanding the >> purpose of this >> > parameter? Except for the first few packets, the preprocessor >> > appears to be removing all audio- The algorithm I am using passes >> in a recently >> > decoded frame... Any ideas? Do I need to set some settings in >> somewhere >> > in order for this to work properly? >> > >> > Thanks, >> > Tom >> >> --- >8 ---- >> List archives: http://www.xiph.org/archives/ >> Ogg project homepage: http://www.xiph.org/ogg/ >> To unsubscribe from this list, send a message to >> 'speex-dev-request@xiph.org' >> containing only the word 'unsubscribe' in the body. No subject is >> needed. >> Unsubscribe messages sent to the list will be ignored/filtered. > > > > --- >8 ---- > List archives: http://www.xiph.org/archives/ > Ogg project homepage: http://www.xiph.org/ogg/ > To unsubscribe from this list, send a message to > 'speex-dev-request@xiph.org' > containing only the word 'unsubscribe' in the body. No subject is > needed. > Unsubscribe messages sent to the list will be ignored/filtered. >--- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'speex-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.