Paraformer-large 是阿里巴巴达摩院语音团队开发的非自回归端到端语音识别模型,采用 Paraformer 架构,支持中文普通话识别,在工业级数万小时标注音频上训练,具有高识别率和高计算效率。
speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch-ascend/
├── inference.py # 推理测试脚本
├── log.txt # 测试日志
├── README.md # 本文档
└── test_audio.wav # 测试音频样本 (from example/asr_example.wav)docker exec -it test-modelagent bashsource /usr/local/Ascend/ascend-toolkit/set_env.sh模型文件位于 /data/ysws/agentsp/5-15/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/ 目录下:
pip install funasr modelscope soundfile -i https://pypi.org/simple/运行推理脚本进行音频转录:
cd /data/ysws/agentsp/5-15/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch-ascend/
# 使用默认测试音频
python3 inference.py
# 使用指定音频文件
python3 inference.py --mode inference --device npu:0运行精度对比测试,验证 NPU 计算结果与 CPU 一致性:
cd /data/ysws/agentsp/5-15/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch-ascend/
# 运行完整精度测试
python3 inference.py --mode precision_test| 参数 | 说明 | 默认值 |
|---|---|---|
--mode | 测试模式: inference 或 precision_test | inference |
--device | 运行设备 | npu:0 (自动检测) |
| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| 相对误差 | 0.00e+00 (完全一致) | < 1.00e-02 | PASS |
| 文本一致性 | 100% | - | PASS |
| 操作 | 耗时 |
|---|---|
| CPU 推理时间 (88k采样点) | 3.835s |
| NPU 推理时间 (88k采样点) | 3.086s |
| RTF (CPU) | 0.484 |
| RTF (NPU) | 0.480 |
输入音频: example/asr_example.wav (约 5.5 秒中文音频)
| 设备 | 转录结果 |
|---|---|
| CPU | 欢 迎 大 家 来 体 验 达 摩 院 推 出 的 语 音 识 别 模 型 |
| NPU | 欢 迎 大 家 来 体 验 达 摩 院 推 出 的 语 音 识 别 模 型 |
结果: CPU 和 NPU 输出完全一致
完整测试日志保存在 log.txt
from funasr import AutoModel
import soundfile as sf
model = AutoModel(
model='paraformer-zh',
model_revision='v2.0.4',
model_hub='ms',
disable_update=True,
)
audio_path = "your_audio.wav"
speech, sample_rate = sf.read(audio_path)
result = model.generate(input=speech)
text = result[0]['text']
print(f"Transcription: {text}")from funasr import AutoModel
import soundfile as sf
import torch
model = AutoModel(
model='paraformer-zh',
model_revision='v2.0.4',
model_hub='ms',
disable_update=True,
)
audio_path = "your_audio.wav"
speech, sample_rate = sf.read(audio_path)
result = model.generate(input=speech)
text = result[0]['text']
print(f"NPU Transcription: {text}")| 组件 | 说明 |
|---|---|
| encoder | SAN-M 自注意力编码器 (50层) |
| decoder | Paraformer SAN-M 解码器 (16层) |
| predictor | CIF 预测器 |
| frontend | WavFrontend (特征提取) |
从 config.yaml 提取的关键参数:
encoder_conf:
output_size: 512
attention_heads: 4
linear_units: 2048
num_blocks: 50
decoder_conf:
attention_heads: 4
linear_units: 2048
num_blocks: 16
frontend_conf:
fs: 16000
window: hamming
n_mels: 80
frame_length: 25
frame_shift: 10
lfr_m: 7
lfr_n: 6A: 确保已安装 funasr>=1.3.1 和 modelscope>=1.34.0,并设置 disable_update=True 避免版本检查。
A: 对于小批量推理,NPU 数据传输开销可能影响性能。本测试中 NPU (3.086s) 比 CPU (3.835s) 更快,RTF 略有提升。
A: 1) 使用热词版模型 paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404; 2) 确保音频质量清晰; 3) 使用 VAD 和标点模型后处理。
本项目遵循 Apache License 2.0