g
gcw_AVRCax4T/speech_rwkv_bat_asr-zh-cantonese-en-16k-vocab8501-pytorch-online
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

speech_rwkv_bat_asr-zh-cantonese-en-16k-vocab8501(昇腾NPU适配版)

基于RWKV BAT(边界感知转换器)的中文/粤语/英语多语言语音识别模型,已适配华为昇腾Ascend 910 NPU推理。

模型详情

字段值
模型名称speech_rwkv_bat_asr-zh-cantonese-en-16k-vocab8501-pytorch-online
架构RWKV-BAT(边界感知转换器)
编码器RWKV(18个块,输出大小=512)
解码器RNN-T解码器(LSTM,隐藏大小=512)
词汇表大小8501个 tokens
采样率16000 Hz
特征带LFR的80维fbank(m=7,n=6)
参数73,164,085
语言普通话、粤语、英语
原始框架PyTorch(FunASR)
来源ModelScope

NPU适配摘要

项目状态
NPU硬件Ascend 910
CANN版本8.5.1
torch_npu版本2.9.0.post1
PyTorch版本2.9.0
FunASR版本1.3.1
适配方法模型权重加载 + 设备迁移
模型加载带嵌入重映射的直接state_dict加载
推理流水线FunASR RWKVEncoder + BeamSearchTransducer

环境设置

# Install dependencies
pip install torch==2.9.0 torch_npu==2.9.0.post1
pip install funasr modelscope soundfile librosa omegaconf
pip install torchaudio  # for feature extraction

# Verify NPU availability
npu-smi info
python -c "import torch_npu; print(torch_npu.npu.device_count())"

快速开始

下载模型

pip install modelscope
modelscope download --model dengcunqin/speech_rwkv_bat_asr-zh-cantonese-en-16k-vocab8501-pytorch-online

运行推理

# CPU Inference (baseline)
python inference.py --device cpu --audio <path_to_wav>

# NPU Inference
python inference.py --device npu --audio <path_to_wav>

# Accuracy Comparison (CPU vs NPU)
python inference.py --device npu --audio <path_to_wav> --compare

# Performance Benchmark (10 runs)
python inference.py --device npu --audio <path_to_wav> --benchmark

Python API

from inference import load_model, run_inference

# Load model on NPU
import torch
device = torch.device("npu:0")
model_info = load_model(device=device)

# Run inference
result = run_inference(model_info, "audio.wav")
print(f"Text: {result['text']}")
print(f"Score: {result['score']:.4f}")

精度验证

CPU 与 NPU 输出对比

指标数值阈值状态
文本匹配完全匹配N/APASS
推理得分差异3.91e-05< 1e-3PASS
编码器最大绝对差异4.29e-06< 1e-3PASS
编码器平均绝对差异1.45e-07< 1e-3PASS
编码器平均相对差异0.0005%< 1%PASS

测试配置

参数数值
测试音频3秒合成语音(16kHz,单声道,float32)
解码方式波束搜索(beam_size=10)
精度Float32
NPU 设备Ascend 910(npu:0)

性能基准测试

NPU 推理性能

指标NPU(Ascend 910)CPU(ARM)加速比
平均延迟1.622秒4.846秒2.99倍
最小延迟1.597秒4.823秒3.02倍
最大延迟1.649秒4.895秒2.97倍
标准差0.019秒0.023秒-
实时因子(RTF)0.5411.6152.99倍

单次运行延迟(10次运行,3次预热后)

运行次数NPUCPU
11.598秒4.841秒
21.638秒4.836秒
31.649秒4.833秒
41.607秒4.847秒
51.615秒4.834秒
61.629秒4.828秒
71.605秒4.842秒
81.597秒4.823秒
91.644秒4.895秒
101.634秒4.886秒

测试配置

参数数值
音频时长3.0秒
采样率16000 Hz
波束大小10
批处理大小1
测试平台Ascend 910 / CANN 8.5.1

模型架构

RWKV-BAT ASR Pipeline:
1. WavFrontend: 80-dim fbank extraction + LFR (7:6 stacking -> 560-dim)
2. Encoder: SimpleEmbed (Linear 560->512) + LayerNorm
   + 18x RWKV Blocks (WKLV attention + SquaredReLU FFN with gating)
   + Final LayerNorm
3. RNN-T Decoder: Embedding + LSTM(512) -> JointNetwork
4. BeamSearchTransducer: beam_size=10

已知限制

  1. 原始模型检查点使用 Linear 嵌入(embed_liner),而当前 FunASR 的 RWKVEncoder 期望的是基于 CNN 的 RWKVConvInput。NPU 适配将 RWKVConvInput 替换为匹配的 Linear 层并加载预训练权重。这可能与原始训练架构存在细微差异。
  2. predictor(CIF)模块权重被跳过,因为 Transducer 模型在当前推理流程中未纳入这些权重。
  3. MVN 统计文件(am.mvn)采用 Kaldi Nnet 格式,需要 Kaldi 运行时才能正确加载。目前已省略特征归一化步骤。在真实语音数据上达到完整精度需要正确加载 CMVN。

文件

文件描述
inference.py经 NPU 适配的推理脚本,包含 CPU/NPU 对比功能
README.md本部署与评估报告

引用

原始模型由阿里巴巴达摩院开发,基于 FunASR 框架和 RWKV 架构。

@misc{funasr,
  author = {FunASR Team},
  title = {FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {https://github.com/alibaba-damo-academy/FunASR}
}

许可证

Apache 许可证 2.0