I usually use the cross-correlation between the speaker signal and the mic signal. It works pretty well. The problem is the you need enough data in order to get a good S/N. I compute the cross-correlation between 1.5 second data of each signals. In this way the application detection of any anomalies is quite slow. I am looking for something faster, but I fear it will be something very application dependent. Marco 2010/5/11 Elston Sa <jose at rebaca.com>:> Marco, > > Thank you for your response. > > Is there a way I can determine if the synchronization is perfect or not? If > not by how much it is off. > > - Elston > > -----Original Message----- > From: Marco Pierleoni [mailto:pierleoni.m at gmail.com] > Sent: Monday, May 10, 2010 3:46 PM > To: Elston Sa > Subject: Re: [Speex-dev] AEC - Echo is cancelled however..... > > Hi Helton, > > it is now several months that I am using the AEC speex. I experienced > very good performance and I agree that the synchronization is the most > important issue here. As a matter of fact I believe that your problem > could derive from a not perfect synchronization. > It seems that that filter, used in the AEC, is always adapting. When > you have not a perfect synchronization, the adapting filter allows to > cancel most of your echo, while the participant is talking. Once he > stops to talk, the filter cannot adapt in the right way until he > begins to talk again. > I think that this is the cause of the small return of echo. > > I don't know the details of your application, but in my case I wanted > to play audio packets incoming from the network, and I had similar > problems until I put a jitterBuffer between the network and the audio > device. This solution allows me to have a better scheduling of the > packets sent to the audio device improving the synchronization. > You should also consider that the sound card have an own internal > buffer which can introduce some anomalies in the audio playing, like a > small pause or an audio cut. Most of these anomalies are very > difficult to be heard but they are important for the synchronization > > I hope that this could help. > > Marco > > > > 2010/5/10 Elston Sa <jose at rebaca.com>: >> Yes. I guessed that too, however I am not sure why it keeps repeating > every >> time the user stops / pauses and starts speaking again in a single > session. >> >> I am using a laptop with standalone speakers. For echo cancellation to > work >> one has to make sure that the ref and echo buffers are synchronized. I > guess >> this is the most common problem. >> >> -Elston >> >> -----Original Message----- >> From: Anton A. Shpakovsky [mailto:saa at tomsksoft.com] >> Sent: Monday, May 10, 2010 2:43 PM >> To: Elston Sa; speex-dev at xiph.org >> Subject: RE: [Speex-dev] AEC - Echo is cancelled however..... >> >> Well, AFAIK AEC engine needs time to adapt. So probably that's why at >> the beginning of the conversation >> you hear the consequences of this adaptation. Btw, what sound system do >> you have? I mean laptop or arbitrary >> acoustic system? I'd like to know, cause I couldn't get enough echo >> cancellation with speex in my environment with >> standalone speakers AT ALL. >> >> >> -----Original Message----- >> From: speex-dev-bounces at xiph.org [mailto:speex-dev-bounces at xiph.org] On >> Behalf Of Elston Sa >> Sent: Monday, May 10, 2010 3:41 PM >> To: speex-dev at xiph.org >> Subject: [Speex-dev] AEC - Echo is cancelled however..... >> >> 1) Everytime a participant speaks there is a echo for a short duration >> (maybe a word or two) but as the participant continues to speak without >> a >> any break the echo is 95% cancelled (i.e there is a feeble echo still >> present if observed very carefully). >> 2) The moment the participant stops / pauses speaking and start talking >> again, scenario 1 is repeated as if the echo state has been >> re-initialized >> or reset. >> >> Please note that I observe this in a single audio session and not after >> restarting the application. I confirm that I am not re-initializing the >> echo >> state after the session starts. >> >> Is this normal? Is there any way I can keep the echo state to what it >> was >> when the participant not speaking. >> >> Also, any pointers on why I get a feeble echo back would be greatly >> appreciated. >> >> Thanks, >> >> Elston >> >> _______________________________________________ >> Speex-dev mailing list >> Speex-dev at xiph.org >> http://lists.xiph.org/mailman/listinfo/speex-dev >> >> _______________________________________________ >> Speex-dev mailing list >> Speex-dev at xiph.org >> http://lists.xiph.org/mailman/listinfo/speex-dev >> > >
Is there an API in speex or have you implemented your own? I am currently trying to find one. But if you could point me to one it will reduce my search time. :) Many Thanks, Elston -----Original Message----- From: Marco Pierleoni [mailto:pierleoni.m at gmail.com] Sent: Tuesday, May 11, 2010 5:55 PM To: Elston Sa Cc: speex-dev at xiph.org Subject: Re: [Speex-dev] AEC - Echo is cancelled however..... I usually use the cross-correlation between the speaker signal and the mic signal. It works pretty well. The problem is the you need enough data in order to get a good S/N. I compute the cross-correlation between 1.5 second data of each signals. In this way the application detection of any anomalies is quite slow. I am looking for something faster, but I fear it will be something very application dependent. Marco 2010/5/11 Elston Sa <jose at rebaca.com>:> Marco, > > Thank you for your response. > > Is there a way I can determine if the synchronization is perfect or not?If> not by how much it is off. > > - Elston > > -----Original Message----- > From: Marco Pierleoni [mailto:pierleoni.m at gmail.com] > Sent: Monday, May 10, 2010 3:46 PM > To: Elston Sa > Subject: Re: [Speex-dev] AEC - Echo is cancelled however..... > > Hi Helton, > > it is now several months that I am using the AEC speex. I experienced > very good performance and I agree that the synchronization is the most > important issue here. As a matter of fact I believe that your problem > could derive from a not perfect synchronization. > It seems that that filter, used in the AEC, is always adapting. When > you have not a perfect synchronization, the adapting filter allows to > cancel most of your echo, while the participant is talking. Once he > stops to talk, the filter cannot adapt in the right way until he > begins to talk again. > I think that this is the cause of the small return of echo. > > I don't know the details of your application, but in my case I wanted > to play audio packets incoming from the network, and I had similar > problems until I put a jitterBuffer between the network and the audio > device. This solution allows me to have a better scheduling of the > packets sent to the audio device improving the synchronization. > You should also consider that the sound card have an own internal > buffer which can introduce some anomalies in the audio playing, like a > small pause or an audio cut. Most of these anomalies are very > difficult to be heard but they are important for the synchronization > > I hope that this could help. > > Marco > > > > 2010/5/10 Elston Sa <jose at rebaca.com>: >> Yes. I guessed that too, however I am not sure why it keeps repeating > every >> time the user stops / pauses and starts speaking again in a single > session. >> >> I am using a laptop with standalone speakers. For echo cancellation to > work >> one has to make sure that the ref and echo buffers are synchronized. I > guess >> this is the most common problem. >> >> -Elston >> >> -----Original Message----- >> From: Anton A. Shpakovsky [mailto:saa at tomsksoft.com] >> Sent: Monday, May 10, 2010 2:43 PM >> To: Elston Sa; speex-dev at xiph.org >> Subject: RE: [Speex-dev] AEC - Echo is cancelled however..... >> >> Well, AFAIK AEC engine needs time to adapt. So probably that's why at >> the beginning of the conversation >> you hear the consequences of this adaptation. Btw, what sound system do >> you have? I mean laptop or arbitrary >> acoustic system? I'd like to know, cause I couldn't get enough echo >> cancellation with speex in my environment with >> standalone speakers AT ALL. >> >> >> -----Original Message----- >> From: speex-dev-bounces at xiph.org [mailto:speex-dev-bounces at xiph.org] On >> Behalf Of Elston Sa >> Sent: Monday, May 10, 2010 3:41 PM >> To: speex-dev at xiph.org >> Subject: [Speex-dev] AEC - Echo is cancelled however..... >> >> 1) Everytime a participant speaks there is a echo for a short duration >> (maybe a word or two) but as the participant continues to speak without >> a >> any break the echo is 95% cancelled (i.e there is a feeble echo still >> present if observed very carefully). >> 2) The moment the participant stops / pauses speaking and start talking >> again, scenario 1 is repeated as if the echo state has been >> re-initialized >> or reset. >> >> Please note that I observe this in a single audio session and not after >> restarting the application. I confirm that I am not re-initializing the >> echo >> state after the session starts. >> >> Is this normal? Is there any way I can keep the echo state to what it >> was >> when the participant not speaking. >> >> Also, any pointers on why I get a feeble echo back would be greatly >> appreciated. >> >> Thanks, >> >> Elston >> >> _______________________________________________ >> Speex-dev mailing list >> Speex-dev at xiph.org >> http://lists.xiph.org/mailman/listinfo/speex-dev >> >> _______________________________________________ >> Speex-dev mailing list >> Speex-dev at xiph.org >> http://lists.xiph.org/mailman/listinfo/speex-dev >> > >
2010/5/11 Elston Sa <jose at rebaca.com>:> Is there an API in speex or have you implemented your own?I don't know if there is an API in speex for this, probably not. There is a test for AEC which does something very similar. I implemented it starting from a FFT library. It is quite easy to do.> > I am currently trying to find one. But if you could point me to one it will > reduce my search time. :) > > Many Thanks, > > Elston > > -----Original Message----- > From: Marco Pierleoni [mailto:pierleoni.m at gmail.com] > Sent: Tuesday, May 11, 2010 5:55 PM > To: Elston Sa > Cc: speex-dev at xiph.org > Subject: Re: [Speex-dev] AEC - Echo is cancelled however..... > > I usually use the cross-correlation between the speaker signal and the > mic signal. > It works pretty well. The problem is the you need enough data in order > to get a good S/N. > I compute the cross-correlation between 1.5 second data of each > signals. In this way the application detection of any anomalies is > quite slow. > I am looking for something faster, but I fear it will be something > very application dependent. > > Marco > > 2010/5/11 Elston Sa <jose at rebaca.com>: >> Marco, >> >> Thank you for your response. >> >> Is there a way I can determine if the synchronization is perfect or not? > If >> not by how much it is off. >> >> - Elston >> >> -----Original Message----- >> From: Marco Pierleoni [mailto:pierleoni.m at gmail.com] >> Sent: Monday, May 10, 2010 3:46 PM >> To: Elston Sa >> Subject: Re: [Speex-dev] AEC - Echo is cancelled however..... >> >> Hi Helton, >> >> it is now several months that I am using the AEC speex. I experienced >> very good performance and I agree that the synchronization is the most >> important issue here. As a matter of fact I believe that your problem >> could derive from a not perfect synchronization. >> It seems that that filter, used in the AEC, is always adapting. When >> you have not a perfect synchronization, the adapting filter allows to >> cancel most of your echo, while the participant is talking. Once he >> stops to talk, the filter cannot adapt in the right way until he >> begins to talk again. >> I think that this is the cause of the small return of echo. >> >> I don't know the details of your application, but in my case I wanted >> to play audio packets incoming from the network, and I had similar >> problems until I put a jitterBuffer between the network and the audio >> device. This solution allows me to have a better scheduling of the >> packets sent to the audio device improving the synchronization. >> You should also consider that the sound card have an own internal >> buffer which can introduce some anomalies in the audio playing, like a >> small pause or an audio cut. Most of these anomalies are very >> difficult to be heard but they are important for the synchronization >> >> I hope that this could help. >> >> Marco >> >> >> >> 2010/5/10 Elston Sa <jose at rebaca.com>: >>> Yes. I guessed that too, however I am not sure why it keeps repeating >> every >>> time the user stops / pauses and starts speaking again in a single >> session. >>> >>> I am using a laptop with standalone speakers. For echo cancellation to >> work >>> one has to make sure that the ref and echo buffers are synchronized. I >> guess >>> this is the most common problem. >>> >>> -Elston >>> >>> -----Original Message----- >>> From: Anton A. Shpakovsky [mailto:saa at tomsksoft.com] >>> Sent: Monday, May 10, 2010 2:43 PM >>> To: Elston Sa; speex-dev at xiph.org >>> Subject: RE: [Speex-dev] AEC - Echo is cancelled however..... >>> >>> Well, AFAIK AEC engine needs time to adapt. So probably that's why at >>> the beginning of the conversation >>> you hear the consequences of this adaptation. Btw, what sound system do >>> you have? I mean laptop or arbitrary >>> acoustic system? I'd like to know, cause I couldn't get enough echo >>> cancellation with speex in my environment with >>> standalone speakers AT ALL. >>> >>> >>> -----Original Message----- >>> From: speex-dev-bounces at xiph.org [mailto:speex-dev-bounces at xiph.org] On >>> Behalf Of Elston Sa >>> Sent: Monday, May 10, 2010 3:41 PM >>> To: speex-dev at xiph.org >>> Subject: [Speex-dev] AEC - Echo is cancelled however..... >>> >>> 1) Everytime a participant speaks there is a echo for a short duration >>> (maybe a word or two) but as the participant continues to speak without >>> a >>> any break the echo is 95% cancelled (i.e there is a feeble echo still >>> present if observed very carefully). >>> 2) The moment the participant stops / pauses speaking and start talking >>> again, scenario 1 is repeated as if the echo state has been >>> re-initialized >>> or reset. >>> >>> Please note that I observe this in a single audio session and not after >>> restarting the application. I confirm that I am not re-initializing the >>> echo >>> state after the session starts. >>> >>> Is this normal? Is there any way I can keep the echo state to what it >>> was >>> when the participant not speaking. >>> >>> Also, any pointers on why I get a feeble echo back would be greatly >>> appreciated. >>> >>> Thanks, >>> >>> Elston >>> >>> _______________________________________________ >>> Speex-dev mailing list >>> Speex-dev at xiph.org >>> http://lists.xiph.org/mailman/listinfo/speex-dev >>> >>> _______________________________________________ >>> Speex-dev mailing list >>> Speex-dev at xiph.org >>> http://lists.xiph.org/mailman/listinfo/speex-dev >>> >> >> > >