The Asterisk® VOIP Systems - HPEC is upon Adaptive Digital's G.168 EC algorithm. By incorporating Adaptive Digital's field-proven echo cancellation technology, Digium brings better and more robust voice quality to its worldwide customer base. The High Performance Echo Cancellation (HPEC) is carrier-grade and provides host-based Toll Quality echo cancellation on a global scale.

"As Asterisk continues its rapid rate of deployment on a wide range of telephone equipment from vendors around the world, Digium is committed to delivering our customers the absolute best quality possible," said Mark Spencer, CTO of Digium. "Digium’s new high performance echo cancellation solutions once again set the industry standard for open source, carrier-class voice networks."

SKIP TO SPECS

G.168 v9 Echo Canceller - Line and Network
G.168 Plus™ handles round trip delays up to 512 msecs.

Carrier class EC C54x , C55x C62x C64x C64x+ ARM

1. Overview

• 1.1 Echo Tail

• 1.2 Bulk Delay

• 1.3 Echo Cancellation

• 1.4 Tandem Free Operation

2. Additional Requirements

3. Features

4. Availability

5. Specifications


The Adaptive Digital Technologies patented, industry standard, carrier class G.168 echo canceller is available on many DSP and general purpose processors. Adaptive Digital’s echo canceller qualified as toll-quality at AT&T’s Voice Quality Assessment Labs in Middleton, NJ. AT&T’s Voice Quality Assessment Lab evaluated Adaptive Digital’s echo canceller using its stringent series of performance tests including AT&T’s Mean Opinion Score (MOS) subjective tests as well as the standardized set of G.168 objective tests. The subjective and objective performance of Adaptive Digital’s echo canceller surpassed even the performance of AT&T’s benchmark lab echo cancellers.

The importance of subjective testing should not be overlooked. Although the ITU’s G.168 recommendation is well thought out, this type of objective test is no guarantee that an echo canceller will sound good to a human listener. By doing both subjective (MOS) and objective (G.168) testing, Adaptive Digital ensures the optimum voice quality, which is, after all, what it’s all about!

Another important reason for solid subjective performance is that G.168 is not a bit-exact specification. When an algorithm is specified in a bit-exact way, every compliant implementation will sound identical. This is the case for most of the standardized vocoders. In contrast, G.168 specifies test conditions, excitations, and required minimum output performance. As a result, the voice quality achieved by different echo cancellers varies greatly. Beyond all the lab testing that can and should be done, there is no substitute for lessons learned through years of real-world deployment.

The overall importance of echo cancellation should also not be overlooked. From the users perspective, echo is arguably the worst type of impairment that can be encountered during a telephone conversation. Typically, if a circuit has echo, the two parties agree to hang up and dial again because it is so difficult to speak in the presence of one’s own echo.

The moral of the story is – use a top-notch echo canceller. A reputation for good voice quality is difficult to achieve. A reputation for bad voice quality is easy to achieve and difficult to overcome.


ECHO CANCELLATION OVERVIEW

Echo in the telephone network is caused by hybrid circuits that convert between two-wire analog interfaces and four-wire analog interfaces, as seen in figure 1

At the four-wire side of the hybrid, one pair of wires carries voice signals toward the hybrid (sometime called the receive path), and a second pair of wires carries voice signals away from the hybrid (sometimes called the send path). On the two-wire side of the hybrid, a single pair of wires carries voice signals in both directions. The echo comes about because hybrid circuits are not perfectly matched. As a result, some of the four-wire receive signal is leaked back into the four-wire send signal.

We will refer to the person speaking at the four-wire side as the far end speaker, and the person speaking at the two-wire side as the near end speaker.

ECHO TAIL

If we characterize a hybrid in terms of its impulse response, we see that the impulse response tends to be non-zero for a few milliseconds, but can be as long as 16 milliseconds. The impulse response is often referred to as the echo tail, and the duration of the echo tail is often referred to as the tail length. The tail length of the echo tail shown in figure 2 is 8 millseconds.

There are situations where the echo canceller is not located at the same location as the hybrid. It may be separated by one or more T-1 links or other types of links that cause the tail length appear to be even longer from the point of view of the echo canceller. Furthermore, there may be more than one hybrid in the path – resulting in an overall impulse response that is the concatenation of multiple impulse responses. In this case, each tail is sometimes referred to as a reflector, and the situation where there are multiple hybrids in a circuit is referred to as one where there are multiple reflectors.

BULK DELAY

