8.5. Echo
You may not realize it, but echo has been a
problem in the PSTN for as long as there have been telephones. You
probably haven't often experienced it, because the telecom industry
has spent large sums of money designing expensive echo cancellation
devices. Also, when the endpoints are physically closee.g., when
you phone your neighbor down the streetthe delay is so minimal that
anything you transmit will be returned back so quickly that it will
be indistinguishable from the sidetone
normally occurring in your
telephone.
8.5.1. Why Echo Occurs
Before we discuss measures to deal with echo,
let's first take a look at why echo occurs in the analog world.
If you hear echo, it's not your phone that's
causing the problem; it's the far end of the circuit. Conversely,
echo heard on the far end is being generated at your end. Echo is
caused by the fact that an analog local loop circuit has to
transmit and receive on the same pair of wires. If this circuit is
not electrically balanced, or if a low-quality telephone is
connected to the end of the circuit, signals it receives can be
reflected back, becoming part of the return transmission. When this
reflected circuit gets back to you, you will hear the words you
spoke just moments before. The human ear will perceive an echo
after a delay of roughly 40 milliseconds.
In a cheap telephone, it is possible for echo to
be generated in the body of the handset. This is why some cheap IP
phones can cause echo even when the entire end-to-end connection
does not contain an analog circuit. In the VoIP world, echo is usually introduced
either by an analog circuit somewhere in the connection, or by a
cheap endpoint reflecting back some of the signal (e.g., feedback
through a hands-free or poorly designed handset). A good rule of
thumb is to keep latency to less than 250 milliseconds.
8.5.2. Managing Echo
In the zconfig.h configuration file, you can choose
from one of several echo canceller algorithms , with the default being MARK2. Experiment
with the various echo cancellers on your network to determine the
best one for your environment. Asterisk also has an option in the
zconfig.h file to make the echo
cancellation more aggressive. You can enable it by uncommenting the
following line:
#define AGGRESSIVE_SUPPRESSOR
Note that aggressive echo cancellation can
create a walkie-talkie, half-duplex effect. This should be enabled
only if all other methods of reducing echo have failed.
Enable echo cancellation for Zaptel interfaces
in the zapata.conf file. The
default configuration enables echo cancellation with
echocancel=yes. echocancelwhenbridged=yes will
enable echo cancellation for TDM bridged calls. While bridged calls
should not require echo cancellation, this may improve call
quality.
When echo cancellation is enabled, the echo
canceller learns of echo on the line by listening for it for the
duration of the call. Consequently, echo may be heard at the
beginning of a call and eventually lessen after period of time. To
avoid this situation, you can employ a method called "echo
training ," which will mute the line
briefly at the beginning of a call, and then send a tone from which
the amount of echo on the line can be determined. This allows
Asterisk to deal with the echo more quickly. Echo training can be
enabled with echotraining=yes. |