? hi all, i am using the Acoustic Echo Cancellation from "Speex 1.1.12 version" in my VOIP application. Is it that the frame length to be chosen should always be 20ms or can i have flexibility in chosing the frame lenght? on what parameters does the frame length choise depends? thank you all, Shri. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20060607/37cf4f9f/attachment.htm
Welcome everybody. I am new here on the list. Thank you very much for speex encoder and decoder. They are working great. I compile speex coded for str911 Arm processor. But I have a big problem with echo canceller from 1.1.12 speex package. I create echo canceler state: SpeexEchoState * echo_state = speex_echo_state_init(FRAME_SIZE, FRAME_SIZE * 5); FRAME_SIZE is in my project 160 samples. I have 8000ksaples/s, so I must call echo canceler every 20ms. and later in the loop I call it: speex_echo_cancel(echo_state, (short *)Samples, (short *)SamplesSpeaker, (short *)SamplesOut, NULL); I give as the parameters to the function the data from tables now. The problem is when I call speex_echo_cancel it does not return. It goes into infinite loop somewhere. I test now on the simulator. What can cause the infinite looping ? Please help.
Le mercredi 07 juin 2006 ? 10:03 +0000, shridhar desai a ?crit :> > hi all, > i am using the Acoustic Echo Cancellation from "Speex 1.1.12 version" > in my VOIP application. Is it that the frame length to be chosen > should always be 20ms or can i have flexibility in chosing the frame > lenght? > on what parameters does the frame length choise depends? > thank you all, > Shri.20 ms is usually a good idea, but you can use shorter (I don't recommend much longer). In any case, just try it and see if it works for you. Jean-Marc
> The problem is when I call speex_echo_cancel it does not return. It goes > into infinite loop somewhere. > I test now on the simulator. > > What can cause the infinite looping ?Can you use a debugger to see where the infinite loop is. I suspect the problem is somewhere in your code, but in case it's in Speex, I'll find it. Jean-Marc
You should try the code from Subversion before troubleshooting too much. I had a problem like this which was fixed a month ago, but it only appeared on a 16-bit DSP. - Jim ----- Original Message ----- From: "A" <ap@fom.pl> To: <speex-dev@xiph.org> Sent: Wednesday, June 07, 2006 5:12 PM Subject: [Speex-dev] Echo canceller problem> Welcome everybody. > I am new here on the list. Thank you very much for speex encoder and > decoder. > They are working great. I compile speex coded for str911 Arm processor. > But I have a big problem with echo canceller from 1.1.12 speex package. > > I create echo canceler state: > SpeexEchoState * echo_state = speex_echo_state_init(FRAME_SIZE, > FRAME_SIZE * 5); > > FRAME_SIZE is in my project 160 samples. I have 8000ksaples/s, so I must > call echo canceler every 20ms. > > and later in the loop I call it: > speex_echo_cancel(echo_state, (short *)Samples, (short > *)SamplesSpeaker, (short *)SamplesOut, NULL); > > I give as the parameters to the function the data from tables now. > > The problem is when I call speex_echo_cancel it does not return. It goes > into infinite loop somewhere. > I test now on the simulator. > > What can cause the infinite looping ? > > Please help. > _______________________________________________ > Speex-dev mailing list > Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev >
Hello everybody. I have the same problem like you. I use ARM microcontroller too. Here is the list of all functions called by speex_echo_cancel until goes into infinite loop: speex_echo_cancel() | spx_fft | kiss_fftr | kiss_fft | kiss_fft_stride | kf_work Function kf_work looks like: static void kf_work(kiss_fft_cpx * Fout, const kiss_fft_cpx * f, const size_t fstride, int in_stride, int * factors, const kiss_fft_cfg st) { kiss_fft_cpx * Fout_beg=Fout; const int p=*factors++; // the radix const int m=*factors++; // stage's fft length/p const kiss_fft_cpx * Fout_end = Fout + p*m; if(m==1) { do { *Fout = *f; f += fstride*in_stride; } while(++Fout != Fout_end ); } else { do { kf_work(Fout , f, fstride*p, in_stride, factors,st); // <---------- here this function calls itself and that's why goes infinite f += fstride*in_stride; } while( (Fout += m) != Fout_end ); } ... ... If anybody knows how to work around this problem please help. Regards Andre _________________________________________________________________ FREE pop-up blocking with the new MSN Toolbar - get it now! http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
Yes! The same problem :-( Any idea ? At 18:55 2006-06-08 +0200, Andrzej Fien wrote:>Hello everybody. >I have the same problem like you. I use ARM microcontroller too. >Here is the list of all functions called by speex_echo_cancel until goes >into infinite loop: > >speex_echo_cancel() > | >spx_fft > | >kiss_fftr > | >kiss_fft > | >kiss_fft_stride > | >kf_work > >Function kf_work looks like: > >static void kf_work(kiss_fft_cpx * Fout, const kiss_fft_cpx * f, const >size_t fstride, int in_stride, int * factors, const kiss_fft_cfg st) >{ > kiss_fft_cpx * Fout_beg=Fout; > const int p=*factors++; // the radix > const int m=*factors++; // stage's fft length/p > const kiss_fft_cpx * Fout_end = Fout + p*m; > if(m==1) > { > do > { > *Fout = *f; > f += fstride*in_stride; > } > while(++Fout != Fout_end ); > } > else > { > do > { > kf_work(Fout , f, fstride*p, in_stride, factors,st); // <---------- >here this function calls itself and that's why goes infinite > f += fstride*in_stride; > } > while( (Fout += m) != Fout_end ); > } > ... > ... > >If anybody knows how to work around this problem please help. > >Regards >Andre > >_________________________________________________________________ >FREE pop-up blocking with the new MSN Toolbar - get it now! >http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/ > >_______________________________________________ >Speex-dev mailing list >Speex-dev@xiph.org >http://lists.xiph.org/mailman/listinfo/speex-dev > >
Jean-Marc Valin <Jean-Marc.Valin <at> USherbrooke.ca> writes:> > Le mercredi 07 juin 2006 ? 10:03 +0000, shridhar desai a ?crit : > > > > hi all, > > i am using the Acoustic Echo Cancellation from "Speex 1.1.12 version" > > in my VOIP application. Is it that the frame length to be chosen > > should always be 20ms or can i have flexibility in chosing the frame > > lenght? > > on what parameters does the frame length choise depends? > > thank you all, > > Shri. > > 20 ms is usually a good idea, but you can use shorter (I don't recommend > much longer). In any case, just try it and see if it works for you. > > Jean-Marc >Hi Jean-Marc, I am using speex-1.1.12 version AEC with the following configuration SAMPLE RATE : 8000Hz FRAME LENGTH: 32 , i.e. 4msec(125usec*32) TAIL LENGTH : 256 , 32msec I have configured AEC for ARM-920T, 200MHz Here are my observations [a] AEC CPU usage 50% [b] Still 10%trace of echo is still present NOTE: I am not using preprocessor as my cpu usage goes upto 99% What should i do to increase the efficiency of AEC Thanks in advance Ranjan Srivastava