There rare situations where an echo canceller may be on the opposite side of a VoIP or satellite link from the hybrid. In this case, the there is considerable delay between the echo canceller and the hybrid in both directions. In this case, the echo tail appears to begin with a segment of zeros followed by the hybrid impulse response as shown in figure 2. The duration of the segment of zeros is referred to as the bulk delay.

There are two ways to handle bulk delay. One is to place an artificial delay into the far end input to the echo canceller to effectively remove the bulk delay from the point of view of the echo canceller. This technique falls short for two reasons. First of all, it requires a-priori knowledge about the amount of bulk delay that will be encountered. Second, it does not allow for the situation where there may be a local reflector and a remote reflector. Because of both of these reasons, it may be preferred to use a second technique in which the entire possible delay window is analyzed, and any reflectors within that window are cancelled.

ECHO CANCELLATION

The primary job of an echo canceller is to remove the echo of the receive path that has bled through the hybrid into the send path. This is done by modeling the echo path with an adaptive filter, using that adaptive filter to predict the echo, and subtracting the predicted echo from the send signal. This is shown in figure 3.

But, as we will explain, there is far more to an echo canceller than meets the eye for a number of reasons.

The ideal situation for an echo canceller to model the echo tail is when the far end speaker is speaking and the near end speaker is silent. This condition is referred to as single-talk. The reason this is ideal is that the receive signal is used as a reference signal for the echo canceller for comparison with the send signal. If both the far end speaker and the near end speaker are speaking at the same time (a condition known as double-talk condition), the near end speech will be added to the echo thereby making it more difficult for the echo canceller to compare it to the reference. In fact, a double-talk condition can cause an echo canceller’s adaptive filter to diverge. In order to prevent this from happening, echo cancellers employ double-talk detectors. When double-talk is detected, the echo canceller temporarily stops adapting it’s filter to prevent divergence.

Echo cancellers use adaptive filters that do not perfectly model the echo tail. As a result, the echo cancellers have to perform post-processing (Nonlinear Processing or NLP) to remove the residual echo caused by the imperfections. Similarly, the echo path may have some nonlinearities that the adaptive filter cannot perfectly match. The NLP is intended to take care of this also.

The NLP has to be designed carefully in order to minimize unwanted effects. The nonlinear processor is free to suppress residual echo at will in a single-talk situation. But if it is too aggressive during a double-talk situation it may suppress the near end speech – an undesirable effect.

Another more subtle effect of an NLP occurs when there is background noise at the near end. This background noise will be heard by the far end speaker when the NLP is not engaged, but the noise will be suppressed when the NLP is engaged. The appearance and disappearance of the background noise can be annoying. In order to take care of this, an echo canceller will often replace the residual signal with comfort noise while the NLP is engaged rather than blindly suppressing the signal. When an echo canceller has this feature, it is referred to as a comfort noise generator (CNG).

An overly aggressive NLP may also cause DTMF digits to be partially clipped (in duration). The possible consequence is that a DTMF detector may not detect a tone that should have otherwise been detected. In situations where an application needs an aggressive NLP, this problem can be circumvented by outputting both the pre-NLP and post-NLP signals. The DTMF detector can be fed the pre-NLP signal.

Beyond nonlinearities in the echo path, there can be other impairments that an echo canceller may need to deal with.

In the echo path such as PCM slips, packet loss (in a packet network), and residual acoustic echo from a hands-free phone. Ideally, an echo canceller should do its best to mitigate the effects of these impairments as well.

TANDEM FREE OPERATION

Yet another scenario that an echo should deal with is the one where there is another echo canceller in a circuit that is closer to the hybrid than ours. In this case, the other echo canceller should remove the echo leaving our echo canceller the appearance that there is no hybrid in the circuit. Under these circumstances, an echo canceller could actually create echo rather than leave the echo-free signal alone. Being able to handle this situation properly is referred to as tandem free operation. A similar situation is one in which an echo canceller is placed on a circuit that does not have a hybrid.

ADDITIONAL ECHO CANCELLER REQUIREMENT

The telephone system carries more than just voice signals. It can carry fax and modem signals, signaling tones (such as DTMF tones and inter-office signaling tones). Passing these tones properly imposes additional constraints on an echo canceller. For example, an echo canceller must detect the presence of certain modems by identifying their answer tones (as specified by ITU G.165, V.8). When these modems are present, the echo canceller must disable itself for the duration of the modem connection. Similarly, when certain interoffice signaling tones known as SS7 tones are present, the echo canceller must disable itself temporarily. This feature is known as a tone disabler.

ECHO CANCELLER FEATURES

Adaptive Digital’s echo canceller is offered in three variants, which are compared by feature set in the following table.

