In a general VoIP software or videoconferencing system, suppose we have only A and B two people on the phone,
First, the sound of a is passed to the b,b and then the horn is released.
The mic of B then collects the sound from the speaker and passes it back to a,
If the delay in the transmission is large enough, a will hear what he has just said, and that is the echo.
The function of the Echo Canceller is to process the sound collected by B at the B end, and to remove the sound from the sound contained in the
So a will not hear what he said.
The two sound signals passed to the Echo Canceller must be synchronized very well,
That is, in the B-side received a said words, to the sound data to the Echo Canceller for reference, and then passed to the sound card, sound card playback,
Here is a delay, then B again collected, and then passed to the Echo Canceller, compared with that reference data, from the collected data to the frequency and reference data of the same part of the elimination.
If the two signal passed to the elimination is not well synchronized, that is, two signals can not find the same frequency portion, there is no way to eliminate.
In the general VoIP software, receiving the other's voice and uploading to the sound card is played in a thread,
And the local sound is collected and sent to the other side and in another thread,
The acoustic echo Canceller also needs to play the data in the thread as a reference while the echo cancellation of the collected sound.
It is very difficult to synchronize the data in these two threads, because the adaptive filter in the acoustic echo Canceller will diverge in a slightly different step,
Not only eliminates the echo, but also destroys the original sound collected, making the damaged sound difficult to distinguish.
Acoustic echo is mainly divided into the following two kinds:
1. Direct echo: The sound produced by the speaker goes directly into the microphone without any reflection
2, indirect echo: The sound from the speaker after several reflections, and then into the mic
For the second kind of echo, it is more difficult to deal with the characteristics of multipath and time-varying.
There are two ways of echo cancellation:
First: Through hardware implementations,
There are many mobile phones are doing this, there are professional chips, but only support 8khz,
If high quality sound is required, the basic implementation is not.
The second kind: through the software realization,
Qq,msn,skype a lot of software with call functions, now has the function of echo cancellation (need to be relatively high version, the lower version may not),
But the implementation code is not, the open source Echo elimination code only Speex and WEBRTC.
There are two common open source AEC: Speex and WEBRTC
WEBRTC is more powerful than Speex, for the following reasons:
1,WEBRTC algorithm module with echo time delay estimation
2,WEBRTC with Neteq module
3,WEBRTC core is gips, cause you know.
Echo Cancellation Overview