[speex-dev] echo cancel

Gustavo García Bernardo ggb at tid.es
Mon Mar 8 02:07:20 PST 2004

Thank you for your quick response.

I'm testing it now, and i have a strange behavior:

* I have Signal Echo:  The remote voice.
* I have Signal Reference: The local voice mixed with remote voice
decremented and delayed. (generated with an audio program)

When i use speex_echo_cancel (st, ref, echo, out, NULL), i obtain the signal
out like the signal reference without my local voice!!!!! Instead of
removing echo the filter is leaving only the echo.  Does it makes any sense?

I'm using signed 16 bits litte endian signals, with a frame size of 80, and
a filter length 800.

Thank you very much.


-----Mensaje original-----
De: Jean-Marc Valin [mailto:Jean-Marc.Valin at USherbrooke.ca]
Enviado el: viernes, 27 de febrero de 2004 7:55
Para: speex; Gustavo García Bernardo
Asunto: Re: [speex-dev] echo cancel

<p>> I would like to test the echo cancel algorithm available in unstable
> 1.1.4. This echo canceller can be used with other codecs like G711?

If by "used with other codecs", you mean that you can use the result as
input to any codec you like, the answer is yes.

> Somebody could send me some documentation or sample, or explain the next
> functions:
> SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length);

frame size is the number of samples you want to process at once.
Recommended is in the order of 256 (ideally a power of 2, but other
values will work). filter_length is the approximate length you want your
filter to be. For example, if you want a filter that covers echo up to
100 ms at 8 kHz, you need a filter of length 800.

> void speex_echo_state_destroy(SpeexEchoState *st);

Just frees the stuff allocated by speex_echo_state_init.

> void speex_echo_cancel(SpeexEchoState *st, float *ref, float *echo, float
> *out, float *Y);

ref is the signal you want to clean (usually the signal you record from
your microphone). echo is the echo signal you want to "subtract"
(usually what you're sending to the speakers at the same time you're
recording). out is the (hopefully better) output signal. Y should be set
to NULL until the feature (echo post-filter using the denoiser) works.

Note that the echo canceller is still experimental, it may become
unstable and it lacks a good crosstalk detector.


Jean-Marc Valin, M.Sc.A., ing. jr.
LABORIUS (http://www.gel.usherb.ca/laborius)
Université de Sherbrooke, Québec, Canada

--- >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 at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Speex-dev mailing list