Feature G.168 LEC G.168 NEC G.168+ Packet EC
Maximum Tail Length 32 msec 128 msec 512 msec *
Tandem Free Operation * X X X
Packet Loss Concealment * -- -- X
PCM Slip Correction * -- X X
Dynamic* NLP X X X
Comfort Noise Generator X X X
Rapid Convergence X X X
Automatic Tail Search -- X X
Cancels multiple reflectors X X X
Convergence Monitor * X X X
Tone Disabler X X X
SS7 Tone Detection -- X X
Double-talk Detection X X X
Stationary Signal Detector X X X
Pre-NLP Signal Available* X X X
Split Pre- and Post- Processing * X X X
Handles Residual Acoustic Echo X X X
eXpress DSP™ compliant X X X
Functions are “C” callable X X X
User Configurable Parameters X X X

* indicates that this feature is an enhancement beyond the G.168 recommendation

AVAILABLILITY

ADT G.168 is available on the TMS320™ DSP Family

C54x™DSP, C55x™DSP, & C64x™DSP Generations – All variations (LEC, NEC, Packet EC)

C62x™DSP – Short Tail (LEC) Only

PC/Windows

Linux/x86

ARM7, ARM9 – Please inquire.

Data Sheet: .pdf

SPECIFICATIONS

C54x

All Memory usage is given in units of 16-bit word.

Tail Length
MIPs (Peak)
Program Memory
Data Memory
Per-Channel Data Memory
8 msec
2.7
4399
413
433
16 msec
3.5
4399
477
629
32 msec
5.0
4399
605
1021
64 msec
6.0
5728
920
1620
128 msec
6.6
5728
1528
2484

NOTE: Characterized with PCM Slip Correction disabled. Last update: 12/02/2005

C55x

All Memory usage is given in units of byte.

Tail Length
MIPs (Peak)
Program Memory
Data Memory
Per-Channel Data Memory
8 msec
2.4
6968
1202
824
16 msec
3.1
6968
1458
1216
32 msec
4.3
6968
1970
2000
64 msec
4.8
9368
3494
3222
128 msec
5.2
9368
5542
4950

NOTE: Characterized with PCM Slip Correction disabled. Last update: 11/30/2005


C62x

All Memory usage is given in units of byte.

Tail Length
MIPs (Peak)
Program Memory
Data Memory
Per-Channel Data Memory
16 msec
3.4
17321
852
1332
32 msec
4.2
17321
1108
2114

Last update: 10/26/2005

C64x

All Memory usage is given in units of byte.

Tail Length
MIPs (Peak)
Program Memory
Data Memory
Per-Channel Data Memory
16 msec
2.7
18944
1034
1466
32 msec
3.2
18944
1290
2250
64 msec
3.6
25440
2854
3620
128 msec
3.7
25440
3756 5240
*256 msec tail 4.3 27008
5738
7710
*384 msec tail 4.6 27008
7940
10426
*512 msec tail 5.0 27008
10600
13598

* NOTE: Tail lengths of 256, 384, & 512 msec. are only supported in the G.168Plus Packet EC.
Last update: 01/30/2008

C64x+

Tail Length
MIPs (Peak)
Program Memory
Data Memory
Per-Channel Data Memory
C64x+ - Tail Lengths of 256, 384, & 512 msecs are supported only in the G.168 Packet EC.
16 msec
2.4
18336
1034
1466
32 msec
2.9
18336
1290
2250
64 msec
3.6
24352
2854
3620
128 msec 3.9 23712 3756 5240
*256 msec
4.3
23712
5738
7710
*384 msec
4.6
23712
7940
10426
*512 msec
5.2
23712
10600
13598

* NOTE: Tail lengths of 256, 384, & 512 msec. are only supported in the G.168Plus Packet EC.

Last update: 01/30/2008

 


FUNCTION

LEC_ADT_g168Init(…) Initializes echo canceller channel

LEC_ADT_g168Cancel(…) Executes cancellation function

LEC_ADT_g168echoCancel(..) Executes pre-NLP function (split API)

LEC_ADT_g168postCancel(..) Executes NLP function(split API)

LEC_ADT_g168RuntimeConfig Changes modifiable EC parameters

LEC_ADT_g168GetConfig(…) Gets parameters and status of the EC

LEC_ADT_move( ) Inform EC that it’s data has moved. This is used for memory optimization.

For full data sheet download .pdf

 

 

PRODUCTS
Version 9 G.168 ECHO CANCELLER
What Rhino Equipment has to say about Adaptive Digital's G.168 Echo Canceller...

"We have partnered with Texas Instruments and Adaptive Digital Technologies to bring you the best echo cancellation solution on the planet!"