前言
开发语音打断(Voice Barge-in)功能时,有个问题挺让人头疼——明明已经把AEC回声消除功能打开了,结果却“基本没什么用”。播着音频的时候,唤醒率照样低得可怜,感觉这个功能跟摆设似的。
看看技术交流群里来自用户的真实反馈:
“CI1302的AEC回声消除功能不太明显,不管接入多大幅值的电压,回声消除感觉不起作用,达不到增加唤醒率。”
“未经放大后的音频与放大后的音频都接入测试过,相关还是不行。”
这背后,实际上是AEC硬件电路设计里的一些关键细节出了问题。AEC功能能不能正常工作,不只是固件配置那么简单,更取决于参考信号的采集方式、信号幅度,甚至相位匹配这些硬件层面的因素。
顺着这个真实的技术支持案例,咱们系统地把CI1302芯片AEC功能的硬件调试方法理一遍,重点涵盖功放前级/后级采样、信号衰减计算、以及D类与AB类功放的兼容性问题。
一、AEC回声消除技术原理回顾
1.1 什么是AEC回声消除
AEC(Acoustic Echo Cancellation,声学回声消除)的核心任务就是一件事:当设备喇叭正在放声时,系统能够分得清——哪些声音是设备自己播放的(回声),哪些是用户的真实语音指令。
┌─────────────────────────────────────────────────────────────┐
│ AEC工作原理示意 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 音频源 ──▶ 功放 ──▶ 喇叭 ──▶ 声音辐射 │
│ │ │ │
│ │ 声学回声 ───────────┘ │
│ │ │ │
│ ▼ ▼ │
│ 参考信号采集 麦克风采集 │
│ (AEC_IN) (MIC_IN) │
│ │ │ │
│ └──────▶ AEC算法 ◀──────┘ │
│ │ │
│ ▼ │
│ 消除回声后的语音 │
│ │
└─────────────────────────────────────────────────────────────┘
1.2 AEC生效的关键条件
| 条件 | 说明 | 常见问题 |
|---|---|---|
| 参考信号正确采集 | 需要采集功放输出的音频作为参考 | 未接AEC_IN、接错位置 |
| 信号幅度匹配 | 参考信号幅度需在芯片接收范围内 | 幅度过大/过小 |
| 相位同步 | 参考信号与实际播放信号需同步 | 前级采样导致相位差 |
| 功放类型兼容 | 需使用AB类功放,D类需特殊处理 | 使用D类功放不兼容 |
二、真实案例:AEC效果"不太明显"的排查过程
2.1 问题描述
应用场景:设备在播放AI合成语音时,需要实现语音唤醒打断。
测试环境:
- 静音状态下,6米范围内可以正常唤醒
- 播放音频时,唤醒率明显下降
- AEC功能启用后,效果改善不明显
尝试过的方案:
- 功放前级信号接入AEC → 效果不佳
- 功放后级信号接入AEC → 效果依然不佳
- 调整信号幅度 → 无明显改善
2.2 技术专家的诊断分析
硬件工程师陈工的分析指出了几个关键问题:
“经过你的AEC支路衰减后,幅度都不够了哈,你算算看;另外功放前级信号与喇叭输出信号的相位是不一样。”
“按照我们的模组推荐电路,直接取功放的输出信号经过衰减后送入到芯片的AEC采样脚哈。”
核心问题总结:
- 前级采样信号幅度经过衰减后可能不足
- 前级信号与喇叭输出的相位存在差异
- 应该采样功放输出(后级)而非前级
三、AEC参考信号采集的正确方式
3.1 功放前级 vs 后级采样
| 采样位置 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 功放前级 | 信号幅度小,易于处理 | 与喇叭输出相位不同,无法反映真实播放 | ❌ 不推荐 |
| 功放后级 | 与喇叭输出同步,相位一致 | 信号幅度大,需要衰减 | ✅ 强烈推荐 |
为什么后级采样更好?
前级采样的问题:
┌─────────────────────────────────────────────────────────────┐
│ 音频源 → 功放芯片 ──▶ [前级采样点] ──▶ 后级放大 ──▶ 喇叭 │
│ ▲ │
│ AEC参考 │
│ │
│ 问题: │
│ 1. 采样点之后还有放大电路,相位发生变化 │
│ 2. 喇叭实际输出与采样信号不完全同步 │
│ 3. AEC算法无法准确预测回声路径 │
└─────────────────────────────────────────────────────────────┘
后级采样的优势:
┌─────────────────────────────────────────────────────────────┐
│ 音频源 → 功放芯片 ──▶ 后级放大 ──▶ [后级采样点] ──▶ 喇叭 │
│ ▲ │
│ AEC参考(经衰减) │
│ │
│ 优势: │
│ 1. 采样点与喇叭输出完全一致 │
│ 2. 相位同步,AEC算法能准确消除回声 │
│ 3. 能真实反映喇叭播放的音频 │
└─────────────────────────────────────────────────────────────┘
3.2 官方推荐电路设计
根据SmartPi官方推荐,AEC参考信号应按以下方式连接:
┌─────────────────────────────────────────────────────────────┐
│ AEC参考信号采集电路 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 功放输出端 │
│ │ │
│ │ ~~~~~~~~ (音频交流信号) │
│ ▼ │
│ ┌─────────┐ │
│ │ 100nF │ C19: 隔直电容 │
│ └────┬────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ 22kΩ │ R12: 衰减电阻(上拉) │
│ └────┬────┘ │
│ │ │
│ ├───┬─── AEC_IN (芯片AEC采样引脚) │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────┐ │
│ │ 2.2kΩ │ R11: 衰减电阻(下拉到地) │
│ └────┬────┘ │
│ │ │
│ ▼ │
│ GND │
│ │
│ 衰减比例计算: │
│ V_AEC = V_SPK × (R11 / (R11 + R12)) │
│ V_AEC = V_SPK × (2.2k / (2.2k + 22k)) │
│ V_AEC = V_SPK × 1/11 ≈ V_SPK × 0.09 │
│ │
│ 即:将喇叭输出信号衰减到约1/11 │
└─────────────────────────────────────────────────────────────┘
关键参数说明:
| 元件 | 值 | 作用 |
|---|---|---|
| C19 | 100nF | 隔直电容,只通过交流音频信号 |
| R12 | 22kΩ | 上拉衰减电阻 |
| R11 | 2.2kΩ | 下拉衰减电阻 |
| 衰减比 | 1:11 | 将喇叭输出衰减到芯片可接收范围 |
3.3 不同功率的衰减比例选择
技术专家建议:
“我们的功放输出比你的功率大一倍,取的是1/20;你尝试着取1/10试试看哈。”
| 功放输出功率 | 推荐衰减比例 | 推荐电阻组合 (R12/R11) |
|---|---|---|
| ≤3W | 1:10 | 100kΩ / 10kΩ |
| 3W-6W | 1:11 | 22kΩ / 2.2kΩ(官方推荐) |
| 6W-10W | 1:15 | 150kΩ / 10kΩ |
| ≥10W | 1:20 | 240kΩ / 12kΩ |
四、信号幅度调试详解
4.1 信号幅度测量方法
测试设备:示波器
测试步骤:
第1步:测量功放前级信号
├─ 测试点:功放芯片输入端
├─ 信号类型:交流音频信号
└─ 典型幅度:0.5V - 1.5V (峰峰值)
第2步:测量功放后级信号
├─ 测试点:功放芯片输出端(到喇叭之间)
├─ 信号类型:交流音频信号
└─ 典型幅度:3V - 10V (峰峰值,取决于功率)
第3步:测量AEC输入端信号
├─ 测试点:CI1302的AEC_IN引脚
├─ 信号类型:交流音频信号(已衰减)
└─ 合理范围:0.5V - 1.5V (峰峰值)
4.2 信号幅度问题诊断
案例中的问题:
“我用1K的调试信号,前级的峰值是3.3V的,经过滤波,并入到CI1302的峰值在2V左右。”
专家指出的问题:
“你是指的DC吧,AC信号怎么可能这么大”
“现在功放的增益多少?”
“NS4150B的功放管,150K电阻,增益1.6”
分析:
- 用户可能混淆了AC和DC读数
- 1.6倍增益意味着功放输出会更大
- 经过AEC支路衰减后幅度可能不足
正确计算方法:
功放NS4150B增益设定:
Gain = 1 + (Rf / Ri)
Rf = 150kΩ (反馈电阻)
假设Ri = 100kΩ (输入电阻,需确认实际值)
Gain = 1 + (150k / 100k) = 2.5倍
如果前级输入:1Vpp
功放输出:1V × 2.5 = 2.5Vpp
经过AEC衰减(1/11):
AEC_IN = 2.5V × 1/11 ≈ 0.23Vpp ← 可能偏低
建议调整为1/10衰减:
AEC_IN = 2.5V × 1/10 = 0.25Vpp (100k/10k组合)
或调整功放增益以获得更大的驱动信号
4.3 功放增益与喇叭匹配
用户的设计:
- 喇叭:8W, 0.9Ω
- 功放增益:1.6倍(使用150kΩ电阻)
- 增益原因:增益大了会破音,靠腔体变大声
专家建议:
“功放的增益根据你前级信号的AC幅度放大多少倍数,到你需要得到的喇叭功率来决定的哈。放大倍数越低,你的功放就越工作稳定。”
设计建议:
| 方案 | 功放增益 | 优点 | 缺点 |
|---|---|---|---|
| 低增益 | 1.6-2倍 | 工作稳定,不易破音 | 需要更大前级信号 |
| 中增益 | 2-4倍 | 平衡方案 | 需注意破音保护 |
| 高增益 | >4倍 | 小信号可驱动 | 易破音,稳定性差 |
推荐做法:
- 在保证输出功率的前提下,尽量使用较低增益
- 通过声学腔体设计提升实际音量,而非单纯依靠功放增益
五、D类与AB类功放的兼容性问题
5.1 功放类型对AEC的影响
这是CI1302 AEC设计中的一个关键限制。
| 功放类型 | 输出信号特性 | AEC兼容性 | 说明 |
|---|---|---|---|
| AB类功放 | 模拟音频信号 | ✅ 完全兼容 | 输出可直接用于AEC采样 |
| D类功放 | 高频PWM方波 | ❌ 不兼容 | 需要额外去载波电路 |
5.2 为什么D类功放不兼容
┌─────────────────────────────────────────────────────────────┐
│ AB类 vs D类功放输出波形对比 │
├─────────────────────────────────────────────────────────────┤
│ │
│ AB类功放输出(模拟信号): │
│ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │
│ │ │ │ │ │ │ │ │ ← 可直接用于AEC │
│ │ │ │ │ │ │ │ │ │
│ └───┘ └───┘ └───┘ └───┘ │
│ │
│ D类功放输出(PWM方波): │
│ ┌───────────────────────────────────────────┐ │
│ │██| |██| |██| |██| |██| |██| |██| |██│ ← 无法直接采样│
│ └───────────────────────────────────────────┘ │
│ ↑ 载波频率(通常几百kHz) │
│ │
└─────────────────────────────────────────────────────────────┘
问题:D类功放输出的是高频方波信号,AEC采样电路无法直接提取音频信息。
5.3 D类功放解决方案
如果必须使用D类功放(如WM8960、MAX98357),有以下选择:
方案一:增加去载波电路(复杂)
┌─────────────────────────────────────────────────────────────┐
│ D类功放AEC去载波电路示意 │
├─────────────────────────────────────────────────────────────┤
│ │
│ D类功放输出 │
│ │ │
│ ▼ │
│ ┌─────────┐ 低通滤波器 │
│ │ LC滤波 │ ──────────────▶ 提取音频包络 │
│ └─────────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ 信号调理 │
│ │ 整流/ │ ──────────────▶ 转换为可采样信号 │
│ │ 检波 │ │
│ └─────────┘ │
│ │ │
│ ▼ │
│ AEC_IN │
│ │
└─────────────────────────────────────────────────────────────┘
方案二:更换为AB类功放(推荐)
| AB类功放型号 | 输出功率 | 特点 |
|---|---|---|
| NS4150B | 3W | 用户正在使用,兼容性好 |
| LTK5128 | 5W | 官方推荐,性能稳定 |
六、完整调试检查清单
6.1 硬件检查
□ 确认使用AB类功放(非D类)
□ AEC参考信号取自功放后级(输出端)
□ 隔直电容已安装(100nF)
□ 衰减电阻值正确(根据功率选择)
□ AEC_IN引脚焊接良好
□ 麦克风连接正常
□ 功放增益设置合理
6.2 信号测量
□ 测量功放输出幅度(空载和带载)
□ 测量AEC_IN端信号幅度(应0.5-1.5Vpp)
□ 验证信号波形无失真
□ 检查相位关系(后级采样应与喇叭同步)
6.3 固件配置
□ 平台已选择"语音识别+AEC打断"模式
□ 麦克风配置选择单MIC
□ 固件已重新生成并烧录
6.4 功能验证
□ 静音环境唤醒测试(6米范围)
□ 播放中唤醒打断测试
□ 不同音量下的打断测试
□ 不同距离下的打断测试
七、常见问题FAQ
Q1:为什么功放前级采样效果不好?
A:前级采样存在两个问题:
- 相位不同步:前级信号经过功放放大后相位会发生变化,导致AEC算法无法准确预测回声路径
- 幅度不匹配:前级信号幅度较小,经过衰减后可能不足以让芯片检测到
建议:始终采样功放后级(输出端)信号。
Q2:AEC_IN信号幅度多少合适?
A:根据CI1302芯片规格,AEC_IN引脚的输入信号幅度建议在0.5V - 1.5V(峰峰值)范围内。
- 过小(<0.3V):芯片无法检测到有效参考信号
- 过大(>2V):可能输入过载,导致失真
Q3:功放增益应该设置多少?
A:功放增益应根据前级信号幅度和目标输出功率来确定。
原则:
- 在保证输出功率的前提下,尽量使用较低增益
- 较低增益意味着功放工作更稳定
- 通过声学腔体设计提升实际音量
Q4:喇叭阻抗选择有什么讲究?
A:用户案例中使用的是0.9Ω喇叭,这是一个低阻抗设计。
| 喇叭阻抗 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 4Ω-8Ω | 标准,兼容性好 | 音量相对较小 | 通用产品 |
| 2Ω-4Ω | 较大音量 | 对功放要求高 | 中等功率产品 |
| <2Ω | 大音量 | 需要专业设计,易破音 | 特殊声学设计 |
注意:低阻抗喇叭需要功放有足够的驱动能力,否则可能输出失真。
Q5:MICBIAS引脚是否需要连接?
A:MICBIAS是麦克风偏置电压输出引脚,用于给驻极体麦克风提供工作电压。
- 使用板载麦克风:需要连接MICBIAS
- 使用外接麦克风:根据麦克风类型决定
- 仅AEC参考信号:不需要连接MICBIAS
Q6:如何验证AEC功能是否生效?
A:可以通过以下测试验证:
- 播放中唤醒测试:在设备播放音频时,尝试发出唤醒指令
- 对比测试:对比开启和关闭AEC功能时的唤醒率
- 不同距离测试:在3米、5米、8米不同距离测试打断效果
合格标准:播放音频时的唤醒率应达到静音时的70%以上。
八、官方参考电路
SmartPi官方提供的AEC参考电路(来自CI-03T系列模组设计):
┌─────────────────────────────────────────────────────────────┐
│ SmartPi官方AEC电路参考 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 功放输出端 ──┬── 100nF ───┬── 22kΩ ───┬── CI1302 AEC_IN │
│ │ (C19) │ (R12) │ │
│ │ │ │ │
│ │ └── 2.2kΩ ───┴── GND (R11) │
│ │ │
│ └──▶ 喇叭 │
│ │
│ 关键参数: │
│ - C19: 100nF 隔直电容 │
│ - R12: 22kΩ 上拉衰减电阻 │
│ - R11: 2.2kΩ 下拉到地电阻 │
│ - 衰减比: 约1:11 │
│ - 适用功放功率: 3W-6W │
│ │
└─────────────────────────────────────────────────────────────┘
技术支持建议:
“你直接按这个电路设计吧,这个是我们的另外一个模组的电气原理图。”
九、总结
CI1302的AEC回声消除功能是一个强大的特性,但要让其正常工作,硬件电路设计是关键。
核心要点回顾:
- 采样位置:务必采样功放后级(输出端)信号
- 功放类型:使用AB类功放,D类功放需要额外处理
- 信号衰减:根据功放功率选择合适的衰减比例(1/10 ~ 1/20)
- 功放增益:在满足输出功率的前提下,增益越低越稳定
- 信号幅度:AEC_IN端信号应保持在0.5-1.5Vpp范围内
快速检查清单:
- [ ] 使用AB类功放
- [ ] AEC参考取自功放输出端
- [ ] 衰减电阻值正确
- [ ] AEC_IN信号幅度正常
- [ ] 固件配置选择AEC打断模式
- [ ] 功能测试验证通过
如果按照以上步骤调试后效果仍不理想,建议:
- 使用示波器检查各点信号波形
- 联系技术支持提供详细的测试数据
- 考虑使用官方推荐的模组方案
文档版本:v1.0
创建日期:2026-02-11
适用芯片:CI1302、CI-03T系列、CI-33T系列
素材来源:技术交流群真实案例 + SmartPi官方文档(硬件设计FAQ)
