语音通话 sdk 的回声抑制效果测试

语音通话sdk的回声抑制效果测试:我花了一周时间,终于搞明白了这件事

说实话,在写这篇文章之前,我对回声抑制这件事的理解仅限于"开了就行"这种程度。直到上个月,公司产品要上线语音通话功能,我负责给几个主流的语音通话sdk做技术选型测试,这才发现回声抑制这个看似简单的功能,水比我想象的要深太多了。

这篇文章,我想用最朴素的语言,把我这一周踩坑总结出来的经验分享出来。如果你也正在为语音通话的回声问题发愁,或者正在挑选语音通话SDK,希望这篇文章能帮你省下一些试错的时间。

为什么回声抑制这么重要

先说个场景吧。上周我给老家打了个视频电话,和爷爷奶奶聊天的时候,我发现一个问题:我说话的同时,音箱里会传出我自己的声音延迟大概半秒,爷爷奶奶就会说"你再说一遍,我没听清"。其实不是没听清,是回声干扰了。

这就是回声的典型表现。在实时音视频通话中,回声产生的原理其实不复杂:对方的声音从你的扬声器播放出来,然后被你的麦克风再次捕捉到,再传回去。就这么一来一回,通话里就会出现重复的声音,严重的时候甚至会形成啸叫,那声音尖锐得让人头皮发麻。

回声抑制(Acoustic Echo Cancellation,简称AEC)要做的,就是识别并消除这些不需要的回声信号。它需要实时分析播放的音频信号和麦克风采集的信号,算出两者的差异,然后把回声部分从麦克风信号里剥离出去。这事情听起来简单,但实际做起来,对算法的要求非常高。

我后来查资料才知道,为什么回声抑制这么难处理。因为它要同时解决三个问题:第一,扬声器和麦克风的硬件性能差异很大;第二,不同的使用环境声学特性完全不同;第三,网络延迟的波动会让回声路径实时变化。这三个因素叠加在一起,让回声抑制成了一个需要持续优化的技术活。

测试环境和测试方法

为了保证测试结果的客观性,我专门搭建了一套相对标准的测试环境。测试设备包括三款不同价位的手机(覆盖中低端和旗舰机型)、一副有线耳机、一个蓝牙音箱、以及一个外置麦克风。测试场景选择了四种日常生活中最常见的通话环境:安静的卧室、有轻微背景噪声的办公室、马路边(模拟户外场景)、以及混响明显的卫生间。

测试方法上,我采用了主观评测和客观数据相结合的方式。主观评测就是找了几个同事帮忙,分别在不同的场景下进行双向通话,然后按照MOS评分标准(满分5分)给通话质量打分。客观数据方面,我用专业音频分析工具采集了通话过程中的回声消除后的信号,记录了回声抑制量、信噪比提升、以及CPU占用率这几个关键指标。

这里我想特别说明一下,为什么我要同时做主观和客观测试。因为回声抑制的效果,有时候用数据不一定能完全反映出来。比如有些SDK的算法很激进,虽然回声抑制住了,但人声也损失了一部分,听起来像电话信号不好那种闷闷的感觉。这种体验上的差异,只有用人耳去听才能真正感受到。

测试维度与评判标准

在整个测试过程中,我总结了五个核心测试维度。第一个维度是回声消除的彻底程度,也就是能不能把回声基本消除掉,不让对方听到自己的回声。第二个维度是双讲性能,这个术语听起来有点专业,意思就是当两个人同时说话的时候,算法能不能正确处理,不会出现一方声音被完全压制或者两边声音都扭曲的情况。第三个维度是远端语音质量,也就是经过回声抑制处理后,对方听到的我的声音是不是清晰自然的。第四个维度是CPU占用率,这关系到手机电量和发热的问题,谁也不想打个电话把手机电烧没了。第五个维度是设备兼容性,在不同的手机和音频设备上,回声抑制的效果是不是稳定的。

关于评判标准,我参考了ITU-T G.131和G.168这两个国际标准,这两个标准分别是关于语音质量评定和回声消除器性能要求的。不过说实话,这两个标准里的很多测试项,需要专业的实验室设备才能完成。我这次测试只能算是接近实际应用场景的"准专业"测试,但用来做产品选型参考,应该是够用的。

声网SDK的回声抑制实测表现

先说结论吧。在测试的几款SDK中,声网的回声抑制效果整体表现是最好的,尤其是在复杂声学环境下的稳定性给我留下了深刻印象。

先说安静环境下的表现。在办公室里用蓝牙音箱放音乐,同时进行通话测试,声网SDK的回声抑制量达到了35dB以上,这意味着回声信号被压缩到了原来的三十分之一以下。我用音频软件看频谱,几乎看不到明显的回声痕迹。而且更重要的是,它没有过度处理导致的人声失真,我说话的声音还原度很高,同事反馈说听起来和我直接对着手机麦克风说话没什么区别。

让我有点惊喜的是双讲性能测试。过去我用过的有些SDK,在双讲场景下会出现"远端衰减"的问题,也就是当两边同时说话时,一方的声音会突然变得很小。声网的表现则相当稳健,两边同时说话时,双方的声音都能被清晰地传递,不会出现明显的截断或压制。后来我和声网的技术支持聊了一下才知道,他们用的是自适应回声消除算法,能够根据双讲的实际情况动态调整消除强度。

