浅析回声消除技术
概述
回声消除(Echo Cancellation)又称回声抑制(Echo Suppression),是电路电话、移动电话、VOIP等语音设备提升语音质量的非常重要的一项技术。回声本质上是自己的声音经过一段时延又传到自己耳朵中,如果回声时延小于10ms则称为侧音(sidetone),时延如果在50ms左右则称为合声(chorus effect),无论哪种回声都严重影响通话双方的主观感受,仿佛在空旷的房间里说话。从回声产生的角度来说分为两类:声学回声(Acoustic Echo)及线路回声(Line Echo),前者是由于声音从远端的扬声器传至麦克风(免提时尤甚)导致,后者是由于线路上阻抗不匹配引起的信号反馈所产生,具体来说是ADSL
Modem和交换机上存在的2-4线转换电路不匹配把一部分信号反馈回来形成了回音。但消除的算法是比较通用的,即处理声学回声的算法也可处理线路回声或是混合回声。
图1声学回声图例(图片来源Octasic官网)
图2 线路回声图例(图片来源Octasic官网)
基本的处理思路如下:
1. Room A的音频处理系统接收到RoomB的声音
2. 声音被Sampling,注意并不是音频AD转换的采样,而是数字化的采样,目的生成回声消除参考
3. 随后声音被送至Room A的音箱中
4. Room A的声音连同Room A扬声器的声音(也即是RoomB的声音)一起被Room A的话筒拾取
5. 声音被送到回声消除器中,与原始的采样进行比较,减去Room B的声音
在下图所示中,far end即是Room B的信号,右侧的电话机可看成是Room A的声音采集播放系统,由此可见,回声消除器是一种自适应滤波器,将远端参考信号经过某种特定函数(该函数称为回音路径函数)滤波后,与近端信号相减,实现了回声的消除。其中该滤波器是随远端信号和近端信号的特征进行自适应调整的,而非简单的确定性信号的FIR/IIR。故难点就是在于滤波器模型搭建,也即函数的求解。
图3 回声消除器(图片来源Wiki)
原理
自适应滤波器是将输入和输出信号的统计特性的估计为依据,采用某种特定的算法自动地进行滤波器系数的调整,使其达到最佳滤波特性的一种算法。在数字信号处理技术广泛应用的今天,离散域自适应滤波器更为常见,就是由一组抽头延迟线、可变加权系数和自动调整系数组成,下图即是一个离散域的自适应滤波器。
图4 自适应滤波器(图片来源Wiki)
对于回声消除器来说用Wiener滤波器较为合适,该滤波器以最小均方误差为准则,其系数可以由Wiener-Hopf方程来求得,为了实时求解自适应滤波器系数,用最小均方算法来求解,该解接近方程的近似解。对比以上两图,可知输入信号x(n)为far end信号,经过回音路径函数的系数抽头w(n),得到输出函数又称期望响应d’(n)为echo信号,把d(n)减去d’(n)得到的代价函数e(n)来对w(n)进行自适应调整。值得注意的是该阶段是自适应滤波器收敛阶段,d(n)应该不包括A的语音,即虽是实际Room A采集的音,但要求是从A扬声器中采集到的但不包括从A话筒中得到的,否则无法计算代价函数e(n)。这就要求回声消除算法收敛足够快,当A还来不及说话时就已经收敛好了,并且之后系数一定要稳定,不受A说话干扰。另一个值得关注的即是回音路径可能会发生变化,一旦出现变化自适应滤波器需要重新开始收敛来逼近新的回音路径函数,这就要求自适应滤波器对信号有所判断并随时保持更新状态以保证能够追踪其变化,这两项特性便是设计上的两大难点。此外,这里仅列出最小均方差算法,对于实现来说仅仅是最简单且最成熟的,但对声学信号的复杂性来说可能结合更多数字信号处理的方法如子带信号处理或基于功率谱相关性等等,在此就不详细展开了。
实现
在标准制定方面,ITU-T G.168(Transmissionsystems and media, digital systems and networks)描述了回声消除器的设备设计结构与测试方式,并在附件中提供了回声路径模型与回声路径性能的测量方法。主流的商用音频解决方案中有三种实现该算法的方式,一是ASIC硬件实现,一是基于DSP的实时回声消除软件实现,一种是基于PC机的非实时回声消除软件实现。
提供回声消除功能的ASIC厂商有Fortemedia(美国),其芯片FM1182AEC可达60db,FM2010也广泛应用在VoIP场景;OKI(日本),其代表芯片为MSM7731,应用于车载电子;Microsemi(美国),其代表芯片有ZL38065、ZL38070VEC,特别适用于IP-PBX、无线基站和移动交换中心;Acoustic Technologies(美国)。
基于DSP软件的回声消除算法实现有如下厂商:Octasic(加拿大),可提供从专业芯片、板卡到DSP算法的完整方案;Spirit DSP(俄罗斯);Adaptive digital(美国),除了DSP还提供语音质量检测手段、VoIP引擎及SIP协议栈;GAO Research(加拿大),专做嵌入式VoIP相关软件;Cambridge Silicon Radio(英国);松西科技(中国),主要是在TIC64X/C67X/C5X DSP DSP平台上实现。
基于PC机软件的回声消除算法实现代表如下厂商:Microsoft(美国),Windows SDKv7.0有专门算法库,该API除了支持声学回声消除之外还支持麦克风阵列处理和音源定位,最新的版本甚至还有语音识别库(配合Kinect使用),除此之外Windows的DirectSound中也有相关算法封装,可以通过IDirectSoundCaptureFXAec8接口来设置和得到AEC参数;Google(美国),开源的WebRTC,其中语音编码与处理是通过收购了瑞典Global IP
Solutions的整套算法引擎而实现的,该技术能够更好的适应网络抖动丢包对语音质量产生的影响;Speex,一套开源的语音编码和语音处理实现代码,BSD license,不过其AEC大家反应效果一般;赛声科技(中国),在Windows、iOS、Android平台都有相关产品。
总结
虽然回声消除在语音通讯、视频会议或其他VoIP场景中经常被人提及,然而更多工程师确实知其然不知其所以然。作为数字信号处理的一种典型应用,不该因其技术成熟而等闲视之,毕竟原理相通但技术实现效果的差异巨大,出众者凤毛麟角。坊间传闻Polycom也是凭借音频领域的领先性才一举坐上会议电视设备生产商第一位的宝座,并一直保持着霸主的位置。
参考资料:
1.
http://en.wikipedia.org/wiki/Echo_suppression_and_cancellation#cite_note-tmcnet-3
2.
http://www.octasic.com
3. Eneroth, Peter, StereophonicAcoustic Echo Cancellation Theory and Implementation Thesis. Lund University.
4. Simon Haykin, Adaptive FilterTheory, Fourth Edition.