导读:回声消除是音频通话中最为复杂的模块,对于音频通话质量起到至关重要的作用。一直以来,网易云信致力于提供良好的回声消除性能,为用户提供优异的音频通话质量。本篇文章中网易云信音视频开发专家将和大家共同回顾回声消除的历史,分析回声消除的现状,并展望回声消除进一步发展的方向。
文|网易云信音视频开发专家
历 史
回声是一种物理和生理共同作用产生的声学现象。原始声被反射后反射声和原始声的延时超过100ms时,人耳可以听到分离的两个声音,一般在空旷的山谷这一类地方容易听到回声。
通话中听到的回声一般有两种,线路回声和声学回声。
线路回声是因为在长途电话线网络中,存在二四线转换的问题。本地电话—般是用二线电路连接到中心局的,而长途线路的话,需要用四线电路,这两者之间需要用混合变换器进行连接。混合变换器的引入使得传输的信号在混合变换器阻抗不匹配的情况下产生电路回声。
而我们现在在数字通话中提到的回声一般是指声学回声,声学回声的原因是扬声器发出的声音被麦克风获取后传回远端,这样一来远端说话者就可以听见自己发出的声音。
声学回声问题在早期电话应用中并不凸显,主要是因为使用低延时的模拟技术并且通讯距离普遍较短。20 世纪中叶以后,由于卫星系统发展的需要提出了回声消除问题,曾经采取的解决一种方法是使用切换的方式来隔断回音信号,这种方法虽然能够有效地隔断回声,但是却无法平常一样自然地交谈。
随着通话回声日益受到重视,人们采取了各种各样的措施来对回声进行抑制或消除。上个世纪六十年代以前,由于客观条件和技术的限制,人们采用一种叫回声抑制器的方法来实现回声消除。
回声抑制就是对回声进行一定程度衰减以提高通信质量,但是回声抑制器只对很小的时间延迟才有良好的效果。随着卫星通信和IP 电话的发展,出现了传输时延超过100--300ms的电路,对于这么大的时延,回声抑制器的工作效果很差,于是人们开始研究新的回声消除技术,基于自适应滤波器的回声消除技术逐渐成为主流方向。
从20世纪80年代以来,随着回声消除技术从简单的回声抑制器到自适应回声消除器的发展,国际电联ITU先后制 定了消除线路回声的G165(Echo Canceller),消除音频终端回声的G167(Acoustic Echo Canceller)及消除数字网络回波的G168(Digital Network Echo Canceller)等回声消除器相关标准。
现 状
理论上来说基于自适应滤波器架构并不是回声消除的唯一选择,但是由于技术的限制和历史沿袭使得目前的回声消除基本都是以自适应滤波器架构为基础。
从回声消除的工作原理来看,它是一个典型的系统辨识应用,辨识回声路径,利用参考信号和回声路径的卷积产生回声的估计,然后从混合输入中去除回声估计。使用自适应滤波器进行系统辨识是一个很自然的选择。
经过长时间的技术发展,研究人员在自适应滤波器的性能研究上取得大量成绩,对于回声消除常用的自适应算法特性了解的比较深入。
一些常用自适应滤波器算法特性如下:
1. 最小均方(LMS,least-mean-square)算法,是随机梯度算法族 中的一员。该算法在随机输入维纳滤波器递推计算中使用确定性梯度,其基本原理是使误差信号的均方误差最小,它的核心思想是用平方误差代替均方误差。LMS算法简单,运算量小,很容易在通用的数字信号处理器上实现,但是LMS算法的收敛速度依赖于输入信号矢量的自相关均值的特征值扩散度,扩散度很大时,收敛速度将很慢。对于相关性较强的语音信号,LMS算法的收敛速度会很慢。
- 为了克服经典的LMS算法收敛慢和对噪声较敏感的缺点,人们将滤波器系数矢量用输入信号的功率进行归一化,得到归一化最小均方(NLMS)算法。归—化技术减少了收敛速度对输入信号功率的依赖性,其代价是计算量增加。但阶数增大时,增加的计算量相对较少。简言之,在计算复杂性方面,NLMS算法的计算效率与LMS算法相当。同时,当输入信号为语音时,NLMS算法比LMS算法的收敛速度快,且稳定性好。因此,NLMS算法比LMS算法更适合于回声消除器的应用。
3.PNLMS算法及其改进算法是对NLMS算法步长控制的修改。它的收敛速度较快,对稀疏回声路径很有效。IPNLMS算法是对PNLMS算法的改进,对回声路径 稀疏性的要求不高。
4.AP算法可以看成是NLMS算法的扩展。由于使用了更多的输入向量,收敛速率得到比NLMS算法更快的收敛速度。AP算法的失调与输入矢量数(即AP算法的阶数)无关。随着阶数的增加,收敛速度加快,但是收敛速度加快的幅度在减小。增加阶数来提高收敛速度是以增加算法的计算复杂度为代价的。AP算法的计算复杂度比NLMS高很多。AP算法的收敛速度和计算量介于 NLMS算法和RLS算法之间。
5.和随机梯度算法不同,RLS算法属于最小二乘算法。RLS算法的收敛速度比 LMS算法快—个数量级。随着迭代次数趋于无限,RLS算法的额外均方误差收敛于零。但是,因为用了矩阵求逆计算,RLS算法的运算量大,对于冲激响应超过百毫秒的回声信号的消除问题来说,其运算量大难以实现。
目前的回声消除模块大部分都是基于以上某一类算法或者其变种,在较为接近理想情况下,现有自适应滤波算法均能得到较为满意的回声消除效果,然而这只是实际通话中多数时间下的一个理想状态,实际通话情况复杂的多。
本端噪声干扰,信号路径中的非线性变换,双方同时讲话,非实时操作系统带来的数据延时抖动等,都是一个通用回声消除模块需要解决的问题。
例如当存在明显的近端声音时,基于现有各种自适应滤波算法的回声消除器的性能将发生恶化,甚至不能保证自适应滤波算法的收敛。这就是回声消除在实际应用中的必须解决的关键问题,通常称为双端发声(Double-talk)问题。当前针对这一情况,最常用的方法就是加入双端通话检测器(Double Talk Detector,DTD),当双方同时讲话时让自适应滤波器锁定或者慢变来防止自适应过程发散。
如何在实时通话情况下对这些附加问题上给出满意的逻辑和精细调整对于产品化非常重要,也是目前导致产品性能差异的主要原因。当前商用产品中的回声消除模块多数情况下都能取得满意的效果,然而在某些特殊情况下都会有处理不善的地方,对更高通话品质的要求依然是研究更好的回声消除模块的动力。
未 来
由于通话回声问题的复杂性,对回声消除模块效果提升的需求始终存在。当前方案的固有问题使得前述一些关键问题很难取得突破性进展。由于近年来设备算力的提高以及技术的发展,一些新的方案也被提出。以Volterra滤波器为基础的非线性滤波器解决方案,基于ICA和深度学习的回声消除算法研究等也开始出现,基于线性自适应滤波器架构的回声消除算法面临挑战。
然而还没有另外一个架构能像当前的自适应滤波器架构一样被广为使用,短期内回声消除算法依然还会作为一个常见技术话题存在。
网易云信在回声消除逻辑改善和新方案研究上持续推进研究,致力于为用户提供更好的音频通话效果。
*各渠道文章转载需注明来源及作者
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。