13、AEC性能评估:ERLE计算、PESQ、MOS分
做音频处理这么多年,我见过太多「听起来不错,一测就垮」的案例。回声消除做得好不好,不能光靠耳朵听——你得有数据说话。这一章,我们就来聊聊AEC性能评估的三个核心指标:ERLE、PESQ和MOS分。
说白了,这三个指标分别回答三个问题:回声消干净了吗?语音质量受损了吗?用户觉得怎么样?
13.1 ERLE:回声返回损耗增强
ERLE(Echo Return Loss Enhancement)是衡量AEC对回声抑制能力的核心指标。它的计算公式很简单:
ERLE(dB) = 10 * log10( E[ d²(n) ] / E[ e²(n) ] )
其中 d(n) 是近端麦克风采集到的信号(包含回声),e(n) 是AEC处理后的残差信号。ERLE值越大,说明回声抑制得越干净。
实际项目中的经验值:
| 场景 | ERLE典型值 | 说明 |
|---|---|---|
| 单讲(远端说话) | 25-40 dB | 远端说话时,近端麦克风应几乎听不到回声 |
| 双讲(双方同时说话) | 10-20 dB | 双讲时AEC会保守一些,避免损伤近端语音 |
| 非线性失真场景 | 15-25 dB | 扬声器失真严重时,ERLE会明显下降 |
关键点:ERLE不能只看平均值,要看时变曲线。我习惯把ERLE随时间变化的曲线画出来,观察是否有「掉坑」的地方——比如双讲开始瞬间ERLE骤降,那说明双讲检测没做好。
我的小技巧:计算ERLE时,记得先做VAD(语音活动检测)分段。只计算远端说话、近端静音的时间段,否则双讲段的ERLE会把整体数值拉低,掩盖真实性能。
13.2 PESQ:语音质量感知评估
PESQ(Perceptual Evaluation of Speech Quality)是ITU-T P.862标准定义的客观语音质量评估方法。它模拟人耳听觉特性,输出一个-0.5到4.5之间的分数。
PESQ的输入是两个音频文件:参考信号(原始近端语音)和退化信号(经过AEC处理后的近端语音)。算法会比较两者的差异,给出一个客观评分。
PESQ分数解读:
| PESQ分数 | 主观感受 | 常见场景 |
|---|---|---|
| 4.0 - 4.5 | 几乎无感知损伤 | 高质量AEC + 低噪声环境 |
| 3.0 - 4.0 | 轻微损伤,可接受 | 大部分商用AEC的水平 |
| 2.0 - 3.0 | 明显损伤,影响沟通 | 低端AEC或高噪声场景 |
| < 2.0 | 严重损伤,不可用 | AEC失效或参数严重错误 |
注意:PESQ对非线性失真非常敏感。我曾经遇到一个项目,AEC把回声消得很干净(ERLE 35dB),但PESQ只有2.8——后来发现是NLMS的步长设置太大,导致近端语音被过度削波。ERLE好看,不代表语音质量好。
13.3 MOS分:主观与客观的桥梁
MOS(Mean Opinion Score)是ITU-T P.800定义的主观评价方法。它让一组听音人对语音质量打分,取平均值。MOS分范围1-5,5分代表完美。
但主观测试成本高、周期长。所以业界常用PESQ、POLQA等客观算法来预测MOS分。PESQ到MOS的映射关系大致如下:
MOS ≈ 1 + 0.999 * PESQ (PESQ在1.0-4.5范围内近似线性)
不过这个映射并不精确。我个人更推荐直接使用ITU-T P.862.1附录中的映射表,或者用POLQA(P.863)——它对现代编解码器(如Opus、AAC)的评估更准确。
三种指标的对比:
| 指标 | 衡量什么 | 优点 | 缺点 |
|---|---|---|---|
| ERLE | 回声抑制程度 | 计算简单,实时性好 | 不能反映语音损伤 |
| PESQ | 语音质量损伤 | 与主观感受相关性高 | 对非线性失真敏感 |
| MOS | 用户主观体验 | 最接近真实感受 | 测试成本高,周期长 |
13.4 评估流程与工具
在实际项目中,我通常按以下流程做AEC性能评估:
- 录制测试数据:使用人工嘴和仿真头,录制远端信号、近端信号、回声路径的冲激响应。
- 离线处理:用AEC算法处理录制好的数据,得到处理后的近端信号。
- 计算ERLE:分段计算ERLE,画出时变曲线,观察是否有异常波动。
- 计算PESQ:用ITU-T参考软件或开源实现(如pypesq)计算PESQ分数。
- 主观听音:找3-5个人做盲听测试,给出MOS分。
我的经验:不要只看一个指标。ERLE高但PESQ低,说明AEC「用力过猛」;PESQ高但ERLE低,说明回声没消干净。三个指标要综合看,才能全面评估AEC性能。
13.5 知识体系图
下面这张图展示了AEC性能评估的核心逻辑:
13.6 避坑指南
做AEC评估这些年,我踩过不少坑。挑几个典型的说说:
- ERLE计算时没对齐延迟:回声路径有延迟,直接计算ERLE会得到负值。一定要先做延迟估计,对齐后再算。
- PESQ对采样率敏感:PESQ标准要求16kHz采样率。如果你用48kHz的数据直接算,结果会偏差很大。记得先降采样。
- MOS分不要只看平均值:我见过一个项目,MOS平均分3.8,但有个别样本只有1.5——后来发现是特定场景下AEC崩溃了。一定要看分布,不要被平均值骗了。
我的建议:建立自动化测试流水线。每次修改AEC算法后,自动跑一遍ERLE、PESQ、MOS的测试集,生成对比报告。这样能快速发现回归问题,避免「改了一个bug,引出三个新bug」的尴尬局面。
好了,这一章的内容就到这里。评估AEC性能,说白了就是三个维度:消得干净(ERLE)、说得清楚(PESQ)、听着舒服(MOS)。三者缺一不可,别偷懒。
公众号:蓝海资料掘金营,微信deep3321