Ascend-SACT/Qwen3-ASR
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

运行环境准备

版本配套表

配套版本环境准备指导
CANN8.2.RC1快速安装CANN
Python3.10.12-
torch2.7.1+cpu-
torch_npu2.7.1.dev20250724-

安装软件包

执行如下命令:

apt update
apt install jq
pip insatll peft==0.17.0
pip install torchvision==0.22.1+cpu
pip install torchaudio==2.7.1+cpu
pip install vllm==0.10.0
pip install vllm-ascend==0.10.0rc1

检查软件包版本

如果torch版本被动升级,如下命令重新安装:

pip install torch==2.7.1+cpu --no-deps

依赖安装

以最小化安装并启用 transformers 后端支持:

运行

pip install -U qwen-asr

模型介绍

Qwen3-ASR 系列包括 Qwen3-ASR-1.7B 和 Qwen3-ASR-0.6B,支持 52 种语言和方言的语言识别与语音识别(ASR)。两者均利用大规模语音训练数据以及其基础模型 Qwen3-Omni 强大的音频理解能力。实验表明,1.7B 版本在开源 ASR 模型中达到业界领先水平,并可与最强的商业闭源 API 相媲美。

以下是 Qwen3-ASR 模型的介绍及下载信息,请根据需求选择并下载合适的模型。

模型支持的语言支持的方言推理模式音频类型
Qwen3-ASR-1.7B & Qwen3-ASR-0.6B中文 (zh)、英文 (en)、粤语 (yue)、阿拉伯语 (ar)、德语 (de)、法语 (fr)、西班牙语 (es)、葡萄牙语 (pt)、印尼语 (id)、意大利语 (it)、韩语 (ko)、俄语 (ru)、泰语 (th)、越南语 (vi)、日语 (ja)、土耳其语 (tr)、印地语 (hi)、马来语 (ms)、荷兰语 (nl)、瑞典语 (sv)、丹麦语 (da)、芬兰语 (fi)、波兰语 (pl)、捷克语 (cs)、菲律宾语 (fil)、波斯语 (fa)、希腊语 (el)、匈牙利语 (hu)、马其顿语 (mk)、罗马尼亚语 (ro)安徽、东北、福建、甘肃、贵州、河北、河南、湖北、湖南、江西、宁夏、山东、陕西、山西、四川、天津、云南、浙江、粤语(香港口音)、粤语(广东口音)、吴语、闽南语离线 / 流式语音、歌声、带背景音乐的歌曲

我将以Qwen3-ASR-1.7B为例,来讲解相关的推理部署。

下载权重

pip install modelscope
modelscope download --model Qwen/Qwen3-ASR-1.7B  --local_dir ./Qwen3-ASR-1.7B
modelscope download --model Qwen/Qwen3-ForcedAligner-0.6B --local_dir ./Qwen3-ForcedAligner-0.6B

快速推理

创建脚本

vim inference.py

脚本如下:

import torch
from qwen_asr import Qwen3ASRModel

model = Qwen3ASRModel.from_pretrained(
    "./Qwen3-ASR-1.7B",
    dtype=torch.bfloat16,
    device_map="npu:0",
    # attn_implementation="flash_attention_2",
    max_inference_batch_size=32, # Batch size limit for inference. -1 means unlimited. Smaller values can help avoid OOM.
    max_new_tokens=256, # Maximum number of tokens to generate. Set a larger value for long audio input.
)

results = model.transcribe(
    audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav",
    language=None, # set "English" to force the language
)

print(results[0].language)
print(results[0].text)

然后运行

python inference.py

如果希望返回时间戳,需要传入forced_aligner及其初始化参数。以下是带时间戳输出的批量推理示例:

创建脚本

vim inference_timetag.py

脚本如下:

import torch
from qwen_asr import Qwen3ASRModel

model = Qwen3ASRModel.from_pretrained(
    "./Qwen3-ASR-1.7B",
    dtype=torch.bfloat16,
    device_map="npu:0",
    # attn_implementation="flash_attention_2",
    max_inference_batch_size=32, # Batch size limit for inference. -1 means unlimited. Smaller values can help avoid OOM.
    max_new_tokens=256, # Maximum number of tokens to generate. Set a larger value for long audio input.
    forced_aligner="./Qwen3-ForcedAligner-0.6B",
    forced_aligner_kwargs=dict(
        dtype=torch.bfloat16,
        device_map="npu:0",
        # attn_implementation="flash_attention_2",
    ),
)

results = model.transcribe(
    audio=[
      "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_zh.wav",
      "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav",
    ],
    language=["Chinese", "English"], # can also be set to None for automatic language detection
    return_time_stamps=True,
)

for r in results:
    print(r.language, r.text, r.time_stamps[0])

然后运行

python inference_timetag.py

建议

推荐使用 FlashAttention 2 来减少显存占用并加速推理速度,尤其适用于长输入和大批量场景。

pip install -U flash-attn --no-build-isolation

安装好后,可以把脚本的flash_attention_2打开,可以参考如下的脚本:

import torch
from qwen_asr import Qwen3ASRModel

model = Qwen3ASRModel.from_pretrained(
    "./Qwen3-ASR-1.7B",
    dtype=torch.bfloat16,
    device_map="npu:0",
    attn_implementation="flash_attention_2",
    max_inference_batch_size=32, # Batch size limit for inference. -1 means unlimited. Smaller values can help avoid OOM.
    max_new_tokens=256, # Maximum number of tokens to generate. Set a larger value for long audio input.
)

results = model.transcribe(
    audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav",
    language=None, # set "English" to force the language
)

print(results[0].language)
print(results[0].text)