[comp.dsp] Echo Cancellation

mccanne@horse.ee.lbl.gov (Steven McCanne) (10/23/90)

I'm interested in experimenting with packetized audio over computer
networks.  I'd like to get a simple prototype running on our
Sparcstations to explore compression techniques and filtering.

Currently, we have simple "walkie talkie" program that does nothing
more than ship raw digitized audio over a UDP socket.  An obvious
problem is the echo caused by the receiver's mic picking up and sending
back its speaker's output.

For a first cut, I'd like to implement some sort of adaptive echo
cancellation, which brings me to my request.  Can anyone point me to
references or implementations (i.e., code) of echo cancellation, or for
that matter, anything at all related to packetized speech/audio?

Thanks.

Steve

doug@eris.berkeley.edu (Doug Merritt) (11/05/90)

In article <7706@dog.ee.lbl.gov> mccanne@horse.ee.lbl.gov (Steven McCanne) writes:
>
>problem is the echo caused by the receiver's mic picking up and sending
>back its speaker's output.
>
>For a first cut, I'd like to implement some sort of adaptive echo
>cancellation, which brings me to my request.  Can anyone point me to
>references or implementations (i.e., code) of echo cancellation, or for

As a first approximation, echo can be modelled as a sum of several
finite impulses, which, when convolved with the original source,
produces echoes (one per impulse). I would think that you could determine
the echo characteristic in your setup by sending a single impulse (approximation
of an infinite impulse) to the speaker. Whatever you pick up on the
microphone following that is a good approximation of the response of the
system, including the echoes (assuming you're still sending input to
output).

From this produce a filter which deconvolves the signal with that characteristic
response. Assuming a fixed acoustic environment, this will not only
suppress the echoes, but may also remove other forms of distortion to
some extent. Of course, that extent is limited by various physical limits
of the output system, and by the fact that the distortion being modeled
(output distortion plus input distortion) is different than the echoless ideal
(simple output distortion).

BTW cepstral analysis in the quefrency domain is extensively used to model
echoing.

Disclaimer: this is all just theory, and my own probably imperfect
understanding of it at that. But it should get you started.
	Doug
	Doug Merritt		doug@eris.berkeley.edu (ucbvax!eris!doug)
			or	uunet.uu.net!crossck!dougm