【语音识别】Qwen3-ASR原理及部署

文章目录

一、简介

1 简单介绍

这张图通过生动的卡通形象和具体的使用场景,清晰地展示了Qwen3-ASR模型的六大核心优势:

  • 鲁棒性:在嘈杂环境中表现优异
  • 时间戳预测:能精确定位语音
  • 多语言:支持多种语言的识别和区分
  • 歌声与歌曲识别:能识别音乐和歌唱
  • 快速与流式处理:高效且支持实时识别

总之,这张图是一个非常成功的视觉化宣传材料,它将一个复杂的AI技术(语音识别)用简单易懂的方式呈现出来,突出了其在各种真实世界挑战场景下的强大性能。

2 模型介绍

Qwen3-ASR系列包括Qwen3-ASR-1.7B和Qwen3-ASR-0.6B,支持52中语言和方言的语言识别和语言识别(ASR)。这两个模型的基础模型:Qwen3-Omni,实验表明,1.7B版本在开源ASR模型中达到业界领先水平,并可与最强的商业闭源API相媲美。主要特性如下:

  • 一体化:1.7B和0.6B均支持30中语言和22种中文方言的语言识别和语音识别,同时支持来自多个国家和地区的英文口音。
  • 卓越高效:Qwen3-ASR系列模型在复杂声学环境和具有挑战性的文本模式下仍然能保持高质量,鲁棒的识别效果,Qwen3-ASR-1.7B在开源和内部基准测试中均表现出色;而0.6B版本则在精度和效率之间取得良好平衡,并发为128时吞吐量可达到2000倍。两个模型均支持单模型统一处理流式/离线推理,并可以转录长音频。
  • 新颖强大的强制对齐方案: Qwen3-ForcedAligner-0.6B,支持对最多 5 分钟的语音内容,在 11 种语言中预测任意粒度单元的时间戳。评估结果表明,其时间戳精度优于基于端到端(E2E)的强制对齐模型。
  • 全面的推理工具包:除了开源 Qwen3-ASR 系列的模型架构和权重外,我们还发布了一个功能强大、特性完整的推理框架,支持基于 vLLM 的批处理推理、异步服务、流式推理、时间戳预测等功能。

二、模型结构介绍

模型支持语言:

模型 支持语言 支持方言 推理模式 音频类型
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) 安徽、东北、福建、甘肃、贵州、河北、河南、湖北、湖南、江西、宁夏、山东、陕西、山西、四川、天津、云南、浙江、粤语(香港口音)、粤语(广东口音)、吴语、闽南语 离线 / 流式 语音、歌声、带背景音乐的歌曲

三、性能指标分析

四、推理部署

模型可以直接登录modelscope下载:Qwen-ASR-0.6B下载路径

git地址:Qwen-ASR Git地址

0 安装

这里我没有使用docker,而是使用自己的Python环境安装的,不过这里需要注意的是,Qwen3-ASRj仅支持Python3.10版本以上的,参考指令:

复制代码
python -m venv Qwen3ASR
pip install -U qwen-asr
pip install -U flash-attn --no-build-isolation		# 这一块安装往往不成功,建议拉取镜像获取最高性能

1 使用本地文件推理

python 复制代码
import torch
from qwen_asr import Qwen3ASRModel

model = Qwen3ASRModel.from_pretrained(
    "Qwen/Qwen3-ASR-1.7B",
    dtype=torch.bfloat16,
    device_map="cuda: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)

直接将模型下载到本地,之后直接推理WAV文件即可。

2 流式推理

Qwen3-ASR的输入支持:本地路径、URL、base64 数据或 (np.ndarray, sr) 元组传递

注意:这里如果想要输入numpy数组,就必须要在后边加上采样率。

我的代码:

python 复制代码
import torch
import pyaudio
import numpy as np
import wave
from loguru import logger
import soxr
from qwen_asr import Qwen3ASRModel
from transformers import logging
logging.set_verbosity_error() 
   
model = Qwen3ASRModel.from_pretrained(
    "/data/H2413325/code_dir_V2/model/Qwen3-ASR-0.6B",
    dtype=torch.bfloat16,
    device_map="cuda:2",
    # 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.
)

audio_path = r"Meeting1_16k.wav"
wf = wave.open(audio_path)
logger.warning(f"原始音频格式:"
               f"{wf.getnchannels(),wf.getframerate(),wf.getsampwidth()}")
rawRate = wf.getframerate()
chunk = 16000

while True:
    data = wf.readframes(chunk)               # PCM  24int                              
    if not data:
        break
    pcm = np.frombuffer(data, dtype=np.int16)
    mono_float = np.clip(pcm, -32768, 32767).astype(np.float32) / 32768.0
    # data_i16 = pcm24_to_int16(data, wf.getnchannels())  # numpy的格式   
    
    results = model.transcribe(
        audio=(mono_float, wf.getframerate()),
        language=None, # set "English" to force the language
    )
    print(results[0].text)

输出如下:

官方文档中,说如果想要使用流式推理,就要使用VLLM启动,这里可能是我踩的一个坑,导致准确率并不是很高。

3 Gradio可视化UI界面

如果之前已经安装好qwen3-asr的库了,那么这一步大概可以直接启动

复制代码
qwen-asr-demo \
  --asr-checkpoint Qwen/Qwen3-ASR-1.7B \			# 模型路径
  --backend transformers \
  --cuda-visible-devices 0 \									# GPU编号
  --ip 0.0.0.0 --port 8000										# 端口号

使用之前,可以看一下端口是否被占用:

复制代码
lsof -i:8000

启动之后的页面是这样的:

文件识别的准确率还是可以的,还支持歌曲歌词识别,效果也算是中规中矩。

六、总结

下一步可以试试使用VLLM部署流式模型,可能准确率会比较高。比较遗憾的是,这个模型仅支持微调,而不支持热词。准确率并没有宣传的那么优越,算是一个中规中矩的模型。

2026.2.4

相关推荐
Wang201220132 小时前
2026流行的 AI Agent开发框架 (构建“智能体”)
人工智能
张人玉2 小时前
VisionPro Blob、条码识别、OCR 结构化速记版
人工智能·算法·机器学习·vsionpro
Elastic 中国社区官方博客2 小时前
Elasticsearch:使用 Elastic Workflows 构建自动化
大数据·数据库·人工智能·elasticsearch·搜索引擎·自动化·全文检索
OnYoung2 小时前
编写一个Python脚本自动下载壁纸
jvm·数据库·python
跨境卫士-小汪2 小时前
选品更稳的新打法:用“用户决策阻力”挑品——阻力越大,越有机会做出溢价
大数据·人工智能·产品运营·跨境电商·内容营销·跨境
R-G-B2 小时前
python 验证每次操作图片处理的顺序是否一致,按序号打上标签,图片重命名
开发语言·python·图片重命名·按序号打上标签·验证图片处理的顺序
DFT计算杂谈2 小时前
VASP+Wannier90 计算位移电流和二次谐波SHG
java·服务器·前端·python·算法
北京高端信息科技2 小时前
解决ClustalW中替换矩阵的文件格式
python·生物信息学
serve the people2 小时前
python环境搭建 (九) 极简日志工具 loguru
linux·服务器·python