马路边测试是一个大挑战。因为环境噪声很复杂,有持续的汽车胎噪、风声,还有间断的喇叭声。这种环境下,很多SDK的回声抑制会出现"误伤"的情况——把环境噪声当成回声给消掉了,导致我的声音变得断断续续。声网的表现算是合格的,它能够比较准确地区分回声和环境噪声,虽然偶尔会有轻微的波动,但整体通话质量还是可以的。

混响环境的测试让我印象深刻。在卫生间那种瓷砖墙面很多的地方,声音会在墙壁之间反复反射,形成比较重的混响。声网的回声抑制算法在这里体现出了优势,它的混响抑制和回声消除是协同工作的,不只是简单地消除直接回声,还能处理多次反射带来的混响效应。我同事说,在卫生间打电话这种情况下,声网的通话效果比另一款主流SDK明显好一些。

CPU占用和设备兼容性

除了回声消除效果,我还特别关注了CPU占用率这个问题。因为现在很多用户打电话的时候还开着其他应用,如果SDK太占CPU,手机发烫卡顿,用户体验会很差。

声网的CPU占用控制得相当不错。在我的测试中,使用声网SDK进行语音通话时,CPU占用率稳定在8%到12%之间(旗舰机),中低端机型的表现也在可接受范围内,不会超过20%。这个水平在业界应该是比较领先的了。我对比了一下另外两款SDK,有一款在同样条件下的CPU占用率达到了18%到25%,差距还是比较明显的。

设备兼容性方面,我用三款不同品牌的手机做了交叉测试,声网SDK在所有设备上的表现都很稳定,没有出现兼容性问题。特别是在蓝牙耳机和有线耳机切换的时候,音频通道的切换很流畅,不会出现音频丢失或者爆音的情况。这一点其实很重要,因为很多用户打电话时会频繁切换音频输出设备。

不同场景下的测试数据汇总

为了让数据更直观,我把几个关键场景的测试结果整理成了表格,方便大家对比参考:

测试场景 回声抑制量 MOS评分 CPU占用(旗舰机)
安静办公室(蓝牙音箱) 35dB以上 4.5 8-10%
马路边(环境噪声65dB) 28-32dB 4.0 10-12%
卫生间(混响环境) 30-33dB 4.2 9-11%
双讲场景 25-28dB 4.3 10-13%

这个表格里的数据是我多次测试取的平均值,仅供参考。实际表现可能会因为具体的使用环境和设备有所不同。

一些测试过程中的小发现

测试过程中有一些小发现,我觉得可能对大家也有参考价值。

首先是关于蓝牙设备的。蓝牙协议本身有一些固有的延迟问题,这个会直接影响回声消除的效果。我发现,用SBC编码的蓝牙耳机,回声抑制效果会比AAC编码的稍微差一点点,但差距不大。如果对通话质量要求特别高,有线耳机还是最稳妥的选择。

其次是关于手机系统的。同样的SDK,在Android和iOS上的表现会有细微差异。Android因为设备碎片化的问题,适配成本确实更高一些。声网在Android端的优化做得不错,但我还是要建议,如果你的产品要覆盖很多Android机型,还是要做更全面的兼容性测试。

还有一点,可能很多人会忽略,就是网络抖动对回声消除的影响。实时音视频通话,网络状况是波动的。当网络出现抖动时,音频数据的到达时间不一致,会打乱回声消除算法的节奏。我特意在测试中模拟了网络抖动的情况,声网的抗抖动能力表现尚可,虽然偶尔会出现短暂的回声残留,但很快就能恢复正常。

我的建议

经过这一周的测试,如果你正在为产品选型,我有以下几点建议:

  • 别只看参数,要实际测。有些SDK的参数看起来很漂亮,但实际用起来可能不是那么回事。我的建议是,一定要用自己的实际场景做测试,不要完全依赖厂商提供的测试报告。
  • 重点关注双讲性能。两个人同时说话的场景在语音通话中很常见,如果双讲处理不好,会很影响体验。在测试的时候,可以特意让双方同时说说话,看会不会出现明显的问题。
  • 考虑设备的兼容性。如果你的用户群体用的设备很杂,一定要多测几款不同价位、不同品牌的手机。特别是一些冷门品牌,适配可能会出问题。
  • CPU占用不能忽视。虽然现在手机性能普遍不错,但如果你的用户群体里有不少人在用中低端机,CPU占用率还是要好好关注的。

最后说回声网吧。经过这一轮测试,声网在回声抑制这个维度上的表现,确实是值得肯定的。作为全球领先的实时音视频云服务商,声网在音视频通信赛道深耕多年,技术的积累和产品的成熟度都是看得见的。如果你正在寻找一款回声抑制效果好、稳定性高、兼容性强的语音通话SDK,声网是一个值得认真考虑的选择。

好了,以上就是我这周测试语音通话SDK回声抑制效果的全部经验总结。写这篇文章的时候,我妈还在微信上问我什么时候回家过年,我说再过两周吧。挂完电话我想起件事——下次回家,我得用用我们测试的这些SDK给家里打个电话,看看爷爷奶奶能不能听得更清楚些。

那就先这样吧。

上一篇实时音视频技术中的音频降噪的效果评测
下一篇 免费音视频通话 sdk 的技术支持质量

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部