STM32N6 集成 NPU 的 MCU:设备端语音识别声学模型
STM32N6 微控制器内置 NPU,可实现任意语音的实时声学建模。功耗仅 0.215 W,在 dev_clean 数据集上 PER 为 5.3%,对 500 ms 音频的推理仅需 52 ms。int8 量化模型完全离线运行,无需云端或网络,非常适合小型设备。
语音识别系统架构
系统分为三个组件,以优化内存占用和识别精度:
- 声学模型:将原始音频信号转换为音素流。这一资源密集型部分运行在 STM32N6 NPU 上。
- 解码器:利用词典和语言语法将音素组合成单词。
- 重评分:结合上下文优化假设,提高正确率。
我们已实现并测试了声学模型——核心组件。解码器和重评分模块正在开发中,它们资源占用更低。
演示模式下,模型可实时处理任意短语。解释器通过查找表将音素映射为单词,同时显示原始音素和解析结果。当前词汇量有限;完整解码器结合语言模型将支持任意短语。
功耗与硬件规格
活跃推理时,总功耗 0.215 W(未优化):
| 组件 | 功耗 |
|----------------------------|------------|
| NPU + Cortex-M55 | 160 mW |
| 外部存储(Flash + PSRAM) | 45 mW |
| 外部 MCU 引脚 | ~10 mW |
| 总计 | ~215 mW |
NPU 利用率 10.4%,Cortex-M55 仅用于梅尔谱图生成,几乎闲置。可优化包括核心休眠、时钟节流和最大化 NPU 负载。在唤醒词 → 识别 → 休眠场景下,背景功耗极低,有利于长续航电池。
来自 LibriSpeech 和板载麦克风的梅尔谱图,即使在噪声环境中也能保留语音特征。噪声抑制是下一步计划。
精度指标与性能
模型:850 万参数,在 LibriSpeech 上训练,量化至 int8。
| 指标 | 值 |
|----------------------|-----------|
| PER (dev_clean) | 5.3% |
| PER (dev_other) | 14.4% |
| 量化损失 (dev_other / dev_clean) | 0.4% / 0.15% |
| NPU 推理 (500 ms 音频) | 52 ms |
| 总延迟 | 985 ms |
PER(音素错误率)衡量音素级错误。指标在设备上运行:验证数据集经 NPU 处理,结果通过 UART 输出。延迟包括 485 ms“前瞻”窗口用于预测。
与同类模型对比
| 模型 | 参数量 | PER (test_clean) | WER (dev_clean) |
|------------------------|----------|------------------|-----------------|
| STM32N6 声学模型 | 8.5M | 5.51 | — |
| wav2vec 2.0 Base | 95.04M | 5.74 | 6.43 |
| HuBERT Base | 94.68M | 5.41 | 6.42 |
| QuartzNet 5x5 | 6.7M | — | 5.39 |
STM32N6 模型 PER 达 5.51%,参数量仅为 wav2vec/HuBERT 的 1/11。在 MCU 上实时运行,使用 72 个音素——一项艰巨成就。预期解码后 WER:dev_other 上 16–25%,参数 8–16M。
资源占用与扩展性
使用率:RAM 18%,NPU 10.4%。有充足余量,可将模型规模扩至 4 倍或添加并行任务。功耗优化将进一步延长电池寿命。
开发中:
- 带概率词选的音素解码器。
- 上下文感知的语言模型。
- NPU 输入前的噪声抑制。
集成 NPU 的 MCU 应用场景
不适合长篇听写(需 >100 MB),但优于关键词唤醒(KWS):支持任意短语。
- 智能家居: “客厅调暖” → 提取房间和设置。
- 数据录入: “血压 132” → 数字 + 上下文。
- 工业:机床旁 “转速 20%”。
- 医疗:监护仪 “餐后血糖”。
- 物流: “B12 货架 — 3 箱”。
- 交通: “返回基地” 离线。
- 玩具:儿童语音无云端。
- 辅助技术:假肢语音控制。
关键要点
- STM32N6 声学模型:dev_clean 上 PER 5.3%,功耗 0.215 W,实时处理。
- 850 万参数,int8 量化精度损失微小。
- 超越 KWS:任意语音,非模板。
- 可扩展:RAM 18%,NPU 负载 10.4%。
- 最佳场景:离线命令与数据录入。
— Editorial Team
暂无评论。