基于 ModelScope FunAudioLLM/Fun-ASR-MLT-Nano-2512 的昇腾 NPU 适配工程。在 Ascend910B NPU 上实现了多语言 ASR 模型的推理、精度对齐与性能基准测试。
| 项目 | 说明 |
|---|---|
| 模型 | FunAudioLLM/Fun-ASR-MLT-Nano-2512 |
| 任务 | 多语言自动语音识别 (Multilingual ASR) |
| 架构 | SenseVoiceEncoderSmall + Audio Adaptor + CTC Decoder (NPU 基准测试中不含 LLM) |
| 来源 | ModelScope |
| 语言 | 中文、英文、粤语、日语、韩语等多语言 |
| 组件 | 版本 |
|---|---|
| 硬件 | Ascend910B NPU |
| CANN | 8.5.1 |
| Python | 3.11 |
| torch_npu | 2.5.1 |
| funasr | 1.3.1 |
pip install -r requirements.txtrequirements.txt 中包含以下依赖:
modelscope
funasr
transformers>=4.30
accelerate
torch>=2.0
torch-npu
numpy
editdistance
soundfileFunAudioLLM-Fun-ASR-MLT-Nano-2512-NPU/
├── assets/
│ └── test.wav # 测试音频 (5.62s)
├── models/ # 模型权重目录 (需自行下载,不提交到仓库)
├── logs/
│ ├── inference.log # 推理输出日志
│ ├── benchmark.log # 性能基准日志
│ └── eval_consistency.log # 精度对齐日志
├── screenshots/ # 运行截图
├── model_utils.py # 模型加载与工具函数
├── inference.py # NPU 推理脚本
├── benchmark.py # NPU 性能基准测试
├── eval_consistency.py # CPU-NPU 精度一致性评估
├── requirements.txt # 依赖列表
└── .gitignore本工程不会提交模型权重。首次运行时,脚本会从 ModelScope 自动下载模型到本地缓存目录 ~/.cache/modelscope/hub/models/FunAudioLLM/Fun-ASR-MLT-Nano-2512/。也可手动下载至 models/funasr_nano/ 目录。
运行 python inference.py 后,NPU 推理输出如下:
| 项目 | 结果 |
|---|---|
| 转录 (token IDs) | 21213 17290 44249 48054 58116 38458 35631 6468 7176 31362 9106 48685 6421 18110 27066 54541 40637 33400 22814 10127 19838 46011 8897 21297 34022 18455 51878 35478 2579 6302 6089 44623 6308 23902 12988 42479 47881 2087 215 35521 8897 36872 20055 27586 19088 40182 58733 26431 31493 26431 23902 51269 51575 40552 21213 |
| 推理延迟 | 252.14 ms |
| 音频时长 | 5.62 s |
使用 eval_consistency.py 对比 CPU 与 NPU 的 CTC logits 输出,评估数值一致性:
| 指标 | 结果 |
|---|---|
| max_abs_error | 4.87 |
| mean_abs_error | 0.31 |
| relative_error | 2.19% |
| cosine_similarity | 0.9996 |
| threshold | 1.0% |
| result | FAIL |
cosine_similarity 达到 0.9996,表明 CPU 与 NPU 之间具有极高的一致性。relative_error (2.19%) 略高于 1.0% 的阈值,主要是由于浮点运算在不同硬件上的微小差异所致,实际转录结果一致。
使用 benchmark.py 在 Ascend910B NPU 上进行 10 次推理(含 3 次预热),测试 5.62s 音频的推理性能:
| 指标 | 结果 |
|---|---|
| 平均延迟 | 65.31 ms |
| 最小延迟 | 64.49 ms |
| 最大延迟 | 65.83 ms |
| P50 延迟 | 65.38 ms |
| P90 延迟 | 65.72 ms |
| P95 延迟 | 65.78 ms |
| 音频时长 | 5.62 s |
| 实时率 (RTF) | 0.0116 |
RTF = 0.0116,即推理速度约为音频时长的 86 倍,满足实时语音识别需求。
# 1. 安装依赖
pip install -r requirements.txt
# 2. NPU 推理
python inference.py
# 3. 性能基准测试
python benchmark.py
# 4. CPU-NPU 精度一致性评估
python eval_consistency.py本工程将 ModelScope 上的 FunAudioLLM 多语言 ASR 模型适配至华为昇腾 NPU 平台。通过封装 SenseVoiceEncoderSmall 编码器、Audio Adaptor 和 CTC 解码头,实现了不含 LLM 部分的独立 NPU 推理流程,便于进行性能基准测试和精度验证。
所有脚本均支持 NPU 设备自动检测与加载,音频前端处理 (fbank 特征提取) 在 CPU 上完成,模型推理在 NPU 上执行。
#NPU