WebRTC回声消除(1)
语音通话中回声分为两种:
1.电路回声(已经被解决)
2.声学回声
WebRTC源代码中设计了两个回声消除模块:
1.AEC(Acoustic Echo Canceller):电脑端
2.AECM(Acoustic Echo Canceller Mobile):移动端
AECM:
产生声学回声的原因:
近端说话者的声音被自己的麦克风拾取后通过网络传到远端,
远端扬声器播放出来的声音被麦克风拾取后通过网络又重新发回近端。
加上网络和数据处理等各种延迟的影响,使得近端通话着能够从扬声器中听到自己的刚才说的话,产生回声。
WebRTC中所采用的回声消除器AECM的结构如图所示。其中自适应滤波器起到了最核心的作用,利用抽头系数估计出回声路径,并用误差信号作为反馈区自适应的调节系数。
详细过程:
远端产生信号被麦克风采集------>传送到近端(自适应滤波器保存一定长度的远端信号到缓冲区-干净信号)------>近端扬声器播出,经过多次反射产生回声。回声信号+近端语音进入自适应滤波器(带噪信号)。
带噪信号-干净信号=误差信号
误差信号反馈给滤波器,调节滤波系数的大小,知道误差信号为0,消除回声。