聊聊实时音视频中的技术难点:回声消除+噪声消除

2020年8月21日

文 | 菊风媒体引擎资深研究团队

在各个实时音视频互动场景中,回声和噪声对于影响用户体验而言都是很大的问题。音视频正在发展成为互联网线上沟通的必然趋势,在自然的交流环境中,回声和噪声是非常影响沟通体验的。不论是社交、教育、直播场景中的“疑难杂症”或是智能硬件通话中的“痛点问题”还是银行视频客服和企业视频会议的“严格要求”,都与回声噪音有关,因为人对音频都很敏感,声音一旦有任何瑕疵,人耳都会特别容易感觉到,而且难以忍受,这都会直接影响到用户体验及用户留存率。而回声消除与噪声消除也一直是实时音视频的技术难点。

菊风音视频引擎(Multi-Media Engine – MME)是针对 IP实时音视频通信所设计的涵盖音视频QoS处理、音视频编解码、网络打包传以及设备管理的四大模块的专业开发包。开发包具有丰富的音视频技术模块,其中的语音部分就包含声学回声消除、噪音消除等等。

声学回声消除AEC

声学回声是在麦克风采集了近端声音的同时也采集了扬声器发出来的声音,如果没有回声消除模块(Acoustic Echo Cancelation – AEC),对端将听到自己的声音又被传了回来,这就是恼人的回声产生的原理。容易理解,语音通话中,通常声学回声是在用户打开了免提模式,即开启扬声器时产生的,不打开免提模式的情况下一般不需要启用AEC。但是,有时候由于结构设计的问题,尽管没有打开免提模式,听筒上的声音也可能作为回声被麦克风采集到,此时也需要使用AEC。

消除回声就像把红墨水倒进蓝墨水里,混合在一起,然后要求把红墨水从蓝墨水中分离出来,这存在着很大的技术难度。对于采集端来说,无论是近端的声音,还是扬声器播放出来的声音,都是从空气中无差别地采集到的声音。对机器来说,远端信号播放出来的声音和近端的声音是没有任何区别的,就像对水来说红墨水和蓝墨水没有区别一样。回声消除的工作就是要把没有任何区别的远端回声和近端声音分离。AEC算法的基本思路是,参考远端信号将混有回音的近端信号“减去”回声。然而由于Speaker和MIC的模数转换和回声多途效应等因素,回声和远端参考信号具有非线性失真,无法做到完全消除回声的同时确保近端信号质量不下降,因此可能有回声残留或近端信号质量下降或被抑制。

菊风自研的音视频引擎自适应回声消除,可自动适配市场上各类新旧机型,大规模节约调试和部署成本。实际测试表明,AEC能显著改善双端通话的质量,下图是实测的回声消除前和回声消除后的语音质量的MOS(Mean Opinion Score)分的对比,Sig表示信号维度的质量,Echo表示回声消除维度的质量,Ovrl表示总体质量。

噪声消除

除了回声消除,噪声消除也是实时音视频中的必修课。噪声消除是一个十分复杂的技术,不同的环境噪声所需要的处理方法是不同的,纯软件的噪声消除的能力也是有限的,有条件采用带有消噪能力的双麦克风的平台可以获得更佳的消噪质量。

MME主要是通过软件的方式对噪声进行消除,它可以对输出和输入两个方向的语音信号进行处理,即对近端信号和远端信号处理,前者的调用接口为Mvc_DspSetAnrEnable(),后者调用接口为Mvc_DspSetRxAnrEnable()。如果两个通信端都采用了菊风MME,只要打开一个方向的噪声消除功能即可,同时进行两个处理过程跟一个过程相比不会提高信噪比(Signal-to-Noise Ratio : SNR),也不会提高语音质量。但如果另一个终端采用的是第三方媒体处理模块,且传过来的信号噪音比较大,则需要对远端信号进行处理,因此默认两个噪声消除的接口都打开。从数字信号处理角度来说,对远端信号和近端信号进行噪声消除是没有区别的,下图对比了语音叠加噪音信号经MME处理前后的波形。

从三个方面考查噪声消除模块的性能:其一是信号的保真度,要做到有效的语音信号不损失或微损失;其二是噪声消除了多少的考量,在信号不损失或微损失的情况下,做到尽可能的消除噪声;其三是声音给测试人员的整体感受,最终给测试人员的感受才是最有效的考量。下图是基于ITU-T P.835标准,对叠加了噪音信号经过MME的处理后的MOS分对比。实验表明,在平均-30dbov白噪音情况下,SNR上升12db,MOS上升1.13。

  • Sig - Speech signal rating scale
  • Bak - Background noise rating scale
  • Ovrl - Overall quality rating scale