会议终端回声消除的难点剖析及解决方案

YeeCall作为一款高清语音通信的应用,被越来越多细分行业的用户使用。这些细分行业用户很多身处中小微企业,他们日常需要跟客户或者合作伙伴远程会议,但是市面上动辄几千甚至几万的整套会议终端设备令他们望而却步。他们的需求是方便、完善、通话质量良好的会议终端(例如通话音箱),并且价格不能过高。正是基于大量此类客户的需求,YeeCall开始分析研究会议终端的痛点、难点以及相应的解决方案。

1

会议终端的回声场景分析

目前智能会议终端是远程会议不可缺少的一个工具,相对于手机直接通话,它具有外放音量大,音色饱满,拾音距离远,支持单端多人参会等优势。但是这些用户体验上的优势给音频处理带来了很大挑战,特别是会议终端的回声消除环节,具体表现为:

1. 播放音量远大于近端说话音量(一般情况超过10dB,极端情况达到30dB,如图1所示),双讲时播放声音彻底掩盖掉近端语音。

图1: 智能音箱近端采集信号中近端说话和远端说话的音量对比

2. 通话过程说话人距离终端的麦克风较远(一般1米左右,多人参会时会超过2米),因为会议终端麦克风不能设置非常灵敏(会议终端的麦克风与扬声器的距离通常很小,麦克风灵敏会使得采集到的播放声音出现大量破音,导致回声消除失效),所以近端采集到的说话人语音的音量通常非常小(一般-20dB以下,参见图1的近端语音部分),衰落也非常严重,回声消除很容易对近端语音造成严重误伤。

3. 会议终端为了提高声音饱满度,会对播放声音进行均衡、低音加重等处理,从而导致近端采集到的回声信号包含严重的非线性失真(如图2所示),增加了回声消除难度,导致残留回声更加明显。

图2: 远端参考信号与近端采集到外放声音之间的对比

2

回声消除基本原理及符号说明

为了方便说明不同回声消除算法的性能差异,在此我们简单回顾一下回声消除的基本原理。现有业界普遍使用的开源WebRTC的回声消除(AEC)算法基本原理图如图3所示:

图3: WebRTC的AEC基本原理图

x: 远端参考语音

v: 近端说话人语音

h: 回声传播路径(回声通道冲击响应函数)

y: 近端回声信号

d: 麦克风采集到的信号

e: 输出信号(回声消除后的信号)

ĥ: 估计的回声路径(逼近真实回声路径h)

ŷ: 回声信号的估计值

 

如果会议终端直接使用WebRTC的AEC算法,效果如何?这个我们进行了测试(具体结果参见文章第五部分),当仅有远端单讲时回声消除比较干净,而在双讲情况下存在消音、近端无法打断、滤波器系数剧烈变化导致残留回声等不良情况。

3

会议终端的回声消除测试用例设计

会议终端通常应用于远程会议,在通话过程中,除了常见的单讲(只有一方说话)场景外,会存在大量通话双方交互讨论、相互打断插话、附和,甚至大声争论等场景。为了全面评价会议终端的回声消除效果,我们有必要针对这些场景设置全覆盖的测试用例,特别是对回声消除算法产生很大挑战的场景:远端快速单讲、近端临时打断、远端临时打断、快速双讲(双方语音高度重叠)、近端远距离打断、近端远距离双讲。如果回声消除算法能够在这些高难度场景均获得很好的处理结果,才能保证会议终端具有良好的通话体验。我们根据上述场景利用会议音箱进行通话,并让通话双方按照下面时序说话,在其中一端保存PCM文件(远端声音far.pcm、近端采集声音near.pcm、回声消除结果aec.pcm)。回声很大程度盖过了近端语音),远端参考信号与近端信号的时延为5ms,采样率为16kHz。相应波形如图4所示。

表1:会议音箱通话事件时序

 

图4:会议终端回声消除的高难度语料

4

回声消除效果的客观评价指标

为了衡量回声消除效果,因为单讲和双讲场景对输出信号e(n)要求不一样,只有近端单讲时要求e(n)与麦克风采集信号d(n)尽量一致,只有远端单讲时需要对e(n) 尽量抑制,双讲时需要保持近端语音尽量一致同时抑制回声,所以我们对单讲双讲部分需要使用不同指标进行评价。

因为在实际采集的通话音频中,无法单纯剥离近端语音出来,所以无法使用有参考源的评价指标(PESQ、MOS)。考虑到影响主观听觉的两个主要方面:频谱成分和幅度,双讲时AEC后如果保留近端语音的频谱成分很少,则音质及内容在主观听感都很差;双讲时AEC后的输出幅度很小,主观听感上会出现音量忽大忽小,有些内容无法听清。因此双讲情况下AEC的理想输出:必须保留足够多的近端语音频谱成分,几乎没有远端语音的频谱成分,同时幅度接近只有近端单讲。基于上述分析,除了利用业界通用的评价单讲消除效果的ERLE(此指标不适用于双讲情况),我们还设计了3个客观评价指标对AEC效果进行评估:

