数据采集与标注:麦克风阵列选型、远场/近场数据采集规范、标注工具与质量把控
各位同学,咱们直接进入正题。唤醒词模型能不能做好,数据是地基。我见过太多团队花几个月调模型结构,最后发现是数据采集阶段埋了雷。这一章,我就把数据采集和标注的坑,一个一个给你们指出来。
2.1 麦克风阵列选型:别只看参数,要看场景
选麦克风阵列,说白了就是选「耳朵」。你想想看,唤醒词模型要在什么样的环境下工作?是放在客厅茶几上,还是嵌在智能音箱里,又或者是车载环境?场景不同,阵列的选型逻辑完全不同。
我个人习惯把阵列分成三类:
| 阵列类型 | 典型配置 | 适用场景 | 我踩过的坑 |
|---|---|---|---|
| 线性阵列 | 2~4 颗 MEMS 麦克风一字排开 | 电视、会议音箱(水平方向定位) | 垂直方向无区分,人站着和坐着唤醒率差 15% |
| 环形阵列 | 4~8 颗均匀分布在圆周上 | 智能音箱、桌面设备(360° 唤醒) | 直径太小(< 4cm)时,低频波束形成效果极差 |
| 球形阵列 | 多颗分布在球面 | 机器人、会议全向拾音 | 算法复杂度高,嵌入式芯片跑不动 |
2.2 远场/近场数据采集规范
数据采集这块,我把它拆成两个维度:距离和角度。很多团队只关注距离,忽略了角度覆盖,结果模型在侧面唤醒时直接「装死」。
2.2.1 近场采集(0.1m ~ 0.5m)
近场数据主要用于模拟用户贴近设备说话的场景,比如对着智能音箱的顶部喊「小爱同学」。近场采集相对简单,但有几个细节容易翻车:
- 距离梯度: 至少采集 0.1m、0.2m、0.3m、0.5m 四个距离点。我习惯在 0.3m 处多采 30% 的数据,因为这个距离是用户最自然的交互距离。
- 角度覆盖: 0°(正对)、±30°、±60°、±90°。注意,±90° 时人的嘴巴几乎对着麦克风的侧面,高频衰减严重,这个角度数据一定要够。
- 呼吸和喷麦: 近场采集时,呼吸声和「p」「t」等爆破音会被放大。我建议在麦克风前加一层防风海绵,否则模型会学到「喷麦特征」,导致误唤醒。
2.2.2 远场采集(0.5m ~ 5m)
远场才是真正考验功底的地方。远场数据要模拟真实家居环境,混响、背景噪声、人声干扰一个都不能少。
我总结了一套远场采集的「铁三角」规范:
- 混响时间(RT60)控制: 在消声室(RT60 < 0.1s)、普通客厅(RT60 ≈ 0.3~0.5s)、混响房间(RT60 > 0.8s)三种环境下分别采集。比例建议 1:2:1。
- 信噪比(SNR)梯度: 采集 SNR 从 -5dB 到 +20dB 的数据。我遇到过最坑的情况是,模型在安静环境下唤醒率 99%,但一开空调(SNR ≈ 5dB)直接掉到 60%。
- 干扰声类型: 电视声、音乐声、厨房碗碟声、儿童哭闹声。每种干扰声至少采集 30 分钟。
2.3 标注工具与质量把控
数据采完了,标注才是真正的「体力活+技术活」。我见过不少团队用开源工具凑合,结果标注质量一塌糊涂,模型训练出来全是「幻觉」。
2.3.1 标注工具选型
我个人推荐以下三款工具,各有侧重:
| 工具名称 | 核心功能 | 适合团队规模 | 我的评价 |
|---|---|---|---|
| Praat | 语音标注、频谱分析、边界微调 | 1~5 人小团队 | 免费、轻量,但多人协作困难 |
| Audacity + LabelMe | 波形标注、标签管理、批量导出 | 5~20 人 | 组合使用,成本低,但需要写脚本 |
| 专业标注平台(如标贝、海天瑞声) | 全流程管理、质检、自动预标注 | 20 人以上或商业项目 | 贵,但省心。我建议预算充足时直接上 |
2.3.2 标注规范:边界决定成败
唤醒词标注最核心的就是「边界」。唤醒词的起始点和结束点标偏了,模型学到的特征就是错的。
我制定了一套标注规范,你可以直接拿去用:
- 起始边界: 从唤醒词第一个音节的声母爆发点开始。比如「小爱同学」的「x」音,要从摩擦声开始的地方标起。
- 结束边界: 到最后一个音节的韵母能量衰减到背景噪声水平为止。注意,不要包含尾音的气声。
- 模糊区域处理: 如果唤醒词被背景噪声部分掩盖,标注员要在备注中写明「部分被掩蔽」,并给出置信度(高/中/低)。
2.3.3 质量把控:用数据说话
质量把控不能只靠「感觉」。我建立了一套量化指标:
- 标注一致性(Cohen's Kappa): 两个标注员对同一段数据的标注结果,Kappa 值必须 ≥ 0.8。低于这个值,说明标注规范没对齐。
- 边界偏差分布: 统计所有标注样本的边界偏差,偏差在 ±10ms 内的样本占比应 ≥ 90%。
- 误标率: 随机抽取 500 条数据,人工复核,误标率(包括漏标、多标、边界错误)应 ≤ 2%。
嗯,这里要注意,误标率 2% 听起来不高,但如果你有 10 万条数据,那就是 2000 条错误数据。这些错误数据会直接拉低模型的唤醒率,尤其是那些「边界标错」的样本,会让模型学到错误的时序特征。
2.4 数据采集与标注全流程框架
下面这张图是我自己总结的数据采集与标注全流程,你可以把它贴在工位上:
这张图的核心逻辑是:阵列选型决定数据采集的上限,近场和远场数据要分开采集但统一标注,质量把控是最后的「守门员」。反馈回路意味着,如果质量把控发现标注问题,整批数据要退回重新标注,而不是「凑合用」。