HD AEC | Acoustic Echo Cancellation SW

HD AEC: High Definition Acoustic Echo Cancellation Software | HD SAEC: Stereo AEC

True full-duplex acoustic echo cancellation under a wide dynamic range of audio levels.

Adaptive Digital’s HD Acoustic Echo Canceller (HD AEC™) is a High Definition, Multi-Mic Capable, Full-Duplex Acoustic Echo Cancellation algorithm which includes noise reduction (NR), as well as anti-howling, adaptive filtering, nonlinear processing, and double-talk detection. It supports bandwidths from 8 kHz. (Narrowband-NB) to 48 kHz. (Full-Band-FB).  

High-Definition Acoustic Echo Cancellation

Combining Acoustic Echo Cancellation with VQE algorithms to provide Superior Voice Clarity

Noise Reduction

Auto Gain Control

Anti-Howling

HD AEC Demo - Sampling Rate = 48 kHz

female-speaker

MICROPHONE INPUT (TX  IN)

Female voice: ECHO  –  Male voice: Near End talker 

Female voice (ECHO) is COMPLETELY REMOVED!

MICROPHONE OUTPUT (TX OUT)

The acoustic echo cancellation software product provides superior voice clarity and true full-duplex performance under a wide set of challenging acoustic environments. It is capable of eliminating the acoustic echo in difficult conditions such as unbalanced speech levels, close speaker to mic proximity, indoor/outdoor environments, background noise, reflective room surface, double talk, and echo path changes.

Adaptive Digital’s HD AEC acoustic echo cancellation technology can be found in a wide range of applications, like IP Intercom Systems, Conference Speakerphones for both large and small conference rooms/huddle rooms,  IP Desk Phones, Mobile Handsets, Radio over IP, and essentially anywhere where voice quality is affected by adverse room conditions.  Additionally, the HD AEC acoustic echo canceller is effective in improving the performance of speech recognition algorithms when operating in an echoic environments.

Speech Recognition Preprocessor
SPEECH RECOGNITION: HD AEC is effective in improving the performance of speech recognition algorithms

Features List

  • True full-duplex operation under a wide dynamic range of audio levels, even when microphone input signal is weak
  • Programmable sampling rate, supporting narrowband (8 kHz), wideband (16 kHz), super-wideband (32 kHz), and full-band (44.1, 48 kHz)
  • Improved adaptive nonlinear processor
  • Handles echo tails of up to 500 msec. and greater, with true full-duplex cancellation.
  • Spectrally representative comfort noise generator
  • Automatically adjusts for unknown bulk (buffering/audio driver) delay
  • Able to handle strong echo (speaker to microphone gains up to 20 dB)
  • Anti-Howling
  • Instantly adjusts to user-controlled speaker gain changes
  • Handles external user-controlled volume changes
  • Parameters are user configurable
  • Improved fast convergence and reconvergence
  • No divergence during double-talk
  • Integrated Automatic Gain Control (AGC)
  • Improves speech recognition performance in an echoic environment.
  • Integrated Next Gen Noise Reduction (NR)
  • Integrated Transmit Equalization

Availability

Platforms
Arm ® Devices – Armv7-A / Armv8-A / Armv9-A || Armv7-M / Armv8-M || Armv8.1-M || Arm® Devices – Armv7-M / Cortex-R5 || Legacy M3
Texas Instruments – TI TMS320C7000 C7x | TI TMS320C6000 C64x/C64x+/C66x, C674x | TMS320C5000 C55x
MIPS Architecture – MIPS64 Preliminary
Analog Devices – SHARC

Availability – Fullband Stereo HD AEC

Platforms
Arm ® Devices – Armv7-M Cortex-M7 @ 48 kHz / Armv8-A / Armv9-A | Armv8-M Cortex M33/35, Armv8.1M Cortex-M85
Intel Core i7 Mobile – 6600u – Skylake

Operating Systems
Linux x86 (32-bit) / x64 (64-bit)
Windows 32-bit / 64-bit
Android
iOS

 

Operating Systems
Linux x86 (32-bit) / x64 (64-bit)

ADT HD AEC is available on the above Platforms: Other configurations are available upon request.

Specifications

NOTE: We specify MIPS (Millions of Instructions Per Second) as MCPS (Millions of Instruction Cycles Per Second). Unless otherwise specified, peak MIPS are indicated.

↓  Click on links below to view specification tables. 

HD AEC Armv8-A | A53 / A72

CPU Utilization
A53 Board: MCM-iMX8M-Mini, Cortex-A53, 1.8GHz
A72 Board: Raspberry Pi 4, Cortex-A72, 1.5 GHz
PlatformSampling RateTail Length (msec)Avg MIPSMax MIPS
Cortex-A728 kHz25614
16 kHz Wideband25628
48 kHz Fullband25688
Cortex-A538 kHz25624.550.5
16 kHz Wideband2565794
48 kHz Fullband256187

