Probably the level of your signal is too low and/or you're just not letting it time to adapt. Jean-Marc Le mercredi 19 juillet 2006 ? 19:00 -0400, ac2491@columbia.edu a ?crit :> On closer looks and debugging I always end up in > > speex_echo_cancel function with comment > /* Temporary adaption rate if filter is not adapted correctly */ > > > Does this give any clue to the problem? I wonder why it would not > find its mirror image as an echo and do echo cancellation? > > Any insight is appreciated. If you need some more data, tell me. > > Thanks > -Anurag > > Quoting ac2491@columbia.edu: > > > Hi, > > > > If I pass the same ref and the echo data to the echo cancellation > > API, I am expecting silence as output. I get back the original > > audio data. Is this correct? > > > > Thanks > > -Anurag > > > > Quoting ac2491@columbia.edu: > > > > > Hi Jean, > > > > > > I got the earlier problem fied with correct NN and tail values. > > > But > > > I dont see any echo being cancelled. To the echo cancel API I > > am > > > giving, audio packets that are being played currently and audio > > > packets that are captured from the mic. > > > > > > Since the audio packets being played came from machine B (as in > > a > > > normal VoIP call), could this be a potential problem? As the > > > packets being compared originated at different machines. > > > > > > Thanks > > > -Anurag > > > > > > Quoting ac2491@columbia.edu: > > > > > > > Hi, > > > > > > > > For my VoIP application machine A sends speex encoded audio > > of > > > to > > > > machine B and vice versa at. Data is captured in PCM 8Khz, 16 > > > bit > > > > and then encoded using speex 1.1.12 > > > > > > > > The packet A played and the packet A captured through mic are > > > the > > > > input to speex echo canceller. So I am trying to remove > > traces > > > of > > > > packet A played from the captured data. I have followed > > example > > > > testecho.c > > > > > > > > All I hear is some metallic sounds and after some time there > > is > > > > an > > > > illegal memory reference in mdf.c filter_dc_notch16 function > > at > > > > spx_word16_t vin = in[i] > > > > > > > > Any clues as to what is going wrong? > > > > > > > > Thanks > > > > -Anurag > > > > > > > > _______________________________________________ > > > > Speex-dev mailing list > > > > Speex-dev@xiph.org > > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > > > > > _______________________________________________ > > > Speex-dev mailing list > > > Speex-dev@xiph.org > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > _______________________________________________ > > Speex-dev mailing list > > Speex-dev@xiph.org > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > _______________________________________________ > Speex-dev mailing list > Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev >
Hi, I tried keeping it for a very long time and put logs there and it always went to not adapting. This is how I initialize speex_echo_cancel SpeexEchoState* _echoState = speex_echo_state_init(160, 320*10); I have 20 msecs of audio with 16bits for a sample. If two frames are identical and are given to speex_echo_cancel for many iterations, should I expect silence. Thanks -Anurag Quoting Jean-Marc Valin <Jean-Marc.Valin@USherbrooke.ca>:> Probably the level of your signal is too low and/or you're just > not > letting it time to adapt. > > Jean-Marc > > Le mercredi 19 juillet 2006 ? 19:00 -0400, ac2491@columbia.edu a > ?crit : > > On closer looks and debugging I always end up in > > > > speex_echo_cancel function with comment > > /* Temporary adaption rate if filter is not adapted correctly > */ > > > > > > Does this give any clue to the problem? I wonder why it would > not > > find its mirror image as an echo and do echo cancellation? > > > > Any insight is appreciated. If you need some more data, tell > me. > > > > Thanks > > -Anurag > > > > Quoting ac2491@columbia.edu: > > > > > Hi, > > > > > > If I pass the same ref and the echo data to the echo > cancellation > > > API, I am expecting silence as output. I get back the > original > > > audio data. Is this correct? > > > > > > Thanks > > > -Anurag > > > > > > Quoting ac2491@columbia.edu: > > > > > > > Hi Jean, > > > > > > > > I got the earlier problem fied with correct NN and tail > values. > > > > But > > > > I dont see any echo being cancelled. To the echo cancel API > I > > > am > > > > giving, audio packets that are being played currently and > audio > > > > packets that are captured from the mic. > > > > > > > > Since the audio packets being played came from machine B > (as in > > > a > > > > normal VoIP call), could this be a potential problem? As > the > > > > packets being compared originated at different machines. > > > > > > > > Thanks > > > > -Anurag > > > > > > > > Quoting ac2491@columbia.edu: > > > > > > > > > Hi, > > > > > > > > > > For my VoIP application machine A sends speex encoded > audio > > > of > > > > to > > > > > machine B and vice versa at. Data is captured in PCM > 8Khz, 16 > > > > bit > > > > > and then encoded using speex 1.1.12 > > > > > > > > > > The packet A played and the packet A captured through mic > are > > > > the > > > > > input to speex echo canceller. So I am trying to remove > > > traces > > > > of > > > > > packet A played from the captured data. I have followed > > > example > > > > > testecho.c > > > > > > > > > > All I hear is some metallic sounds and after some time > there > > > is > > > > > an > > > > > illegal memory reference in mdf.c filter_dc_notch16 > function > > > at > > > > > spx_word16_t vin = in[i] > > > > > > > > > > Any clues as to what is going wrong? > > > > > > > > > > Thanks > > > > > -Anurag > > > > > > > > > > _______________________________________________ > > > > > Speex-dev mailing list > > > > > Speex-dev@xiph.org > > > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Speex-dev mailing list > > > > Speex-dev@xiph.org > > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > > > > > _______________________________________________ > > > Speex-dev mailing list > > > Speex-dev@xiph.org > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > _______________________________________________ > > Speex-dev mailing list > > Speex-dev@xiph.org > > http://lists.xiph.org/mailman/listinfo/speex-dev > > >
Then your signal is probably just too low, so it can't adapt. For example, if you send zeros, there's no way to adapt. This temporary adaptation phase is always used at the beginning until some minimal adaptation is done. Seems like the conditions for that aren't met for your setup. Jean-Marc On Wed, 2006-07-19 at 20:54 -0400, ac2491@columbia.edu wrote:> Hi, > > I tried keeping it for a very long time and put logs there and it > always went to not adapting. > > This is how I initialize speex_echo_cancel > > SpeexEchoState* _echoState = speex_echo_state_init(160, 320*10); > > I have 20 msecs of audio with 16bits for a sample. > > > If two frames are identical and are given to speex_echo_cancel for > many iterations, should I expect silence. > > Thanks > -Anurag > > Quoting Jean-Marc Valin <Jean-Marc.Valin@USherbrooke.ca>: > > > Probably the level of your signal is too low and/or you're just > > not > > letting it time to adapt. > > > > Jean-Marc > > > > Le mercredi 19 juillet 2006 ? 19:00 -0400, ac2491@columbia.edu a > > ?crit : > > > On closer looks and debugging I always end up in > > > > > > speex_echo_cancel function with comment > > > /* Temporary adaption rate if filter is not adapted correctly > > */ > > > > > > > > > Does this give any clue to the problem? I wonder why it would > > not > > > find its mirror image as an echo and do echo cancellation? > > > > > > Any insight is appreciated. If you need some more data, tell > > me. > > > > > > Thanks > > > -Anurag > > > > > > Quoting ac2491@columbia.edu: > > > > > > > Hi, > > > > > > > > If I pass the same ref and the echo data to the echo > > cancellation > > > > API, I am expecting silence as output. I get back the > > original > > > > audio data. Is this correct? > > > > > > > > Thanks > > > > -Anurag > > > > > > > > Quoting ac2491@columbia.edu: > > > > > > > > > Hi Jean, > > > > > > > > > > I got the earlier problem fied with correct NN and tail > > values. > > > > > But > > > > > I dont see any echo being cancelled. To the echo cancel API > > I > > > > am > > > > > giving, audio packets that are being played currently and > > audio > > > > > packets that are captured from the mic. > > > > > > > > > > Since the audio packets being played came from machine B > > (as in > > > > a > > > > > normal VoIP call), could this be a potential problem? As > > the > > > > > packets being compared originated at different machines. > > > > > > > > > > Thanks > > > > > -Anurag > > > > > > > > > > Quoting ac2491@columbia.edu: > > > > > > > > > > > Hi, > > > > > > > > > > > > For my VoIP application machine A sends speex encoded > > audio > > > > of > > > > > to > > > > > > machine B and vice versa at. Data is captured in PCM > > 8Khz, 16 > > > > > bit > > > > > > and then encoded using speex 1.1.12 > > > > > > > > > > > > The packet A played and the packet A captured through mic > > are > > > > > the > > > > > > input to speex echo canceller. So I am trying to remove > > > > traces > > > > > of > > > > > > packet A played from the captured data. I have followed > > > > example > > > > > > testecho.c > > > > > > > > > > > > All I hear is some metallic sounds and after some time > > there > > > > is > > > > > > an > > > > > > illegal memory reference in mdf.c filter_dc_notch16 > > function > > > > at > > > > > > spx_word16_t vin = in[i] > > > > > > > > > > > > Any clues as to what is going wrong? > > > > > > > > > > > > Thanks > > > > > > -Anurag > > > > > > > > > > > > _______________________________________________ > > > > > > Speex-dev mailing list > > > > > > Speex-dev@xiph.org > > > > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > Speex-dev mailing list > > > > > Speex-dev@xiph.org > > > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Speex-dev mailing list > > > > Speex-dev@xiph.org > > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > > > > > > > _______________________________________________ > > > Speex-dev mailing list > > > Speex-dev@xiph.org > > > http://lists.xiph.org/mailman/listinfo/speex-dev > > > > > > > >