Appearance
采集与播放链路
采集链路把空气中的声音变成数字音频,播放链路把数字音频变回声音。语音算法依赖这两条链路提供稳定、同步、低延迟的数据。
采集链路
典型麦克风采集可以理解成“把空气振动翻译成一串数字”:
| 阶段 | 形象理解 | 关键风险 |
|---|---|---|
| 声波进入声孔 | 声音先经过外壳、网布和导声腔 | 堵孔、漏音、频响改变 |
| 麦克风转换 | 把声压变化变成电信号 | 灵敏度差异、底噪、饱和 |
| 模拟或数字前端 | 放大、滤波或输出 PDM/I2S | 增益不当、时钟错误 |
| Codec/SoC 接收 | 把信号放进系统音频通道 | 声道顺序、采样率、同步 |
| 音频缓冲 | 按一帧一帧交给算法 | 丢帧、延迟、抖动 |
麦克风类型
| 类型 | 特点 | 使用场景 |
|---|---|---|
| ECM | 驻极体麦克风,成本低,模拟输出 | 老设备、低成本采集 |
| MEMS 模拟麦 | 体积小、一致性较好,模拟输出 | 手机、耳机、IoT |
| MEMS 数字麦 | PDM 或 I2S 输出,抗模拟噪声能力更好 | 阵列、紧凑型设备 |
数字麦减少了模拟走线受干扰的问题,但对时钟、布线、PDM 解码和多麦同步要求更高。
增益设计
采集增益要同时满足两件事:远距离说话不能太小,近距离大声说话不能削顶。
检查方法:
- 在目标距离播放或说出标准音量语音。
- 观察 PCM 峰值和 RMS。
- 用最大声压场景测试是否削顶。
- 用静音场景测试底噪。
- 记录模拟增益、数字增益和 AGC 开关状态。
录音峰值长期低于 -30 dBFS,可能导致有效位数不足;峰值经常接近 0 dBFS,可能存在饱和或削顶。
播放链路
播放链路是采集链路的反方向:系统先准备数字音频,经过混音、数模转换、功放和扬声器,最后重新变成空气里的声波。
播放链路的关键不是“有声音”,而是音量、失真、延迟和回声路径是否可控。
| 环节 | 关注点 |
|---|---|
| Mixer | 多路音频混音、音量策略、提示音优先级 |
| DAC | 采样率、动态范围、底噪 |
| 功放 | 输出功率、削顶、保护策略 |
| 扬声器 | 频响、失真、腔体匹配 |
| 系统音量 | 用户音量、媒体音量、通话音量是否统一管理 |
接口与数据格式
| 接口 | 用途 | 注意点 |
|---|---|---|
| I2S | Codec 与 SoC 之间传 PCM | 主从时钟、左右声道顺序、位宽 |
| PDM | 数字麦常用输出 | 时钟频率、抽取滤波、多麦同步 |
| TDM | 多声道音频传输 | Slot 配置、通道映射 |
| USB Audio | 外接声卡、会议设备 | 采样率协商、延迟、系统兼容 |
| Bluetooth Audio | 耳机和无线音频 | 编码延迟、码率、双向通话限制 |
多麦阵列最容易出错的是声道顺序。算法配置中的 mic0/mic1/mic2 必须和实际空间位置一致,否则方向估计会整体偏移。
Buffer 与延迟
音频系统通常按帧处理。Buffer 太小,实时性好但容易 underrun 或 overrun;Buffer 太大,稳定但延迟上升。
延迟来源:
- ADC/DAC 和 Codec 内部滤波。
- DMA Buffer。
- 操作系统音频栈。
- 算法帧长和 look-ahead。
- 网络传输和云端推理。
- TTS 合成首包时间。
语音交互里,唤醒和 ASR 越靠前越需要低延迟;播放和 TTS 可以做缓存,但不能让首句反馈明显滞后。
采集播放同步
AEC 依赖播放参考信号和麦克风采集信号对齐。如果播放参考信号延迟不准,回声消除会明显下降。
需要确认:
- 参考信号取自系统播放链路的哪个位置。
- 参考信号是否包含实际播放的所有音频。
- 播放参考与麦克风信号采样率是否一致。
- 两条链路是否存在时钟漂移。
- 蓝牙、网络播放或系统混音是否引入额外延迟。
检查思路
采集播放问题先不要直接调算法,先把链路拆开确认:
| 检查点 | 判断目标 |
|---|---|
| 设备是否选对 | 录音和播放是否来自目标麦克风、目标扬声器 |
| 格式是否一致 | 采样率、位深、声道数是否和算法配置一致 |
| 音量是否合理 | 近处大声不削顶,远处小声仍有足够幅度 |
| 声道是否正确 | 多麦顺序是否和空间位置一致 |
| 参考是否完整 | AEC 能否拿到所有实际播放的声音 |
| 延迟是否稳定 | 采集和播放之间是否存在漂移或突发抖动 |
常见故障
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 录音全 0 | 设备节点错、Codec 未上电、通道未打开 | 查声卡、mixer、驱动日志 |
| 录音只有噪声 | 时钟错误、PDM 配置错误、模拟地噪 | 查采样率、时钟、布线 |
| 左右声道反了 | I2S/TDM slot 配置或声道映射错误 | 用分路测试音确认 |
| 播放卡顿 | Buffer 太小、CPU 抢占、驱动 underrun | 增加 Buffer、查调度 |
| AEC 效果差 | 参考信号缺失或延迟漂移 | 对齐参考和麦克风录音 |
| 大音量回声重 | 扬声器非线性、功放削顶、结构漏音强 | 限制音量、优化结构和 AEC |
总结
采集与播放链路是语音系统的地基。先保证设备节点、格式、声道、增益、同步和延迟正确,再进入算法调参。任何声学算法上线前,都应保留原始多路录音和播放参考,方便复现和回放。
