云端音频3A最佳实践
1. 概览
本文主要介绍:
- 云端音频3A各功能的启用、禁用方法
- 参数含义 & 参数的配置建议值
2. 需求场景
音频3A功能即:回声消除——AEC、噪声抑制——ANS、自动增益——AGC。
回声消除应对场景:设备的麦克风会拾取到扬声器播放的声音(如对话回复、音乐、故事等),导致播放内容被ASR误识别、打断正常对话或引发自问自答。
噪声抑制应对场景:环境中的嘈杂噪声会干扰ASR的识别准确率。
自动增益应对场景:当麦克风拾音能力较弱,采集到的音频音量过低时,会影响ASR的识别准确率。
3. 云端3A各功能的启用、禁用方法
创建智能体时,(请求头域见创建大模型互动实例) config字段携带如下参数(即可启用3A的全部功能,每个功能还有详细参数,可根据需求配置):
1{
2 "cloud_3A_url": {
3 "AEC": {
4 "enable": true,
5 "enhanced": true
6 },
7 "ANS": {
8 "enable": true
9 },
10 "AGC": {
11 "enable": true
12 }
13 }
14}
其中,AEC.enable 是回声消除的总开关;AEC.enhanced 是增强型回声消除算法的子开关,仅在 enable=true 时生效。
3.1. 不做传参配置、服务端的默认值是:
- 回声消除——AEC:禁用
- 噪声抑制——ANS:启用
- 自动增益——AGC:禁用
1{
2 "cloud_3A_url": {
3 "AEC": {
4 "enable": false,
5 "enhanced": false
6 },
7 "ANS": {
8 "enable": true,
9 "preMode": "N",
10 "midGainDb": 0,
11 "dfLimitDb": 75
12 },
13 "AGC": {
14 "enable": false
15 }
16 }
17}
3.2. 单独配置一个功能
cloud_3A_url的任何一个参数都可以缺省配置,只要保证json格式正确即可,例如:
关闭ANS:
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": false
5 }
6 }
7}
4. 完整参数、含义、参考值、取值范围
完整的cloud_3A_url:
1{
2 "cloud_3A_url": {
3 "AEC": {
4 "enable": false,
5 "enhanced": true,
6 "minEchoDelayMs": 100
7 },
8 "ANS": {
9 "enable": true,
10 "preMode": "N",
11 "midGainDb": 0,
12 "dfLimitDb": 75
13 },
14 "AGC": {
15 "enable": false,
16 "maxVolume": 60,
17 "extraGain": 0
18 }
19 }
20}
| 3A功能 | 功能参数 | 类型 | 描述 | 参考值 | 取值范围 |
|---|---|---|---|---|---|
| AEC | enable | bool | 是否启用回声消除(AEC的总开关) | false | true/false |
| AEC | enhanced | bool | 是否启用增强型回声消除算法(推荐开启);仅在enable=true时生效 | true | true/false |
| AEC | minEchoDelayMs | int | 回声时延下限,仅作用于增强型回声消除算法;不增加任何对话延迟 | 100 | [0, 1000] |
| ANS | enable | bool | 是否启用噪声抑制 | true | true/false |
| ANS | preMode | string | 前置线性降噪算法的抑制模式(禁用/低/中/高/极高),不配置preMode则默认禁用 | L | N/L/M/H/VH |
| ANS | midGainDb | float | 若启用前置线性降噪算法,可选择是否附加一次固定的数字增益(单位db)。不设置midGainDb或设置为0,则不做增益。(前置线性降噪算法+固定增益的目的是『尽可能在恶劣噪声场景中提高信噪比、有利于后续降噪』) | 0 | [0.0, 15.0] |
| ANS | dfLimitDb | float | 模型降噪的抑制强度:该值越大,则能应对更嘈杂的环境,但也可能对人声造成损伤。 | 75.0 | [0.0, 95.0] |
| AGC | enable | bool | 是否启用自动增益 | false | true/false |
| AGC | maxVolume | int | 自动增益后的峰值音量上限。 | 60 | [1,100) |
| AGC | extraGain | Double | 在自动增益后施加额外的固定增益。单位是db | 0 | [0,3) |
5. 场景与参数配置示例
5.1. 回声消除
『云端回声时延』 = 『云端编码下发音频 -> 网络传输 -> 端侧解码播放音频 -> 麦克风采集 > 编码上传音频 -> 网络传输 -> 云端解码音频』的耗时。
这个过程可以划分为两大部分:端侧音频时延 + 非端侧音频时延。非端侧主要是网络传输。
建议启用增强型回声消除算法:
1{
2 "cloud_3A_url": {
3 "AEC": {
4 "enable": true,
5 "enhanced": true,
6 "minEchoDelayMs": 100
7 }
8 }
9}
增强型回声消除算法默认能处理 0~1000ms 的回声时延。
由于上下行链路与声音传播等原因(见上图),该时延一般不短于 100ms,因此云端默认配置 minEchoDelayMs=100,实际可处理 100~1100ms 的回声时延;
可根据实际情况调整。
5.2. 噪声抑制
- 默认配置(仅开启模型降噪、最大抑制量75db)
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": true
5 }
6 }
7}
该配置与服务端的默认配置相同,即:
- 禁用前置线性降噪算法
- 启用基于降噪模型的噪声抑制功能,最大抑制量dfLimitDb=75
- 启用前置线性降噪算法+模型降噪
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": true,
5 "preMode": "M",
6 "dfLimitDb": 30
7 }
8 }
9}
该配置是将两个降噪算法级联使用,即
- 启用前置线性降噪算法,抑制模式为『中等』。preMode可配置为L/M/H/VH,对应:低/中/高/极高
- 启用基于降噪模型的噪声抑制功能,最大抑制量dfLimitDb=30
- 启用前置线性降噪算法+固定数字增益+模型降噪
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": true,
5 "preMode": "M",
6 "midGainDb": 6,
7 "dfLimitDb": 30
8 }
9 }
10}
该配置是将两个降噪算法级联使用,即
- 启用前置线性降噪算法,抑制模式为『中等』。preMode可配置为L/M/H/VH,对应:低/中/高/极高
- 前置线性降噪算法完成后,执行固定的数字增益算法,增益6db(约等于音量*2)
- 启用基于降噪模型的噪声抑制功能,最大抑制量dfLimitDb=30
5.3. 自动增益
注意:
- 如果环境嘈杂,则很难实现中远距离对话的自动增益(因为人声小、环境噪声大,已经在降噪过程中被抹掉了)
- 建议自动增益和噪声抑制搭配使用,即不要单独开启自动增益。
下面是常见场景和建议值:
- 近距离对话(1m内)、麦克风收音效果较差:
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": true
5 },
6 "AGC": {
7 "enable": true,
8 "maxVolume": 60,
9 "extraGain": 0
10 }
11 }
12}
- 中距离对话(1-2m):
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": true
5 },
6 "AGC": {
7 "enable": true,
8 "maxVolume": 70,
9 "extraGain": 0
10 }
11 }
12}
3 远距离对话(2m外):
1{
2 "cloud_3A_url": {
3 "ANS": {
4 "enable": true
5 },
6 "AGC": {
7 "enable": true,
8 "maxVolume": 70,
9 "extraGain": 1
10 }
11 }
12}
6. 处理结果示例图 & 语音调测