HD AEC Armv7-A Cortex-A8/A9/A15/A17 | Armv8-A | Armv9-A

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)Min MIPSAvg MIPSMax MIPSPer Channel Memory
Cortex-A88 kHz3250567424k
6452587433k
12853597954k
256536182109k
320546385143k
400546489191k
512576790
Cortex-A816 kHz329911214844k
6410211515461k
12810512116896k
256111134182180k
320116140186228k
400127155217293k
512151182250
Cortex-A832 kHz3219823231161k
6421124332796k
128226266354180k
256281321476396k
320263332479529k
400400483623718k
512467566729
Cortex-A848 kHz3229735147178k
64325380522136k
128375452650280k
256595710934678k
3206778081035932k
40081998512451302k
51295211521474
Note: MIPS generated with single mic enabled,running with on chip (internal) program and data memory only.  Specifications measure on BeagleBoard-xM TI AM37x ARM Cortex-A-8 based MCU.

HD AEC ARM Cortex-M4

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS*per MicProgram MemoryData MemoryPer Channel Memory
Cortex-M48 kHz324465k5k47k
644750k
1285057k
2565665k
5128296k
Cortex-M416 kHz328865k5k50k
649457k
12810765k
25613296k
512233147k
Cortex-M432 kHz3213165k5k55k
6413962k
12814270k
256180101k
512250152k
* with Anti-howling  Note: HD AEC Cortex-M4 MIPS generated with 0 wait state FLASH.  Specifications measured on TI Tiva C series ARM Cortex-M4 based MCU.

HD AEC ARM Cortex-M55

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS per MicPer Channel Memory
Cortex-M558 kHz3232.547k
643550k
12837.557k
25642.565k
Cortex-M5516 kHz3266.2550k
647057k
1288065k
25698.7596k
Cortex-M5532 kHz32132.550k
6414057k
12816065k
256197.596k
Cortex-M5548 kHz32146.2550k
64152.7550k
128176.2557k
256217.557k

HD AEC ARM Cortex-M7

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS*per MicPer Channel Memory
Cortex-M78 kHz322647k
642850k
1283057k
2563465k
Cortex-M716 kHz325350k
645657k
1286465k
2567996k
Cortex-M732 kHz3210650k
6411257k
12812865k
25615896k
Cortex-M748 kHz3211750k
6412350k
12814157k
25617457k
* with Anti-howling 

HD AEC ARM Cortex-M33/M35 – Estimate

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS*per MicPer Channel Memory
Cortex-M338 kHz3236.447k
6439.250k
1284257k
25647.665k
Cortex-M3316 kHz3274.250k
6478.457k
1289065k
25611196k
Cortex-M3332 kHz3217050k
6415757k
128179.165k
25622196k
Cortex-M3348 kHz32163.850k
64172.250k
128197.457k
25624457k
* with Anti-howling

SAEC ARM Cortex-M7

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS*per MicPer Channel Memory
Cortex-M748 kHz3225765k
6427165k
12831096k
25638396k
* with Anti-howling 

SAEC ARM Cortex-M33/M35 – Estimate

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS*per MicPer Channel Memory
Cortex-M33/3548 kHz3236065k
6438065k
12843496k
25653696k
* with Anti-howling 

HD AEC C674x | HD AEC C7x

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS* per MicPer Channel Memory
C674x8 kHz321925k
642034k
1282155k
25622110k
32024143k
40062160k
C674x16 kHz323345k
643461k
1283696k
25638180k
32043223k
40048250k
C674x32 kHz326556k
646786k
12871157k
25677350k
32081470k
40085470k
C674x48 kHz327868k
64103114k
128111234k
256125584k
320133814k
4001411100k

* with Anti-howling

Note: MIPS generated with single mic enabled, and running with on chip (internal) program and data memory only. 
When using external source for program and data memory, MIPS increase by 3x per enabled microphone.

HD AEC C64x / C64x+

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS* per MicPer Channel Memory
C64x / C64x+8 kHz322230k
642745k
1283581k
25651179k
32057240k
40063300k
C64x / C64x+16 kHz324354k
645180k
12867140k
256101282k
320119365k
400150450k
C64x / C64x+32 kHz328575k
64103128k
128136259k
256204620k
320238847k
4003001000k
C64x / C64x+48 kHz3211099k
64132185k
128188410k
2562901085k
320
4003421534k

* with Anti-howling

Note: MIPS generated with single mic enabled, and running with on chip (internal) program and data memory only. 
When using external source for program and data memory, MIPS increase by 3x per enabled microphone.

