Yanguan/speech_sanm_kws_phone-xiaoyun-commands-online
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

SANM语音唤醒模型 (NPU适配版)

模型描述

移动端语音多命令词唤醒模型,基于FunASR框架的SANM结构,参数量约3.28M。

支持命令词:

  • 主唤醒词:小云小云、你好小云、小宝小宝、你好问问、嗨小问
  • 音乐场景:播放音乐、增大音量、减小音量、继续播放、暂停播放、上一首、下一首、单曲循环、随机模式、列表循环
  • 地图场景:取消导航、退出导航、放大地图、查看全程、缩小地图、不走高速、躲避拥堵、避免收费、高速优先
  • 家电场景:返回桌面、睡眠模式、蓝牙模式、打开灯光、关闭灯光、打开空调、关闭空调、拍照拍照、我要拍照
  • 通用场景:上一页、下一页、上一个、下一个、换一批、打开录音、关闭录音

NPU适配说明:

  • 已验证设备:Ascend 910
  • CANN版本:8.5.1
  • PyTorch版本:2.9.0+cpu
  • torch_npu版本:2.9.0.post1

环境依赖

pip install funasr>=1.1.7 modelscope soundfile
# 注意:不需要ffmpeg,已通过soundfile monkey-patch绕过

模型下载

原始权重来源: https://modelscope.cn/models/iic/speech_sanm_kws_phone-xiaoyun-commands-online

modelscope download --model iic/speech_sanm_kws_phone-xiaoyun-commands-online --local_dir ./weights

快速开始

NPU推理

python3 inference.py --audio assets/kws_xiaoyunxiaoyun.wav --keywords "小云小云" --device npu

输出示例:

[INFO] 使用NPU设备: Ascend910_9362
[INFO] 模型路径: weights
[INFO] 输入音频: assets/kws_xiaoyunxiaoyun.wav
[INFO] 关键词: 小云小云
[INFO] 推理设备: npu
[INFO] 模型加载耗时: 3.138s
[INFO] 推理耗时: 0.287s

========== 推理结果 ==========
[{'key': 'kws_xiaoyunxiaoyun', 'text': 'detected 小云小云 0.965860'}]
==============================

CPU推理

python3 inference.py --audio assets/kws_xiaoyunxiaoyun.wav --keywords "小云小云" --device cpu

性能测试

python3 benchmark.py --device npu --runs 20

NPU性能结果:

配置Avg(ms)P50(ms)P90(ms)P99(ms)QPSRTF
默认配置 [4,8,4]1618.231608.181676.201709.040.620.357

精度评测

python3 accuracy.py

评测结果:

关键词CPU StatusCPU ScoreNPU StatusNPU ScoreScore DiffMatch
小云小云detected0.965860detected0.9658600.000000PASS
播放音乐rejected0.000000rejected0.0000000.000000PASS
暂停播放rejected0.000000rejected0.0000000.000000PASS
增大音量rejected0.000000rejected0.0000000.000000PASS
减小音量rejected0.000000rejected0.0000000.000000PASS

结论: NPU与CPU推理结果完全一致,最大分数差异为0,精度评测 PASS。

文件说明

.
├── inference.py      # NPU推理脚本
├── benchmark.py      # 性能测试脚本
├── accuracy.py       # 精度评测脚本
├── README.md         # 部署文档
├── assets/           # 测试音频
│   └── kws_xiaoyunxiaoyun.wav
├── weights/          # 模型权重(需下载)
└── output/           # 输出结果

模型局限性

  • 单一模型支持的命令词较多,可能有特定场合/特定人群唤醒率偏低或误唤醒偏高问题
  • 流式推理,batch_size固定为1
  • chunk_size必须与模型训练配置一致(默认[4,8,4])

引用

@inproceedings{Gao2020SANMME,
  title={SAN-M: Memory Equipped Self-Attention for End-to-End Speech Recognition},
  author={Zhifu Gao and Shiliang Zhang and Ming Lei and Ian Mcloughlin},
  booktitle={Interspeech},
  year={2020}
}