6.1. 语音调测
当需要定位设备端语音互动中的音频问题,或对比验证 3A 各阶段的处理效果时,可使用控制台提供的语音调测操作指南开启语音调测。
开启调测后,设备与 Agent 进行语音互动时,云端会录制 Agent 接收到的以下音频:
- 原声
- AEC 处理后的音频
- ANS 处理后的音频
- AGC 处理后的音频
调测完成后,可在控制台查看最近一次已完成的互动实例,并下载录制音频进行对比分析,再结合本文第 4 节中的参数调整 3A 配置。
注意:该功能需要联系开发人员,为指定 AppID 开通白名单后才能使用。
7. 注意事项
-
回声消除:
-
如需配置
tts_end_delay_ms(详见 https://cloud.baidu.com/doc/RTC/s/hm8zjic1q ),该值不能太大,建议设置为tts_end_delay_ms=10。- 若不配置,则无影响。
-
如在启用
tts_enable_fast_send(详见 https://cloud.baidu.com/doc/RTC/s/hm8zjic1q )的场景,回声消除效果不理想,可联系开发人员。- 不建议同时开启
云端AEC和tts_enable_fast_send。
- 不建议同时开启
- 默认使用
minEchoDelayMs=100;如设备上有额外的处理(例如通过HDMI线/蓝牙,实现跨设备的播放),可联系开发人员查看云端日志,迭代给出最合适的值。
-
- 在自动增益中,为避免过度增益、削峰失真,建议maxVolume不超过90、非必要不启用extraGain。
评价此篇文章
