技术分享| anyRTC回声消除算法进化

Posted anyRTC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享| anyRTC回声消除算法进化相关的知识,希望对你有一定的参考价值。

本文将从基础概念、经典算法、主要挑战,以及人工智能回声消除技术探索等方面,分享anyRTC在 AEC 技术方面的实践及效果。

一.什么是回声消除

回音消除一直是语音通信的难点,最早的回声消除是从电话兴起的时候就有了,电话机的硬件中含有回声消除的硬件模块(HW-AEC),到了现代,软件中的通讯场景越来越多,相对应的软件回声消除算法(Soft-AEC)也迅速应用起来。

从通讯回音产生的原因看,可以分为声学回音(Acoustic Echo)和线路回音(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancellation,AEC)和线路回声消除(Line Echo Cancellation, LEC), 声学回音是由于在免提或者会议应用中,扬声器的声音多次反馈到麦克风引起的(比较好理解);线路回音是由于物理电子线路的二四线匹配耦合引起的(比较难理解),所以本讲只讨论声学回声(包括线性回声信号和非线性回声信号)的消除原理,即:远端讲话者(主播 A 或听众 A)的声音信号在传输给近端(听众 B 或主播 B)后,在近端设备的扬声器播放出来,经过一系列声学反射,被近端设备的麦克风拾取,又传输给远端(主播 A 或听众 A)的现象。

声学回声将导致远端讲话者在很短时间内,又听到了自己刚才的讲话声音。声学回声的产生过程如图所示。

这个回声如何才能消除掉呢?那就是使用 Soft-AEC(软件声学回声消除,下面统称为AEC)技术,消除近端设备麦克风采集信号中包含的回声 ; 保证远端讲话者收听到的声音中不存在回声信号 ;提升用户的通讯体验及会议室品质。
使用 AEC 技术后,两端声音传输过程改变为如图 2 所示,进而从底层保证会议场景下声音的干净度。

二.常用经典算法

一个完整的回声消除系统,包含以下几个模块:
1.时延估计(Time Delay Estimation, TDE) 模块
2.(线性)回声消除(Linear Acoustic Echo Cancellation, AEC) 模块
3.双讲检测(Double-Talk Detect, DTD) 模块
4.非线性残余声学回声抑制(Residual Acoustic Echo Suppression, RAES) 模块

其原理框图如图所示。

滤波器有两种状态:

  • 滤波:

  • 自适应滤波器系数更新(NLMS):

自适应滤波器有三种工作模式(通过DTD双讲检测):

  • 远端语音存在,近端语音不存在:滤波、自适应滤波器系数更新
  • 远端语音存在,近端语音存在:滤波
  • 远端语音不存在:什么都不用做

Webrtc中的回声消除模块,已包含:双讲检测技术(语音活动检测,区分希腊佛中是否存在双端讲话)、自适应滤波技术(主要性能指标:跟踪性能、抗冲激性、鲁棒性和计算复杂性)、后处理(消除自适应滤波器的输出误差)。

下面我们基于webrtc的回音消除算法做了一个测试,内部也做了一些优化,目前这个算法可以应用到多种平台,像windows、linux、androidios、arm平台都可以支持,大家可以测试下,效果还是比较明显,基本上在很短时间内就可以完成回音收敛算法的学习。

三.人工智能回声消除技术探索

上面介绍了传统AEC算法的原理,近年来,AI深度学习在语音信号处理领域的应用越来越多,anyRTC早在3年前就已经将AI深度学习应用于语音降噪中,并取得了非常良好的效果,广受用户的好评。我们想着能不能利用深度学习来改进AEC传统算法中的一些痛点,比如噪声抑制效果不明显,双讲效果差等问题。早期有很多RNN的算法,但是效果都不是特别理想,很高兴看到的是近年来 NLP 领域最热门的 Transformer 与 AEC 算法融合的进行了探索。

Transformer 由 Google 团队于 2017 年 6 月提出,抛弃了传统 CNN 和 RNN,整个网络结构由 Attention 机制组成。它带给业界的重大突破在于:解决了 RNN 依赖历史结果导致模型并行能力被限制的问题与顺序计算信息丢失的问题。

深度学习的本质就是构建深度模型来拟合输入与输出之间的映射关系,并且通过所构建模型的不断自我调整来使得模型输出与目标的误差越来越小,直至收敛稳定。对于 AEC 算法来讲,深度网络的输入包括参考和麦克两路信号,输出是一路。下图是anyRTC基于 LSTM 深度学习模型处理之后的双讲效果。

可见,基于 LSTM 的AEC 深度学习方法结果优于传统方法。通过结合深度模型强大的拟合能力与会议场景相关的数据集,为非线性回声、混响、噪音、“双讲”等各种场景的性能带来提升。

以上是关于技术分享| anyRTC回声消除算法进化的主要内容,如果未能解决你的问题,请参考以下文章

回声消除-理论篇

回声消除应用平台

回声消除技术

WebRTC回声消除

回声消除(Acoustic Echo Cancellation)中遇到的几个常见问题思考

Android 回声消除