g
gcw_AVRCax4T/whisper-tiny-onnx
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Whisper Tiny ONNX - 昇腾NPU适配

模型介绍

Whisper Tiny 是OpenAI推出的轻量级语音识别模型(37.8M参数),改编自ModelScope仓库 manyeyes/whisper-tiny-onnx。本仓库提供了通过torch_npu在华为昇腾910 NPU上运行Whisper Tiny的NPU适配推理脚本及评估结果。

模型架构

组件配置
编码器层数4
解码器层数4
隐藏层维度384
注意力头数6
词汇表大小51,865
梅尔频谱带数80
最大音频上下文1,500(16kHz下30秒)
最大文本上下文448
参数数量37.8M(FP32格式144 MB)
支持语言99种(多语言)

源模型

  • ModelScope:manyeyes/whisper-tiny-onnx
  • 原始模型:OpenAI Whisper Tiny
  • 任务:自动语音识别(ASR)

快速开始

环境要求

  • 硬件:华为昇腾910 NPU(Atlas 800 A2/A3)
  • CANN:8.5.1+
  • Python:3.11+
  • PyTorch:2.9.0+
  • torch_npu:2.9.0+

安装

# Install ModelScope
pip install modelscope

# Download model
modelscope download --model manyeyes/whisper-tiny-onnx --local_dir ./model

# Install dependencies
pip install torchaudio soundfile scipy librosa

推理

# Generate test audio and run CPU inference (baseline)
python inference.py --audio /tmp/test_audio.wav --generate-audio --device cpu

# NPU inference
python inference.py --audio /tmp/test_audio.wav --device npu:0

# Accuracy comparison (CPU vs NPU)
python inference.py --audio /tmp/test_audio.wav --device npu:0 --compare

# Performance benchmark with 20 iterations
python inference.py --audio /tmp/test_audio.wav --device npu:0 --benchmark 20

Python API

from inference import load_model, load_audio, compute_mel, greedy_decode, decode_tokens

# Load model on NPU
model = load_model("model/tiny.pt", device="npu:0")

# Load and preprocess audio
audio = load_audio("audio.wav")
mel = compute_mel(audio, device="npu:0")

# Run inference
tokens, enc_time = greedy_decode(model, mel, language="en", device="npu:0")
text = decode_tokens(tokens)
print(text)

评估结果

测试环境

项目规格
NPUAscend 910 (9362) x2
CANN8.5.1
PyTorch2.9.0+cpu
torch_npu2.9.0.post1+gitee7ba04
精度FP32
测试日期2026-05-17

精度(CPU 与 NPU 对比)

评估指标:稳健相对误差——对于 CPU 参考值 > 1e-6 的情况,计算 |NPU - CPU| / |CPU| 并对所有元素取平均值。质量标准:< 1%。

测试用例输入形状输出形状最大绝对误差稳健相对误差状态
5秒音频[1, 80, 500][1, 250, 384]0.0095420.4754%通过
10秒音频[1, 80, 1000][1, 500, 384]0.0096860.6799%通过
20秒音频[1, 80, 2000][1, 1000, 384]0.0095940.5687%通过
30秒音频[1, 80, 3000][1, 1500, 384]0.0142660.7118%通过

精度判定:全部通过

  • 质量标准(< 1%):通过
  • 最差情况最大绝对误差:0.014266
  • 最差情况稳健相对误差:0.7118%
  • 文本级匹配:CPU 和 NPU 产生100% 一致的转录输出

端到端推理精度

指标值
CPU-NPU 文本匹配是(100%)
特征最大绝对误差0.001993
特征平均绝对误差0.000196
特征相对误差0.0200%

性能基准测试

编码器延迟

音频时长CPU 时间(毫秒)NPU 时间(毫秒)CPU p99(毫秒)NPU p99(毫秒)加速比NPU RTF
5秒86.282.2587.042.3238.3x0.00045
10秒185.192.24197.992.2982.6x0.00022
20秒833.952.173644.532.22384.1x0.00011
30秒899.052.90912.052.93309.7x0.00010

端到端延迟(30秒音频,20个token解码)

组件延迟(毫秒)
编码器3.37
解码器(20个token)49.68
每token解码器2.48
端到端总计53.05
编码器吞吐量890,007 mel-frames/s

主要发现

  1. 准确性:CPU-NPU 特征级鲁棒相对误差为 0.71%(最坏情况),通过了 1% 的质量标准。CPU 与 NPU 的文本级输出完全一致。在真实音频推理中,特征级相对误差仅为 0.02%。

  2. 性能:在编码器推理方面,NPU 相比 CPU 实现了 38 倍–384 倍的加速。实时因子(RTF)远低于 0.001,为实时流式语音识别提供了充足的余量。

  3. 内存:FP32 模式下模型占用约 144 MB 内存,可轻松适配 Ascend 910 的 64 GB HBM。

  4. 稳定性:在所有输入时长下,NPU 推理时间几乎保持恒定(2.2–2.9 ms),而 CPU 时间则随音频长度呈线性增长。

交付成果

文件描述
inference.py适配 NPU 的推理脚本,支持 CPU/NPU 后端,包含准确性对比和基准测试功能
eval_benchmark.py全面的准确性和性能评估套件
eval_results.json结构化评估结果(准确性 + 性能)
run_log.log完整的评估运行日志
README.md部署文档和评估报告
model/已下载的模型文件(tiny.pt、ONNX 编码器/解码器)

文件结构

whisper-tiny-onnx-npu/
├── README.md              # This document
├── inference.py           # NPU inference script
├── eval_benchmark.py      # Evaluation suite
├── eval_results.json      # Evaluation results (structured)
├── run_log.log            # Full run log
└── model/                 # Model files
    ├── tiny.pt            # PyTorch checkpoint
    ├── encoder.onnx       # ONNX encoder (FP32)
    ├── encoder.int8.onnx  # ONNX encoder (INT8)
    ├── decoder.onnx       # ONNX decoder (FP32)
    ├── decoder.int8.onnx  # ONNX decoder (INT8)
    ├── conf.json          # Model config
    └── configuration.json # Additional config

引用

@misc{whisper-tiny-onnx-npu,
  title={Whisper Tiny ONNX - Ascend NPU Adaptation},
  author={Model Agent},
  year={2026},
  note={Adapted from manyeyes/whisper-tiny-onnx on ModelScope. Evaluated on Huawei Ascend 910 NPU.}
}

硬件标签

#NPU #Hardware/NPU #Ascend #Ascend910 #CANN #torch_npu #Whisper #ASR #ONNX #pretrained