ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ONNX 唤醒词模型怎么训练?从准备数据到导出 ONNX 的完整链路

2026/8/16 2:39:19 拓冰建站 浏览量
ONNX 唤醒词模型怎么训练?从准备数据到导出 ONNX 的完整链路 ONNX 唤醒词模型怎么训练从准备数据到导出 ONNX 的完整链路先说一个常见的误解一提到训练模型很多人脑子里跳出来的是GPU、几万条数据、一个算法团队。于是小团队做语音产品直接在自己训这一步就被劝退了——转头去买几十万的 ASR 授权或者绑芯片的硬件模组。但唤醒词模型不是这么训的。它跟通用语音识别ASR是两码事训一个能用的 ONNX 唤醒词模型远没有你想的那么重。这篇文章把ONNX 唤醒词模型怎么训练从头讲清楚链路怎么走、每一步的坑在哪、以及不想自己训的话还有什么省事的路。先分清训的是 KWS不是 ASR很多人以为识别一句话就是语音识别但唤醒词模型解决的是完全不同的任务。唤醒词 / KWS语音识别 ASR任务只判断某个固定词有没有出现把整句话转成文字模型大小100KB ~ 2MB50MB ~ 200MB单次推理 5ms200 ~ 500ms运行方式常驻监听、低功耗唤醒后才启动典型场景“小爱同学”、命令词开关灯语音输入、对话理解一句话产品只需要识别 2~10 个固定词就用 KWS别上 ASR。又省资源又快。导出成 ONNX 是因为它能被 onnxruntime 在 Android、Linux、Windows、WebWASM、ESP32 上统一跑——一套模型到处部署。训练一条链路五步走想好唤醒词 │ ▼ ① 准备数据 —— 正样本唤醒词 负样本噪声、其他语音 │ ▼ ② 特征提取 —— 音频 → Mel 频谱 │ ▼ ③ 训练模型 —— 一个小 DSCNN 就够 │ ▼ ④ 评估 —— 只看 recall 和误触发 │ ▼ ⑤ 导出 ONNX —— onnxruntime 到处跑① 准备数据最费劲的一步正样本是唤醒词的音频要覆盖不同说话人、不同口音、不同距离音量。一般用 TTS 合成 真人录音混合。负样本是除了唤醒词之外的一切——普通话/方言、噪声、音乐、键盘声。负样本的质量直接决定误触发率。再加点数据增强加噪、变速、混响模拟真实环境。这一步是 DIY 最大的坑要凑出高质量的多说话人数据通常得几小时到几十小时音频小团队根本拿不出来。② 特征提取音频转 Mel 频谱模型不吃原始波形先算 Mel 频谱或 MFCC。参数基本固定16kHz 采样、单声道、25ms 窗、10ms 跳、几十个 mel 频带。这段是标准套路照着抄就行没什么好纠结的。③ 训练一个小 DSCNN 就够唤醒词模型常用 DSCNN深度可分离卷积——参数少、跑得快。正样本标 1、负样本标 0做二分类几个 epoch 就收敛。训练命令示意 --word 打开灯光 --negative /data/noise --epochs 60真实工程里还会加 SpecAugment、更深的 block、以及困难负样本挖掘hard negative mining。这里只讲链路不展开。④ 评估只看两个指标Recall召回率喊唤醒词 10 次正确识别几次。上线至少要 90%理想 95%。FA/h每小时误触发放着不喊一小时内误唤醒几次。上线要压到 1 以内。这两个指标互相拉锯想多识别就得多容忍误触发反之亦然。⑤ 导出 ONNX训练完把模型 export 成 ONNX配 onnxruntime 加载。部署侧几行代码就能跑importonnxruntimeasort sessort.InferenceSession(wake_word.onnx,providers[CPUExecutionProvider])probsess.run([output],{input:mel_input})[0]ifprob0.5:trigger_wake_word()每一步的坑能训出来 ≠ 能上线上面这条链路看着不难但训出一个能跑 demo 的模型和训出一个能交给用户用的模型中间隔着一条鸿沟数据量是硬门槛。多说话人 海量负样本普通人没有这个数据资源。非英文尤其难。主流开源方案如 OpenWakeWord官方只支持英文因为训练数据基于英文 TTS。要训法语、中文声调语言更难、日语得自己找对应语言 TTS精度还要打折扣。以 OpenWakeWord 社区公开的模型评估数据为例很多模型的Recall 只有 40%~60%非英文模型的FA/h 甚至高达每小时几十次。这个水平自己玩玩可以给产品上线就是灾难——喊三次漏两次、没事自己乱触发用户直接退货。调参是个无底洞。连续帧过滤、阈值、冷却、防误触发逻辑……每个都影响最终体验都得自己反复试。不想自己训一条更省事的路如果不想搭上面这一整套数据 特征 训练 调参也有更省事的选择输入关键词系统自动训十分钟直接出 ONNX。输入关键词如打开灯光 → 自动 TTS 合成多说话人数据 数据增强 → 云端自动训练 → 10~20 分钟下载标准 ONNX 模型几个对开发者比较关键的点模型小、快100~170KB推理 5ms完全离线不依赖云端。多语言中文、英文逐步覆盖——这是自训最难、也最省事的地方。跨平台导出的 ONNX 配合开源引擎Android / Linux / Windows / macOS / ESP32 / Web 六端统一部署。可商用生成的模型免费授权商用不限设备数。拿到模型后用法跟上面一样onnxruntime 加载 → 喂 Mel 频谱 → 拿概率 → 阈值判断。最后你的情况建议有数据、有 ML 基础、想完全自控自己训五步链路 DSCNN要英文唤醒词、能接受调参折腾用 OpenWakeWord 等开源方案要非英文、要快、要能商用上线一键方案输入关键词直接出 ONNXONNX 唤醒词模型怎么训练核心难点从来不是模型结构而是数据 非英文 把 recall/误触发调到能上线。想清楚自己在这三点上有多少投入就知道该走哪条路了。在线训练www.voicute.com推理引擎github.com/voicute/onnx-wakewordApache 2.0 开源