本文档记录 airesearch/wav2vec2-large-xlsr-53-th 在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。
airesearch/wav2vec2-large-xlsr-53-th 是基于 Wav2Vec2-XLSR-53 架构在 Thai (ไทย)语音数据上进行微调得到的 语音识别(ASR) 模型。 该模型基于 Wav2Vec2-XLSR-53 架构在 Common Voice 数据集上进行微调,用于Thai (ไทย)语音识别(ASR),能够将Thai (ไทย)语音转录为文本。
模型参数量约 315M,采用 Wav2Vec2 自监督学习框架,在 16kHz 单声道原始音频上进行特征提取。
torch_npu 将 PyTorch 模型迁移至 Ascend NPUtransfer_to_npu 自动完成 CUDA 到 NPU 的 API 映射| 组件 | 版本 |
|---|---|
CANN | 8.5.1 |
torch | 2.5.1 |
torch-npu | 2.5.1.dev20260320 |
transformers | 4.57.6 |
numpy | 2.2.2 |
| NPU 型号 | Ascend 910B4(1 卡,32GB HBM) |
| 操作系统 | Linux 5.10.0 aarch64 |
# 安装依赖(使用清华 PyPI 镜像)
pip install torch transformers numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 确保 CANN 和 torch_npu 已正确安装
# 参考: https://www.hiascend.com/document/# 使用 huggingface-cli 下载
huggingface-cli download airesearch/wav2vec2-large-xlsr-53-th \
--local-dir ./model --local-dir-use-symlinks False
# 或使用 GitCode 镜像
git lfs clone https://gitcode.com/hf_mirrors/airesearch/wav2vec2-large-xlsr-53-th.git ./model# 单次推理(生成 3 秒虚拟音频)
python inference.py --model_path ./model --duration 3.0
# 运行性能基准测试
python inference.py --model_path ./model --benchmark参数说明:
| 参数 | 说明 | 默认值 |
|---|---|---|
--model_path | 模型权重路径 | ./model |
--duration | 生成的虚拟音频时长(秒) | 3.0 |
--benchmark | 启用性能测试模式 | False |
Wav2Vec2 是确定性模型(deterministic),给定相同输入,CPU 和 NPU 应产生几乎完全一致的输出。
运行命令:
python accuracy_run.py ./model accuracy_report.json验证结果:
| 音频时长 | 余弦相似度 | MAE | 相对误差 | 最大绝对误差 | 皮尔逊相关系数 | 状态 |
|---|---|---|---|---|---|---|
| 0.5s | 0.999989 | 1.46e-03 | 4.50% | 9.10e-03 | 0.9999888965 | PASS |
| 1.0s | 0.999991 | 1.27e-03 | 2.71% | 8.18e-03 | 0.9999915769 | PASS |
| 2.0s | 0.999996 | 8.91e-04 | 4.32% | 1.61e-02 | 0.9999953633 | PASS |
| 3.0s | 0.999996 | 8.13e-04 | 1.71% | 2.51e-02 | 0.9999961226 | PASS |
| 5.0s | 0.999997 | 8.88e-04 | 2.39% | 1.09e-02 | 0.9999952416 | PASS |
总体状态:PASS(阈值:余弦相似度 > 0.999,相对误差 < 1%)
精度分析:
运行命令:
python accuracy_run_perf.py ./model 10 perf_report.jsonNPU 性能结果(10 次迭代,warmup 3 次):
| 音频时长 | 平均延迟 | P50 延迟 | P90 延迟 | RTF | 吞吐率 |
|---|---|---|---|---|---|
| 0.5s | 24.0ms | 23.8ms | 24.7ms | 0.0479 | 20.86x |
| 1.0s | 24.4ms | 24.4ms | 24.8ms | 0.0244 | 41.03x |
| 2.0s | 25.1ms | 25.1ms | 25.4ms | 0.0125 | 79.7x |
| 3.0s | 25.7ms | 25.7ms | 26.3ms | 0.0086 | 116.81x |
| 5.0s | 26.3ms | 26.1ms | 27.5ms | 0.0053 | 190.36x |
RTF (Real-Time Factor) 表示处理 1 秒音频所需的计算时间。 吞吐率 = 1 / RTF,表示每秒可处理的音频时长倍数。
性能分析:
.
├── model/ # 模型权重(需自行下载)
│ ├── config.json
│ ├── pytorch_model.bin
│ └── preprocessor_config.json
├── inference.py # NPU 推理脚本
├── accuracy_run.py # CPU vs NPU 精度验证脚本(串行执行)
├── accuracy_run_perf.py # NPU 性能基准测试脚本
├── accuracy_report.json # 精度验证报告
├── perf_report.json # 性能测试报告
└── README.md # 本文档accuracy_run.py 先运行 CPU 推理,释放内存后再运行 NPU 推理,防止单卡显存不足。transfer_to_npu 会自动替换 torch.cuda.* 为 torch.npu.*,首次 import 会有警告,属于正常现象。@article{conneau2020unsupervised,
title={Unsupervised Cross-lingual Representation Learning for Speech Recognition},
author={Conneau, Alexis and Baevski, Alexei and Collobert, Ronan and Mohamed, Abdelrahman and Auli, Michael},
journal={arXiv preprint arXiv:2006.13979},
year={2020}
}适配方:Ascend-SACT
标签:#NPU #Ascend #Wav2Vec2 #XLSR #Thai (ไทย)
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0011%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0011%,小于 1% 的精度要求。