HD AEC C55x

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
PlatformSampling RateTail Length (msec)MIPS* per MicPer Channel Memory
C55x8 kHz163452k
323553k
483755k
643856k
964158.6k
1284261k
C55x16 kHz166852.5k
327155.6k
487858.6k
648161k
969268k
12810074k

Note: MIPS generated with AGC, NR and CNG enabled. *NR2 is not turned on.

HD AEC ARM Windows/Linux 32 Bit*

CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
*Contact Sales for 64 Bit numbers.
PlatformSampling RateTail Length (msec)MIPS* per MicPer Channel Memory
Windows/Linux
8 kHz328128k
649237k
12812758k
256186113k
320220147k
400262195k
Windows/x8616 kHz3216052k
6419468k
128248104k
256373187k
320429235k
400506301k
Windows/x8632 kHz3282156k
64108986k
1281409157k
2562284350k
3202489470k
4002702600k
Windows/x8648 kHz32126668k
64103114k
1281913234k
2562966584k
3203493814k
40014001004k

* with Anti-howling

Note: MIPS generated with single mic enabled, and running with on chip (internal) program and data memory only. 
When using external source for program and data memory, MIPS increase by 3x per enabled microphone.

HD AEC SHARC+ DSP

CPU Utilization
SHARC+ ADSP-21569
PlatformSampling RateTail Length (msec)Avg MIPSMax MIPS
ADSP-2156948 kHz200102

Demos

HD AEC: Get the demos

Demo request form will put you in contact with our sales team. They will supply you with a complete list of hardware requirements. Demo/Eval agreement will be required to download the software. Thank you for your interest!

HD AEC NXP MIMXRT685-EVK Arm® Cortex®-M33

Hardware Requirements: i.MX RT600 EVK (MIMXRT685-EVK)

HD AEC STM32F76xx Arm® 32-bit Cortex®-M7

Hardware Requirements: STM32F769I-DISCOVERY Development Board 

HD AEC Full Duplex STM32F4 Demo Arm® 32-bit Cortex®-M4

Hardware Requirements: STM32F407G-DISC1, combined with the STM32F4BIS-BB extension board

HD AEC Linux VoIP Engine BeagleBone Green Demo

Hardware Requirements: BeagleBone Green (BBG), or BeagleBone Green Wireless (BBGW)

Click above to view HD AEC CPU Usage and Memory Requirements: Texas Instruments’ TMS320C6000, TMS320C5000 | Arm Architectures (v5, v6, v7-A/R, Armv7E-M, Armv8-A, Armv8-R) | Linux 32-bit/64-bit | Windows x86 / x64.

Adaptive Digital Technologies’ high definition acoustic echo canceller (HD AEC), has integrated Noise Reduction and AGC into its AEC algorithm and created appropriate hooks to make them work together seamlessly.

NOISE REDUCTION

Noise Reduction is done pre-NLP, resulting in a far cleaner audio stream feeding into the non-linear processor. By making the AGC aware of the AEC state, we can avoid having the AGC becoming a cause of howling. Changes in gain can adversely affect an AEC; Adaptive Digital’s HD AEC has the ability to adapt to changes in the acoustic path (including gain/loss changes.) And when the changes are known, like in the case of controlled gain changes, Adaptive Digital’s HD AEC has hooks that enable the application to tell it the nature of the gain change so it can adjust immediately rather than take time to reconverge.

AUTO GAIN CONTROL

Automatic Gain Control (AGC) is provided to help boost lower level speech signals in hands-free environments. The AGC algorithm is used to automatically adjust the speech level of an audio signal so that the level falls within a user-defined output level range. 

ANTI-HOWLING

Howling can occur when there is a full-duplex communication link with echo at both ends. These echo, or coupling, paths create feedback loops. In full-duplex communication systems where, by definition, both communication paths are open at all time, howling can be a serious issue. With Anti-howling enabled the HD AEC identifies when instability is starting to occur and takes action to mitigate the instance of feedback looping. HD AEC electronically removes both direct coupling and reflected echo, enabling true full-duplex hands-free telephony.

FAST CONVERGENCE and RECONVERGENCE

Convergence time is the time it takes the echo cancel algorithm to analyze the signal. This number can never be “0” as analyzing the signal is a critical part of the echo cancellation process. Adaptive Digital’s HD AEC analyses the signal in as finite a period as is possible to best develop the echo model, and then cancels the echo immediately.

DOUBLE-TALK

Superior Double-talk performance. Double talk occurs when the speech of two talkers overlap causing the audio signals to arrive simultaneously at the echo canceller. Detection of double-talk is vital to the performance of an acoustic echo canceller.

HD AEC VARIANTS

