返回首页

用于语音的 MCU 上的 NPU:STM32N6 和声学

本文描述了在带有 NPU 的 STM32N6 微控制器上实现声学语音识别模型。在 dev_clean 上实现了 PER 5.3%、0.215 W 功耗和 52 ms 推理。与大型模型比较、解码器计划以及在自主设备中的应用。

微控制器上的语音识别:STM32N6 NPU 实战
Advertisement 728x90

STM32N6 集成 NPU 的 MCU:设备端语音识别声学模型

STM32N6 微控制器内置 NPU,可实现任意语音的实时声学建模。功耗仅 0.215 W,在 dev_clean 数据集上 PER 为 5.3%,对 500 ms 音频的推理仅需 52 ms。int8 量化模型完全离线运行,无需云端或网络,非常适合小型设备。

语音识别系统架构

系统分为三个组件,以优化内存占用和识别精度:

  • 声学模型:将原始音频信号转换为音素流。这一资源密集型部分运行在 STM32N6 NPU 上。
  • 解码器:利用词典和语言语法将音素组合成单词。
  • 重评分:结合上下文优化假设,提高正确率。

我们已实现并测试了声学模型——核心组件。解码器和重评分模块正在开发中,它们资源占用更低。

Google AdInline article slot

演示模式下,模型可实时处理任意短语。解释器通过查找表将音素映射为单词,同时显示原始音素和解析结果。当前词汇量有限;完整解码器结合语言模型将支持任意短语。

功耗与硬件规格

活跃推理时,总功耗 0.215 W(未优化):

| 组件 | 功耗 |

Google AdInline article slot

|----------------------------|------------|

| NPU + Cortex-M55 | 160 mW |

| 外部存储(Flash + PSRAM) | 45 mW |

Google AdInline article slot

| 外部 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

Advertisement 728x90

继续阅读