ONNX 格式是什么?自定义唤醒词模型可以部署到哪些平台?
ONNX 是一种可移植的模型格式。它可以帮助同一个唤醒词模型进入不同的推理环境,但 ONNX 文件本身不是完整的语音助手,也不等于所有设备都能直接安装。
一、ONNX 到底是什么
ONNX(Open Neural Network Exchange)描述了神经网络的结构、权重、输入和输出。推理运行时加载 ONNX 文件后,才能在 CPU、手机、电脑或浏览器中执行模型。
对于自定义唤醒词,完整链路通常是:
麦克风采集 → 音频预处理 → Mel 特征 → ONNX 模型 → 阈值与防误触 → 业务动作
因此,ONNX 只解决“模型如何保存和推理”,不会自动完成麦克风采集、阈值设置、连续帧确认、冷却时间和设备控制。
二、ONNX 唤醒词和 ASR 有什么区别
| 项目 | KWS / 唤醒词 | ASR / 语音识别 |
|---|---|---|
| 任务 | 判断固定短语是否出现 | 把连续语音转换成文字 |
| 典型模型 | 几十 KB 到几百 KB | 几十 MB 到数百 MB |
| 运行方式 | 常驻监听、低延迟 | 被唤醒后临时启动 |
| 适合场景 | 唤醒词、开灯、暂停、下一首 | 自由对话和开放式语音输入 |
如果产品只需要识别几个固定词,不需要把每句话转成文字,那么 KWS 通常比完整 ASR 更轻量,也更容易在本地运行。
三、哪些平台可以运行 ONNX 唤醒词模型
| 平台 | 推理方式 | 说明 |
|---|---|---|
| Android | ONNX Runtime / TFLite | 适合 App 内本地监听和离线控制。 |
| Linux / Raspberry Pi | ONNX Runtime / Python / C++ | 适合网关、机器人、桌面设备和 Home Assistant 外部服务。 |
| Windows / macOS | ONNX Runtime | 适合桌面工具、测试程序和本地自动化。 |
| Web | ONNX Runtime Web + WASM/WebGL | 只能在网页或网页应用获得权限后监听。 |
| iPhone | iOS runtime / Core ML 适配 | 可以在自有 App 中开发接入,不能替换 Siri。 |
| Home Assistant | Wyoming 或外部本地服务 | 只影响你自己的 Home Assistant 语音链路。 |
四、ESP32 能不能直接运行 ONNX
ESP32-S3 是一个重要例外:通常不是直接运行完整 ONNX Runtime,而是把模型转换、量化为 INT8 TFLite,再使用 TensorFlow Lite Micro 或对应嵌入式 runtime。
因此更准确的说法是:同一个训练结果可以面向 ONNX 和 TFLite 等目标格式导出;ESP32-S3 使用适合微控制器的 INT8 TFLite 版本,而不是直接把桌面端 ONNX 文件复制进去。
五、Amazon Echo、Google Home 和 Siri 能不能改唤醒词
不能把 Voicute 模型直接安装进现有 Amazon Echo、Google Home/Nest 或 Siri,也不能把它们的原厂唤醒词任意替换。
自定义模型需要运行在你控制的 App、电脑、树莓派、ESP32-S3 或自制语音设备中。之后可以由外部网关调用 Home Assistant、SwitchBot、Nature Remo 或其他 API 执行动作。
也就是说,“模型可以跨平台推理”和“可以修改第三方产品固件”是两件不同的事。
六、如何把 ONNX 模型作为 Wake Word 使用
- 确定唤醒词或固定命令,并生成 ONNX/TFLite 模型。
- 选择目标设备和对应的音频采集方式。
- 接入推理 runtime,按照模型要求生成 Mel 特征。
- 在回调中加入连续帧确认、阈值、冷却时间和误触发保护。
- 识别成功后再启动 ASR,或者直接执行固定动作。
开源 onnx-wakeword 推理引擎提供 Android、Web、Python、桌面和嵌入式方向的示例;最终仍要在目标麦克风、距离和噪声环境中测试召回率与误触发率。
七、从哪里获得自定义模型
如果有算法团队,可以自行准备正负样本、训练 KWS 模型并导出目标格式。如果希望快速验证产品词,也可以直接在 Voicute 输入关键词,训练并下载模型,再配合开源推理引擎部署。