Echo Cancellation, Art or Science? Part II
- On November 18, 2016
- Acoustic Echo Cancellation, AEC
Background
In the previous post on acoustic echo cancellation we discussed the importance and the challenge in handling of the echo path. In this post we will discuss a different aspect that echo cancellation algorithm must handle.
It is not rare that users change the setting of their audio device during a call. For example they can start the call while using headset and then unplug the headset and continue the call using an external speaker & microphone. Alternatively, a user might start a call from a mobile phone while in a “speakerphone” mode and then during the call cancel the speakerphone and use the “headset” mode.
Any such change introduces a challenge to the AEC algorithm since the echo path and echo coefficients that were detected a minute ago, with the old settings, are suddenly become invalid. If due to the change in settings echo is not generated any more or alternatively it suddenly appears, then the AEC algorithm must quickly realize it in order to provide echo cancellation while avoiding any unnecessary distortion to the audio signal.
As a general term, we call the collection of all these scenarios – “Invalidation”. Invalidation that is not handled correctly will cause strange behavior during a call.
Invalidation – example
You start a call using external microphone & speaker and generate echo. Then during the call you start using headset. Once you plugged-in the headset, you stop generating echo. The AEC algorithm must immediately realize this change and stop modifying the audio signal – since there is no more echo that should be cancelled. But, if your AEC algorithm did not detect this change on time, it might continue to think that echo is generated and moreover, the AEC might even suppress audio during double-talk. The result might even be a half-duplex call – i.e. only one person can talk at any given moment.
Now, that we understand the importance of invalidation, let’s see ways for resolution.
Invalidation – the easy solution
Some AEC solutions, especially the ones that are bundled with specific hardware, handle this problem the easy way. The hardware simply notifies the AEC that the audio device setting were changes (and usually also the nature of the change). All the AEC has to do it to accept the new settings.
Invalidation – the robust solution
A robust AEC needs to operate in scenarios that are not controlled and moderated by specific hardware. For example, a robust AEC needs to allow the user to freely plug/unplug any audio device, change audio device settings etc. Such a robust AEC must be equipped with automatic mechanisms to quickly realize that invalidation has occurred and quickly analyze the new settings.
In case you were wondering … SoliCall offers a robust echo cancellation software that is capable to efficiently handle invalidation scenarios and therefore does not impose any limitation on the users/usage.
In the next posts we will discuss additional challenges for AEC algorithm. We believe that by the end of this series you will understand why developing a robust & efficient AEC is a big challenge.