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

TeleSpeech-ASR-Finetune 昇腾 NPU 适配

tags: #NPU #Ascend #Huawei-Ascend #auto-speech-recognition #data2vec #PyTorch

hardware: #NPU #Ascend-910B


license: apache-2.0

模型信息

属性值
模型名称TeleSpeech-ASR-Finetune
模型来源luchuanze/TeleSpeech-ASR-Finetune
基础架构data2vec 2.0 (Audio Encoder + Transformer)
任务类型auto-speech-recognition (语音识别)
框架PyTorch 2.9
输入40-dim MFCC/FBank 特征
输出1024-dim 上下文语音表征
参数量~300M (0.3B)
原始框架Fairseq (data2vec_dialect)

硬件环境

项目规格
硬件平台Huawei Atlas 800 A2
NPU 型号Ascend 910B/910C
CANN 版本8.5.1
torch_npu 版本2.9.0.post1
PyTorch 版本2.9.0

适配方案

架构概述

TeleSpeech-ASR 基于 data2vec 2.0 多模态架构,包含以下核心组件:

Audio Waveform → FBank (40-dim) → CNN Encoder → Relative Positional Encoder
    → ALiBi Context Encoder (8层) → Transformer Backbone (16层) → 1024-dim 表征

关键组件

模块配置
CNN 特征提取2层 Conv1d (40→512→512, kernel=3, stride=2)
特征投影LayerNorm(512) + Linear(512→1024)
相对位置编码5层 Conv1d(64→1024, kernel=19)
Context Encoder8层 ALiBi Transformer (dim=1024, heads=16, ff=4096)
Transformer Backbone16层 Standard Transformer (dim=1024, heads=16, ff=4096)

NPU 适配策略

  1. 模型重建: 从 Fairseq checkpoint 提取权重,使用纯 PyTorch 重建模型结构
  2. 权重映射: 直接 key-value 映射加载 313 个参数张量,无需转换
  3. 设备适配: 使用 torch.npu 自动将模型和输入迁移到 NPU 设备
  4. 无自定义算子: 全部使用标准 PyTorch 算子,兼容 torch_npu 后端

快速开始

1. 环境准备

# 确保已安装 torch_npu
pip install torch_npu

# 安装 modelscope 下载模型
pip install modelscope

2. 下载模型

modelscope download --model luchuanze/TeleSpeech-ASR-Finetune

3. 运行推理

# NPU 推理
python3 inference.py --device npu

# NPU 推理 + 性能评测
python3 inference.py --device npu --benchmark --benchmark-steps 50

# NPU 推理 + CPU 精度对比
python3 inference.py --device npu --compare

# CPU 推理 (基线)
python3 inference.py --device cpu --benchmark --benchmark-steps 10

# 从音频文件推理
python3 inference.py --device npu --audio /path/to/audio.wav --output features.npy

4. 运行完整评测

python3 eval_benchmark.py

评测完成后结果保存至 eval/evaluation_results.json。

评测结果

1. 模型加载验证

指标结果
总参数张量数313
成功加载313
加载率100.00%
状态PASS

2. 精度对比 (CPU vs NPU)

指标数值
CPU 输出均值-0.229099
NPU 输出均值-0.229255
CPU 输出标准差31.433681
NPU 输出标准差31.433445
最大绝对误差0.084839
平均绝对误差0.005475
相对误差0.0238%
余弦相似度0.99999972
精度阈值 (1%)PASS

3. 性能 Benchmark (seq_len=300)

指标数值
推理延迟 (avg)12.09 ms
吞吐量24,813 frames/sec
Benchmark 迭代数100

4. 多序列长度性能

输入帧数输出帧数推理延迟吞吐量 (fps)
1503812.14 ms12,351
3007512.09 ms24,806
60015012.03 ms49,860
120030012.08 ms99,302
240060017.90 ms134,068

5. CPU vs NPU 延迟对比

设备推理延迟加速比
CPU~991 ms1×
NPU12.09 ms~82×

文件说明

文件说明
inference.py推理脚本(支持 CPU/NPU/CUDA)
eval_benchmark.py精度/性能评测脚本
eval/evaluation_results.json评测结果 JSON
README.md部署文档

模型卡片

tags:
  - NPU
  - Ascend
  - Huawei-Ascend
  - auto-speech-recognition
  - data2vec
  - PyTorch

hardware:
  - NPU
  - Ascend-910B

model_type: data2vec
task: auto-speech-recognition
language: zh (Chinese, multi-dialect)
license: Apache-2.0
framework: PyTorch

技术细节

输入预处理

模型输入为 40 维 FBank (Filter Bank) 特征,采样率为 16kHz:

  • 窗长: 400 samples (25ms)
  • 帧移: 160 samples (10ms)
  • FFT 点数: 512
  • Mel 滤波器组: 40 个

输出格式

模型输出为 [batch, time_frames, 1024] 的上下文语音表征,供下游 ASR 解码器(如 CTC)使用。

注意事项

  1. 本模型输出的是中间表征(encoder output),不包含 CTC 解码头
  2. 完整的 ASR 流水线需要额外的解码器(如 WeNet 的 CTC/Attention 解码器)
  3. 模型权重格式为 32-bit float,与 NPU 原生支持一致
  4. 当前未使用 torch_npu 融合算子优化,可根据需要进一步调优

生成工具: Model Agent (Claude Code) 适配日期: 2026-05-18 CANN 版本: 8.5.1