2. 核心概念解析
数据采集这件事,说白了就是决定你模型上限的环节。我见过太多团队,模型结构调得飞起,最后上线一测,唤醒率直接腰斩。为什么?数据源头就歪了。这一章我把这些年踩过的坑、流过的泪,都给你掰开揉碎讲清楚。
2.1 麦克风阵列选型:不是通道越多越好
很多人一上来就问:「我要做唤醒词,是不是用 8 麦阵列最好?」我的回答是:不一定。你得先想清楚你的产品形态。
| 阵列类型 | 通道数 | 适用场景 | 我的建议 |
|---|---|---|---|
| 单麦 | 1 | 近场、耳机、遥控器 | 成本最低,但远场基本没戏 |
| 双麦线阵 | 2 | 智能音箱、床头钟 | 能做简单波束成形,性价比高 |
| 4 麦环形 | 4 | 中高端音箱、车载 | 我最常用的方案,均衡 |
| 6-8 麦环形 | 6-8 | 会议设备、机器人 | 定位精度高,但数据复杂度翻倍 |
2.2 远场/近场数据比例:黄金分割在哪?
这个问题我每次培训都会被问到。我的经验是:远场数据至少要占到 60% 以上。为什么?因为近场数据太好收了——你拿个手机对着嘴录,信噪比轻松 30dB+。但真实场景呢?用户可能在 3 米外、5 米外喊你的设备。
我个人习惯的比例是这样的:
- 近场(0-0.5m): 20% —— 用于保证基础唤醒率
- 中远场(0.5-2m): 50% —— 主力数据,覆盖大多数使用场景
- 远场(2-5m): 30% —— 决定模型上限,这部分最难收
2.3 信噪比控制:别让模型学歪了
信噪比(SNR)这个指标,很多人只关注平均值。但真正决定模型鲁棒性的,是 SNR 的分布。我见过一个团队,所有训练数据的 SNR 都在 15-20dB 之间,模型在实验室跑得飞起。一上线,用户家里 SNR 只有 5dB,直接崩了。
我建议的数据 SNR 分布:
| SNR 范围 | 占比 | 说明 |
|---|---|---|
| 高 SNR(>20dB) | 20% | 近场、安静环境 |
| 中 SNR(10-20dB) | 50% | 日常家庭环境 |
| 低 SNR(0-10dB) | 30% | 厨房、空调旁、风扇前 |
2.4 常见噪声类型:空调、风扇、厨房
说到噪声,很多人第一反应是「加白噪声」。嗯,这其实是个误区。真实世界的噪声哪有那么温柔?我给大家列几个最要命的噪声类型:
- 空调噪声: 低频稳态,频谱集中在 100-500Hz。特点是「嗡嗡嗡」一直有,容易和唤醒词的元音部分混淆。我有个项目,唤醒词是「小爱同学」,结果空调一开,误唤醒率翻了三倍。
- 风扇噪声: 中频旋转噪声,有周期性。比空调更麻烦,因为它的频谱会随着转速变化。你想想看,风扇开一档和三档,噪声特征完全不一样。
- 厨房噪声: 这是最复杂的。油烟机、水龙头、切菜声、碗碟碰撞声……全是瞬态冲击噪声。我建议厨房场景的数据至少要占整体噪声数据的 15%,否则模型在厨房里基本是聋的。
- 其他常见噪声: 电视声、马路噪声、多人说话声(babble noise)、宠物叫声。
2.5 数据标注的坑:你以为标对了,其实全错了
数据标注,看起来最简单,实际上坑最多。我来说几个真实案例。
第一个坑:标注边界不一致。 唤醒词「你好小明」,有的人从「你」开始标,有的人从「你」之前 100ms 开始标。模型学到的就是「边界混乱」。我建议统一标准:唤醒词起始点前保留 200ms 静音段,结束点后保留 300ms。这样模型才能学会「什么时候该开始听」。
第二个坑:标注人员的主观性。 同一个音频,不同标注员可能给出不同的标签。尤其是「这个算不算唤醒词?」——用户说了一半被打断,算不算?我的做法是:建立标注规范文档,并且做交叉验证。至少两个人标注同一份数据,不一致的地方由专家仲裁。
第三个坑:负样本标注。 很多人只关注正样本(唤醒词),忽略了负样本(非唤醒词)。但负样本才是决定误唤醒率的关键。我建议负样本至少是正样本的 3-5 倍,而且要覆盖各种「听起来像唤醒词」的发音。
2.6 知识体系总览
下面这张图,我把数据采集的核心环节串起来了。你可以把它当作一个检查清单:
这张图把整个数据采集的流程串起来了。从麦克风选型开始,到远/近场比例、信噪比控制、噪声类型,最后落到数据标注。每一个环节都有对应的避坑点。我建议你每次做数据采集前,都拿这张图过一遍,能省掉很多后期返工的痛苦。