音频3A回音消除连麦场景实践

在连麦等实时交流场景需要对采集音频进行前处理,音频前处理主要包括声学回声消除(acoustic echo cancellation,AEC),自动增益控制(automatic gain control,AGC),自动噪声控制(automatic noise control,ANC),简称音频3A技术,该属于连麦技术中关键核心技术,前期该技术完全基于webrtc开源实现,其底层实现和配置复杂,且处理效果落后于竞品,在线上使用中暴露出较严重的缺点和不足:

•对于超过16k采样的音频,采用了分频处理的方式,高频部分处理简单;

•时常出现回声和闪避现象

•配置复杂,且各端不统一,不同音频模块的使用出于探索阶段

•双讲处理吞音严重

1. 改进总体方案

针对完全依赖开源webrtc方案中出现的不足,本方案重点针对AEC,提出基于webrtc和speex重构和调优的方案,总体方案如下图所示:

音频3A回音消除连麦场景实践

完整的AEC解决方案包括:

1.延时估计模块

2.线性滤波模块

3.非线性残留回声消除模块(后处理模块)

2. 延时估计模块

在AEC处理前,需确保远端参考信号和回声的延时同步,否则无法消除回声,延时估计模块是 确保AEC模块能够正常有效工作的核心算法之一。

延时估计模块工作流程如下伪码表示:

音频3A回音消除连麦场景实践

在快速傅里叶变换之后,得到远端信号和近端信号的频谱far_spectrum和near_spectrum,其中远端频谱将被存储起来作为候选匹配项目。选择频谱中最重要的32个频段(12-43),算法估计了频谱的均值threshold_spectrum并设置其为门限。当某个频段值大于门限时,将该位设置为1,反之设置为0,这样便得到了远端信号和近端信号的是二值化的频谱。通过求解两者的按位异或值,选择相似度高的候选远端信号并计算对应的低延时。

3. 线性滤波模块

线性滤波模块使用speex的mdf算法,主要包括线性滤波结构、双讲控制和最优部长控制三部分。

3.1线性滤波结构

线性滤波器采样了基于speex的MDF(Multidelayblock frequency domain adaptive filter)结构,其本质是将FIR滤波器分割的频域LMS滤波。

音频3A回音消除连麦场景实践

MDF主要包括三个方面:

1.将输入信号分块处理,使用Overlap-and-Save方法计算卷积的分块结果;

2.分块卷积转入频域计算,使用FFT将计算复杂度从O(N^2)降到O(N\log_2 N);

3.进一步将FIR滤波器系数进行分段,一组卷积分解为多组卷积之和。输入和输出的分块长度变短,大大减小滤波器时延。

3.2滤波器双讲控制

双讲控制是为了在双讲(double-talk,DT)的时候,使滤波器能够保持较好的跟踪性能。speex mdf使用了双滤波器结构,包括一个迭代更新的自适应Background Filter, 和一个非自适应的Foreground Filter。在自适应滤波器性能变坏、甚至发散时, AEC使用Foreground Filter的结果,并且重置Background Filter。在Background Filter 性能变好时,将其参数下载到Foregound Filter。这种双滤波器结构,可以实现隐式的双讲检测。在双讲的情况下,Background Filter无法收敛,其更新结果不会保存下来,也就实现了区分双讲和非双讲的目标。双滤波结构如图如下图所示:

音频3A回音消除连麦场景实践

mdf使用Foreground Filter和Background Filter输出的残留功率之差来进行判别:

音频3A回音消除连麦场景实践

其中Sff是Foreground Filter与麦克风信号之差的功率,See是Background Filter与麦克风信号之差的功率, Dbf是两个Filter输出信号之差的平方。于是判别公式可以写成:

音频3A回音消除连麦场景实践

如果Background Filter过于发散,则应该重置,可将其重置为Foreground Filter。

3.3最优步长控制

MDF使用了可变步长,并通过当前的远近端信号,推导出最优步长。最优步长等于残余回声方差与误差信号方差之比:

音频3A回音消除连麦场景实践

为了计算残留回声的功率,定义泄漏因子\eta, 取值在0~1之间:

音频3A回音消除连麦场景实践

泄漏因子通过递归平均更新:

音频3A回音消除连麦场景实践

4. 非线性处理

在整个回声消除过程中,由于自适应滤波器的局限以及劣质的扬声器和较差的声学设计引入的非线性谐波失真,导致线性AEC处理后仍有回声残留, 非线性处理(none-linear processing,NLP)用于消除这类残留回声,因此也称残留回声消除块。NLP模块主要包括频谱相关性计算和频谱增益计算。频谱相关性计算:正常情况下,远端信号与近端信号不相关,但是与回声信号是相关的,通过计算各路信号之前的相关性,可以估计残留回声的大小。

音频3A回音消除连麦场景实践

式中dfw(n,f)为近端信号, xfw(n,f)为回声信号, efw(n,f)为线性滤波器误差信号, gamma为平滑因子,值越大表示越平滑,更新速度越慢,默认为0.9。

音频3A回音消除连麦场景实践

hNlXdAvg 用来表示近端信号和回声信号的相关性,该值越小,相关性越强,近端没信号,该值越大;hNlXdAvgWB也用来表示近端信号和回声信号的相关性,远近端相关性越强,该值越大, hNlDeAvg表示近端信号跟误差信号的相关性,值越大相关性越强, hNlXeAvg用来表示误差信号和回声信号的相关性,该值在近端讲话,远端讲话以及近端静音的时候该值均趋近于0。near_level表示近端讲话水平,近端有讲话,该值越大。

频谱增益计算入下图所示:

音频3A回音消除连麦场景实践

5.效果展示

下图为纯回声情况下的aec效果对比,dy_audio为改进的回声消除方案处理效果,对比webrtc处理效果,改进的方案回声消除更干净。

音频3A回音消除连麦场景实践
音频3A回音消除连麦场景实践

6.总结与展望

改进的方案相较于webrtc在纯回声情况下能较好的消除回声,在双讲条件下能较好的保留近端语音,减少音频闪避。但是在回声能量较严重的情况下,效果会有所下降,且对于音乐回声,回声效果效果没有人声理想 ,这些问题都需要后续进一步研究解决。

作者:舒勤军
审稿:何绍富 斗鱼流媒体技术委员会
原文:https://mp.weixin.qq.com/s/wqPt2km2R57ZpxbVspnDZg

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论