1. ERLE (Echo Return Loss Enhancement,回声返回衰减增益),其计算公式如下:

ERLE值越大,则表明回声抵消效果越好。由于双讲或只有近端单讲时,e(n)中包含近端语音,导致很多情况下e(n)的能量远大于回声y(n)的能量,从而ERLE为负值,同时也无法衡量回声部分的消除情况。

2. SuppFactor(能量衰落因子),AEC后输出能量与对应麦克风信号能量的比值,其计算公式如下:

3. cohde(输出信号e(n)与麦克风信号d(n)的频谱相关性),该值越接近1,说明输出信号中保留的麦克风信号频谱越多。考虑到麦克风信号d(n)主要由回声信号y(n)和近端语音v(n)构成,因此只有近端单讲情况下cohde的值才能接近1,双讲情况下cohde的值在0.5~0.9(取决于回声信号在该帧的占比),当cohde接近0时说明输出信号几乎不包含任何近端语音和回声的频谱成分。其计算公式如下:

4. cohxe(输出信号e(n)与远端参考信号x(n)的频谱相关性),该值越接近0,说明输出信号中残留的远端参考信号频谱越少,回声消除越彻底,其计算公式如下:

 

下面我们将通话情况分为3种状态分别评价回声消除效果:近端单讲(包含双方静音情况,此类情况不需要抑制回声)、远端单讲(此类情况需最大程度抑制回声)、双讲(此类情况需要尽量抑制回声同时保留近端语音)。

1. 近端单讲(最大程度保持输出与麦克风信号一致)

cohde:越接近1说明输出与麦克风信号越相似,越接近0说明两者差异越大,近端单讲时理想值为1。

cohxe:越接近1说明输出与远端参考信号越相似,越接近0说明两者差异越大,即残留的远端参考信号频谱成分越少,理想值为0。

SuppFactor:越接近1说明输出与麦克风信号的能量越接近,越接近0说明AEC造成能量衰落越严重,近端单讲时理想值为1。

2. 远端单讲(最大程度抑制回声)

ERLE:值越大越好,则表明残留回声的能量相对值越小,回声抵消效果越好。

cohde:越接近1说明输出与麦克风信号越相似,越接近0说明两者差异越大,远端单讲时理想值为0。

cohxe:越接近1说明输出与远端参考信号越相似,越接近0说明两者差异越大,即残留的远端参考信号频谱成分越少,理想值为0。

SuppFactor:越接近1说明输出与麦克风信号的能量越接近,越接近0说明AEC造成能量衰落越严重,远端单讲时理想值为0。

3. 双讲(尽量抑制回声同时保留近端语音)

cohde:越接近1说明输出与麦克风信号越相似,保留的近端语音频谱成分也越多;越接近0说明两者差异越大,保留的近端语音频谱成分也越少,双讲时理想值为0.5~0.9(取决于回声信号在该帧的占比)。

cohxe:越接近1说明输出与远端参考信号越相似,越接近0说明两者差异越大,即残留的远端参考信号频谱成分越少,双讲时理想值为0。

SuppFactor:越接近1说明输出与麦克风信号的能量越接近,越接近0说明AEC造成能量衰落越严重,双讲时理想值为1。

5

测试结果对比及说明

YeeCall的会议终端回声消除解决方案:更好的线性滤波+准确的双讲检测+更好的非线性处理。YeeCall的AEC算法主要优势在于:利用双滤波器线性滤波,得到包含残留回声非常少的e(n);通过远端语音x(n)、麦克风信号d(n)、误差信号e(n)判断出是否存在双讲,当存在双讲时,停止自适应滤波器的系数更新;对于双讲相应调整NLP(Non-linear processing,非线性处理)时的信号增益,使得输出信号e(n)尽量逼近于近端语音信号v(n)。主观听感上双讲时不会出现消音(吞字)现象,音质不会显著变化,不会音量忽大忽小,音量与近端单讲时相当。

1.主观测试:

1)波形语谱图对比

图5: 双讲语料AEC后WebRTC与YeeCall的波形对比

 

图6: 双讲部分AEC后WebRTC与YeeCall的语谱图对比

从波形可以看出由于WebRTC的AEC收敛速度比较慢,导致语料中开始部分的远端单讲没有消除的很彻底;在双讲部分,WebRTC的结果出现大量消音和幅度衰落过度。我们进一步对双讲部分(1:41 – 2:00)进行放大观察,对比YeeCall的输出,发现WebRTC该部分波形缺失和频谱缺失非常严重,从而导致该部分会出现听不到、听不清、听不懂。

2)听觉质量对比

2. 客观测试

1)指标均值

图7: 高重叠双讲语料AEC后WebRTC(上)与YeeCall(下)的指标均值对比

