人们在远距离实时语音通信(RTC)时,从拾音、编码、传输到放音的双向链路过程中往往会受到各种各样影响语音质量的干扰,其中声学回声就是一种典型干扰。声学回声(Acoustic Echo),通俗来讲就是在实时通信中由于麦克风和扬声器的耦合,用户听到了传回来的自己刚才说过的话。
如图1所示,B端用户的讲话被麦克风拾取后通过网络传输到A端,A端扬声器将来自B端的讲话播放出来,同时A端的麦克风又拾取了扬声器播放的声音,又传回B端通过扬声器播放出来,假如对回传的语音不做处理或者处理不好的话,这时B端用户就会听到自己的讲话。相信大家在使用一些会议通信软件的时候偶尔也曾经历过这个情况。
声学回声是严重影响语音通信品质的一种突出干扰。
图1 声学回声的产生示意图
声学回声消除(Acoustic Echo Cancellation, AEC)是RTC必备的功能,是经典3A算法之一。一般情况下,我们将回声分为线性回声和非线性回声,通过自适应滤波来处理线性回声,通过后滤波算法处理非线性回声。
自适应滤波主要以LMS、RLS、Kalman及其变体为主,其优点是复杂度较低,并且具有较高的鲁棒性;其缺点是无法处理残余的非线性回声以及双讲情况的滤波器发散问题导致估计的语音失真。目前,我们更关注非线性回声的处理。引起非线性的原因有很多,如硬件的声学腔体设计、扬声器的质量、网络传输的丢包、CPU的调度等。
因为不是所有设备都能够提供理想的声学腔体,或者设备里包含几百上千的扬声器,我们需要一套鲁棒的AEC算法,来尽量覆盖大部分的设备情况以及复杂的声学环境,做到消除回声,提供更好的实时通信中的语音质量。典型的回声处理过程如图2所示。
图2:典型回声处理流程
本次参与项目总结论文“Multi-Task Deep Residual Echo Suppression with Echo-aware Loss”已被 ICASSP 2022 接收。该论文提出了一种自适应滤波+神经网络后滤波的多任务学习框架。
- 论文题目:Multi-Task Deep Residual Echo Suppression with Echo-aware Loss
- 作者列表:张是民,王子腾,孙佳耀,付艺辉,田彪,付强,谢磊
- 论文原文:https://arxiv.org/abs/2202.06850
|| 背景
声学回声消除(Acoutic Echo Cancellation,AEC)旨在利用参考信号,消除麦克风信号中的回声。回声消除算法的最佳目标是做到回声零泄露以及目标语音不失真。当然,由于噪声在声学环境中也是不可避免的,因此有的时候也需要兼顾噪声处理。
在实际系统中,线性滤波器对于回声的消除能力有限,特别是在延迟出现抖动、扬声器和录音设备存在非线性的场景,为此还需要级联残余回声抑制模块。深度神经网络有强大的非线性拟合能力,因此近期文献也大多集中于利用深度学习作为后滤波模块处理残余回声。
本次评测以主观听感(Mean Opinion Score, MOS)为主要指标,同时兼顾字识别率(Word Accuracy, WAcc)来衡量AEC算法对语音识别性能的影响。相比于历届评测,本次测试集主要增加了包含手机在内的多种声学环境。手机相比于PC等设备,麦克风和扬声器间距更小,且cpu调度相对pc设备更灵活,回声消除难度更大。采样率也从之前的16kHz(宽带)变成48kHz(全带),这对于神经网络来说意味着同等窗长下具有更高的建模复杂度。故此次采用了一种自适应滤波+神经网络后滤波的多任务学习方案。
|| 基于GFTNN的后滤波
图3为神经网络后滤波模型——Gated Convolutional F-T-LSTM neural network (GFTNN) 。结合残余回声抑制的任务特点,在输入特征上我们拼接了麦克风信号、线性滤波器输出信号以及线性回声组成三路信号的复数频谱,为模型提供更高信回比的输入[3],在输出目标上我们选择分别映射近端干净语音的实部虚部。
图3:GFTNN post-filter
近期很多深度学习信号处理的文献基于卷积循环网络(Recurrent Convolutional Neural Network)即编码器-循环神经网络-解码器结构进行改进,对编码器解码器增加门限模块,使用时频循环结构(Frequency-Time-LSTM, FTLSTM)以提高建模能力,其特点主要是在频域维度做循环,出发点是符合我们观察频谱的习惯:不仅关注时序上的语音变化,也会关注同一时刻不同子带之间的关系。
|| 回声感知损失函数
目前在回声消除任务上,大家一般会参考做降噪的经验,选择MSE或者SI-SNR去迭代优化模型,自然也有很多工作对这些代价函数进行改进,比如同时优化幅度和相位。
也有基于不同尺度的loss做优化,比如同时使用SI-SNR和MSE,再用不同的系数超参控制加权。我们的出发点是利用回声信号,对每个时频点做加权,即回声占比越多,对应的加权就越大。也可以理解为根据信回比自适应的调整加权,只不过是TF-bin级的。为此回声感知损失函数(Echo-aware loss)定义如下。
这和以往对于训练好的模型调整mask有所区别,并不会造成人工干预带来的损失。
|| 多任务学习:可导VAD
除了增大回声加权来提高回声抑制量,为了“感知”回声,让网络学习到区分语音帧和非语音帧,对于非语音帧直接置0,对于语音帧正常处理,同样,对于网络判断错误的语音帧进行惩罚,是不是能够减少过度抑制,并且在无近端语音的时候,进一步提高抑制量呢?基于此出发点,我们利用VAD信息对估计的语音做进一步的“修复”。
可以看出,这种代价函数可以做到对估计的vad信息结合估计出的语音进一步作出优化,网络给出非语音帧符合VAD label时,直接置0,给出的估计不符合VAD label时,利用loss做惩罚。从而进一步提高抑制量和减少过度抑制。
|| 实验与结论
我们在数据上进行了实验评估。如表1所示,我们比较了不同信号组合方式、线性滤波、代价函数以及验证估计模块的作用。实验表明:
- 目前线性滤波结合神经网络后滤波的方案优于全深度模型方案;
- 麦克风信号、线性滤波器输出信号以及线性回声同时作为神经网络后滤波的输入特征会带来更好的性能;
- 收敛性能和追踪性能更好的线性滤波会给神经网络后滤波带来一致性的收益;
- 时延估计模块可以带来更好的听感质量;
- 回声加权的代价函数能够增加回声抑制量并且不会对语音过度抑制;
- VAD模块能够减少后滤波模型的过度抑制,从而提升后端识别效果。
表1:不同方法的回声抑制性能
表2展示了参与项目的最终结果。关于方案的具体细节可以参考我们发表的相关论文[1]。
表2 项目结果
更多样例:https://github.com/echocatzh/GFTNN
参考文献:
[1] S. Zhang, Z. Wang, J. Sun, Y. Fu, B. Tian, Q. Fu, L. Xie, "Multi-Task Deep Residual Echo Suppression with Echo-aware Loss", to appear in ICASSP 2022.论文下载地址:https://arxiv.org/abs/2202.06850
[2] R. Cutler, A. Saabas, T. Parnamaa, M. Purin, H. Gamper, S. Braun, K. Sørensen, R. Aichner, "ICASSP 2022 Acoustic Echo Cancellation Challenge",to appear in ICASSP 2022.论文下载地址:https://arxiv.org/abs/2202.13290
[3] Z. Wang, Y. Na, B. Tian, Q. Fu, "NN3A: Neural Network supported Acoustic Echo Cancellation, Noise Suppression and Automatic Gain Control for Real-Time Communications, to appear in ICASSP 2022.论文下载地址:https://arxiv.org/abs/2110.08437