Single microphone (standard) and Multi-microphone , and Stereo.


USER CONTROLLED PARAMETERS (SUMMARY)

  • Sampling Rate
  • Tail Length
  • Frame Size
  • NLP Control
  • AGC Control
  • Equalizer Control
  • Noise Reduction Control
  • Howling Control

Functional Description

The figure below is a simplified block diagram of the HD Acoustic Echo Canceller.

HD Acoustic Echo Cancellation
Simplified block diagram of the HD Acoustic Echo Canceller.

The top half of the diagram shows the receive signal path, or the signal path from the telephone network to the speaker. The bottom half of the diagram shows the transmit signal path from the microphone toward the telephone network. The HD AEC cancels the echo that occurs between the speaker output and the microphone input.

 

The terms Rx (Receive) and Tx (Transmit) may be confusing at first because both the receive and transmit paths have inputs and outputs. The names receive and transmit are used from the point-of-view of the person at the speaker/microphone side.

The RxIn signal coming from the network is fed into the RxNLP (Receive Nonlinear Processor). Under difficult acoustic conditions, the RxNLP can improve full-duplex operation and hence the overall voice quality.

The output of the RxNLP is fed both to the transmit output (TxOut) and into the bulk delay block. The bulk delay block compensates for the buffering delay at the RxOut and TxIn interfaces as well as any other non-acoustic system delays in the path between RxOut and TxIn. The output of the bulk delay is fed to the adaptive filter.

The adaptive filter estimates the echo and subtracts it from the TxIn signal to form the residual signal.

The residual signal is fed to the noise reduction block. This noise reduction block removes background noise and therefore improves the signal to noise ratio of the transmit signal.

The adaptive filter works in conjunction with the bulk delay monitor, which monitors and adjusts bulk delay in situations where the bulk delay is unknown due non-deterministic audio drivers.

The output of the noise reduction block is fed into an equalizer. The equalizer is used to flatten out the frequency response of the transmit channel. This may be necessary due to the acoustics of the hands-free device and due to the characteristics of the microphone itself.

The output of the transmit equalizer is fed into the transmit non-linear processor (TxNLP). The TxNLP increases the echo attenuation by attenuating the residual by a variable amount based upon the talk state. The TxNLP block also includes a comfort noise generator.

Automatic Gain Control (AGC) is provided to help boost lower level speech signals in hands-free environments. The compute gain block computes the AGC gain. The output of the TxNLP is fed into the AGC gain block, which provides gain or loss depending upon the residual signal level. The output of the AGC is fed to the TxOut output of the AEC.

In the multi-microphone case, there is still a single receive path but there is one transmit path per microphone.
In the case of multi-microphone noise reduction, there is a single receive path, a complete transmit path for the primary microphone, and a partial transmit path for the secondary microphone. In this case, there are two transmit inputs (one for each microphone) but only one transmit output containing the echo cancelled and noise reduced signal.

speech

Significant Upgrades

"We have made significant changes to our core algorithm in order to boost efficiency. HD AEC operate in a higher audio bandwidth. We have improved implementation by simplifying and providing straight forward API."

Acoustic Echo Cancellation

Full-Duplex Operation

Even in challenging conditions such as unbalanced speech levels, close speaker to mic proximity, background noise, double talk, and echo path changes, AEC HD achieves good full-duplex performance.

Enhancements

  • Bi-directional NLP: Handles unbalanced speech levels of more than 18dB apart.

  • Achieves full-duplex performance even in close mic to speaker proximity: Automatic gain and level controls adjust levels automatically.

  • High Echo Return Loss (ERL) ratio: Ability to handle long tail lengths, speaker to microphone loss/gain, and feedback.

  • Enhanced double-talk detection /double-talk handling.

  • Fast reconvergence: Ability to adjust for echo path changes which can occur when someone moves inside the room, passes an object across the table, or enters or exits the room.

Function APIs

API function call summary

HDAEC_
AEC_ADT_create(..)         Create and initializes an echo canceller
AEC_ADT_createMMIC(…)         – channel (single mic, multi-mic, dual-mic with noise reduction)
AEC_ADT_createDMNR(…)         

AEC_ADT_apply(…)           Executes cancellation function 
AEC_ADT_applyMMIC(…)
 

AEC_ADT_applyTx(…)            Executes Transmit Only (for applications that require split tx/rx processing
AEC_ADT_applyRx(…)            Executes Receive Only (for applications that require split tx/rx processing
AEC_ADT_control(…)            Modify AEC parameters. Obtain status.
AEC_ADT_controlMMIC(…)
 

AEC_ADT_delete(…)             Deletes an echo canceller channel
AEC_ADT_deleteMMIC(…)

Translate »