从程序输出的指标可以看出,无论普通双讲语料还是高重叠双讲语料,在近端单讲时YeecallAEC的所有指标均略优于WebrtcAEC;在远端单讲时与YeecallAEC的ERLE指标相当,而在能量衰落因子指标上WebrtcAEC略优于YeecallAEC,具体原因后面有分析;在双讲时YeecallAEC的所有指标均远胜于WebrtcAEC,Yeecall的输出做到很几乎完全保留近端语音(无论频谱成分还是幅度),而Webrtc对近端语音的平均保留度约占10%而已。

2)指标详细对比

上述比较结果只是基于2组语料的均值,不足以支持YeecallAEC效果优于WebrtcAEC的结论,因此我们输出所用帧的指标值,直观展示3种通话状态下两者输出的差异。以下图示均是以高重叠双讲语料为例。

图8: 高重叠双讲语料的波形比较与通话状态

图8展示了该语料及其两种输出(从上到下near、far、YeecallOutput、WebrtcOutput),同时标注了我们算法识别出来的通话状态(红色是双讲,天蓝色是远端单讲,黑色是近端单讲)。由于far信号的能量显著大于近端语音,我们结合far信号肉眼很容易初步判定出是否双讲、是否近端单讲。对比我们程序自动标注的结果,可以发现我们的状态检测算法非常准确,几乎把所有出现双讲的位置均识别出来,也没有将非双讲误判为双讲。从通话状态标注我们可以看出,即使高重叠的双讲部分,中间依然相当比例的远端单讲和近端单讲。究其原因,任何人即使以超快语速说话,字与字之间必然存在间隙过渡(此过渡部分接近静音),那么两个高语速的人对吼也依然会存在(过渡,语音)、(语音、过渡)、(过渡、过渡)的状态,因此必然出现状态夹杂的情况。

图9: 高重叠双讲语料的每帧输出指标的对比(上方: Web RTC, 下方: YeeCall)

进一步,我们把每一帧的客观指标按时间顺序画出,如图9所示,(上方: Web RTC,下方: YeeCall)。两者的显著差异出现在双讲部分,观察横坐标1.5~2的部分(结合图11我们知道该部分为双讲),能量衰落因子suppFactor差异明显,Webrtc的大部分值都接近0,而Yeecall的大部分值都在0.5以上。

为了更清晰的比较,我们将图9按通话状态拆分成3部分(近端单讲、远端单讲、双讲)。为了避免suppFactor与cohde重叠相互干扰查看,我们画图时将画-1 * suppFactor,即将suppFactor向下翻转,依然是越靠近0轴的值越小。从图10可以看出,在近端单讲时YeecallAEC几乎所有帧的指标都略优于WebrtcAEC。从图11可以看出,在远端单讲时YeecallAEC在纯单讲部分对应帧的指标略优于WebrtcAEC,但是双讲中夹杂的单讲帧的指标略差于Webrtc。从图12可以看出,在双讲时YeecallAEC几乎所有帧的所有指标均远胜于WebrtcAEC,大部分双讲帧的指标接近理想情况(suppFactor=1,cohde>0.7),而Webrtc的大部分帧的指标低于0.2,说明其消音非常严重。

图10: 高重叠双讲语料的近端单讲输出指标的对比(左: Web RTC,右: YeeCall)

图11: 高重叠双讲语料的远端单讲输出指标的对比(左: Web RTC, 右: YeeCall)

图12: 高重叠双讲语料的双讲输出指标的对比(左: Web RTC, 右: YeeCall)

最后我们对全部语料(总长超过44分钟,共174140 Blocks)分别计算YeecallAEC和WebrtcAEC的4个指标,按近端单讲、远端单讲、双讲进行统计,结果如下:

从结果可以看出:

1)在近端单讲时YeecallAEC的所有指标均略优于WebrtcAEC,YeecallAEC的cohde=0.967更接近理想值1,说明输出与麦克风信号更相似, suppFactor =0.973更接近理想值1,说明输出与麦克风信号幅度非常接近。

2)在远端单讲时WebrtcAEC的部分指标均略优于YeecallAEC,两者的通用回声衰落指标ERLE非常接近;两者的cohxe均小于0.01,说明输出中残留的回声频谱成分均小于1%;Yeecall的suppFactor =0.366高于Webrtc (0.195),即对单讲部分平均抑制程度高于Webrtc,这是由于在即使快速双讲过程中,存在约1/3的帧没有真正重叠,这类帧会判定为单讲,但是明显此类帧不适合过分抑制,因此导致平均的suppFactor就略高于Webrtc。

3)在双讲时YeecallAEC的所有指标均远远超过WebrtcAEC,YeecallAEC的cohde=0.75在合理范围内(0.5~0.9),说明输出中几乎包含近端语音的所有频谱成分,而Webrtc的cohde=0.165严重偏离合理范围,说明输出中包含近端语音频谱成分已经非常低(音质非常差或已经被消音);YeecallAEC的suppFactor =0.907非常接近理想值1,与近端单讲的平均值0.973相当,说明双讲部分的幅度(音量)没有显著变化;WebrtcAEC的suppFactor = 0.165非常接近0,说明双讲时近端语音被严重削弱或者大部分被消音。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值