ESP32-S3 自定义唤醒词:INT8 TFLite Micro 离线推理
开源 ESP32 组件接收 16 kHz PCM 音频,在本地完成 Mel 特征提取和 INT8 TFLite 推理,运行时不需要把麦克风流发送到云端。
已验证边界:完整示例验证于 240 MHz ESP32-S3-HMI-DevKit,配置为 8 MB Octal PSRAM、16 MB Flash、ES7210 四麦克风、ESP-IDF 6.0.1 和 esp-tflite-micro 1.3.5。其他 ESP32-S3 需要适配麦克风/Codec BSP 和内存配置,其他 ESP32 系列尚未验证。
实测性能
在上述开发板上,Mel 特征提取约 28.5–33 ms,TFLite Invoke() 约 154.9–155.7 ms,每 160 ms 调度最新的 98 帧窗口。结果会随模型和硬件变化。
运行公开示例
当前公开 Demo 检测英文 Hey Robot,唤醒后可用语音命令切换 LED 颜色。模型文件与 head.h 必须配套替换。
git clone https://github.com/voicute/onnx-wakeword.git
cd onnx-wakeword/esp32/examples/esp32s3_hmi_devkit
idf.py set-target esp32s3
python patch_led_strip.py
idf.py build
idf.py -p COM6 flash monitor
替换为自定义唤醒词
训练管线可以为中文、英文、德语、法语或日语短语导出配套的 INT8 TFLite 模型和输出头。先在控制台评估 Basic 模型,下载后仍应在最终麦克风、距离和噪声条件下验证;特定声音造成的误触发可能需要收集为定制负样本继续训练。
开源组件与已测试示例:onnx-wakeword/esp32。
训练并评估 Basic 唤醒词模型