基于Qwen3-ASR-1.7B搭建本地语音识别会议纪要

基于Qwen3-ASR-1.7B搭建本地语音识别会议纪要

0、完整项目代码以上传可下载使用

python 复制代码
https://download.csdn.net/download/guoqingru0311/92823245

1、前置认知

在搭建系统前,先明确为什么优先选择Qwen3-ASR-1.7B作为核心模型,尤其是针对企业会议纪要场景:

  • 私有化部署:模型完全运行在企业自有服务器,会议音频、转录文本等敏感数据全程不出本地,彻底规避云端服务的数据泄露风险,适配法律、金融、医疗等敏感行业需求。
  • 高精度适配:17亿参数模型,在通用语音数据基础上优化了科技术语、行业黑话的识别能力,会议中的专业表述、英文缩写(如API、Kubernetes)能精准识别,准确率显著高于通用语音模型。
  • 轻量易部署:经过量化优化,无需顶级硬件,入门级GPU即可流畅运行,且支持Docker、Ollama等多种部署管理方式,新手也能快速上手。
  • 多场景兼容:支持WAV、MP3、M4A等多种常见音频格式,可适配会议录音、实时语音输入等场景,转录结果可直接导出为文本,无需二次排版。

2、硬件需求

Qwen3-ASR-1.7B的硬件要求并不苛刻,核心取决于使用场景(单用户测试/多用户并发),以下分最低配置推荐配置企业级配置三类,按需选择即可,重点关注GPU显存(模型运行的核心瓶颈)。

配置级别 GPU(核心) CPU 内存(RAM) 硬盘 适用场景
最低配置(测试用) NVIDIA GPU,显存 ≥6GB(如 GTX 1060 6GB) Intel i5-8400 / AMD Ryzen 5 3600 及以上 ≥16GB ≥50GB(SSD,用于存储模型和音频文件) 个人测试、小型团队单场次会议(≤10人)
推荐配置(日常用) NVIDIA GPU,显存 ≥12GB(如 RTX 3060 12GB、RTX 4060 8GB) Intel i7-10700 / AMD Ryzen 7 5800X 及以上 ≥32GB ≥100GB(SSD,建议分区存储模型和数据) 中小企业日常会议、多场次并行(≤20人)
企业级配置(高并发) NVIDIA GPU,显存 ≥16GB(如 RTX 4070 Super、Tesla T4) Intel Xeon E3 / AMD EPYC 及以上(8核16线程) ≥64GB ≥200GB(SSD + 机械硬盘,机械硬盘用于归档历史数据) 大型企业、多部门并发使用、超长会议(≥20人)
模型 支持的语言 支持的方言 推理模式 音频类型
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-ForcedAligner-0.6B 中文、英文、粤语、法语、德语、意大利语、日语、韩语、葡萄牙语、俄语、西班牙语 -- NAR(非自回归) 语音

3、安装部署:Qwen3-ASR-1.7B核心部署(三种方式任选)

提供三种部署方式,新手优先选择Docker一键部署Ollama部署 (简单无坑),有Python基础的可选择手动部署(这种方式需要会python开发,自行开发),三种方式最终效果一致,均可实现音频转录和纪要生成。

python 复制代码
# 安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 加入环境变量
vim ~/.bashrc

# 添加一行
export PATH=$HOME/.local/bin:$PATH

# 然后
source ~/.bashrc

模型下载:

python 复制代码
# Download through ModelScope (recommended for users in Mainland China)
pip install -U modelscope
modelscope download --model Qwen/Qwen3-ASR-1.7B  --local_dir ./Qwen3-ASR-1.7B
modelscope download --model Qwen/Qwen3-ASR-0.6B --local_dir ./Qwen3-ASR-0.6B
modelscope download --model Qwen/Qwen3-ForcedAligner-0.6B --local_dir ./Qwen3-ForcedAligner-0.6B

方式一:本地部署方式

环境配置

使用 Qwen3-ASR 最简单的方法是从 PyPI 安装 qwen-asr Python 包。这将自动安装所需的运行时依赖项,并允许您加载任意已发布的 Qwen3-ASR 模型。如果您希望进一步简化环境配置,也可以使用我们的官方 Docker 镜像。qwen-asr 包提供两种后端:transformers 后端和 vLLM 后端。不同后端的使用说明请参见 Python 包使用方法。我们建议使用全新的、隔离的环境,以避免与现有包发生依赖冲突。您可以按如下方式创建一个干净的 Python 3.12 环境:

python 复制代码
conda create -n qwen3-asr python=3.12 -y
conda activate qwen3-asr

运行以下命令以最小化安装并启用 transformers 后端支持(qwen-asr==0.0.6):

python 复制代码
pip install -U qwen-asr

若要启用 vLLM 后端以获得更快的推理速度和流式支持,请运行(qwen-asr==0.0.6):

python 复制代码
pip install -U qwen-asr[vllm]

如果您希望在本地开发或修改代码,请以可编辑模式从源码安装:

python 复制代码
git clone https://github.com/QwenLM/Qwen3-ASR.git
cd Qwen3-ASR
pip install -e .
# support vLLM backend
# pip install -e ".[vllm]"

Python 包使用方法

快速推理

qwen-asr 包提供了两个后端:transformers 后端 和 vLLM 后端。您可以将音频输入作为本地路径、URL、base64 数据或 (np.ndarray, sr) 元组传入,并执行批量推理。若要快速尝试 Qwen3-ASR,可以使用以下代码通过 transformers 后端调用 Qwen3ASRModel.from_pretrained(...):

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)

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

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.
    forced_aligner="Qwen/Qwen3-ForcedAligner-0.6B",
    forced_aligner_kwargs=dict(
        dtype=torch.bfloat16,
        device_map="cuda: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])

更多详细用法示例,请参考 transformers 后端的 示例代码。⬇️⬇️⬇️

python 复制代码
https://github.com/QwenLM/Qwen3-ASR/blob/main/examples/example_qwen3_asr_transformers.py

vLLM 后端

如果您希望获得 Qwen3-ASR 最快的推理速度,我们强烈推荐使用 vLLM 后端,通过 Qwen3ASRModel.LLM(...) 初始化模型 。下方提供了示例代码。请注意,您必须通过 pip install -U qwen-asr[vllm] 安装该后端 。如果您希望模型输出时间戳,建议通过 pip install -U flash-attn --no-build-isolation 安装 FlashAttention,以加速 forced aligner 模型的推理。请记得将您的代码包裹在 if name == 'main': 之下,以避免 vLLM 故障排除 中描述的 spawn 错误。

python 复制代码
import torch
from qwen_asr import Qwen3ASRModel

if __name__ == '__main__':
    model = Qwen3ASRModel.LLM(
        model="Qwen/Qwen3-ASR-1.7B",
        gpu_memory_utilization=0.7,
        max_inference_batch_size=128, # Batch size limit for inference. -1 means unlimited. Smaller values can help avoid OOM.
        max_new_tokens=4096, # Maximum number of tokens to generate. Set a larger value for long audio input.
        forced_aligner="Qwen/Qwen3-ForcedAligner-0.6B",
        forced_aligner_kwargs=dict(
            dtype=torch.bfloat16,
            device_map="cuda: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])

更多详细用法示例,请参考 vLLM 后端的 示例代码(**https://github.com/QwenLM/Qwen3-ASR/blob/main/examples/example_qwen3_asr_vllm.py**)。此外,您还可以通过 qwen-asr-serve 命令启动一个 vLLM 服务器,该命令是对 vllm serve 的封装。您可以传入 vllm serve 支持的任意参数,例如:

python 复制代码
qwen-asr-serve Qwen/Qwen3-ASR-1.7B --gpu-memory-utilization 0.8 --host 0.0.0.0 --port 8000

指定显卡:

python 复制代码
CUDA_VISIBLE_DEVICES=1 qwen-asr-serve \
/home/data_4/googosoft_file_new/qwen3_asr/Qwen3-ASR-1.7B \
--gpu-memory-utilization 0.8 \
--host 0.0.0.0 \
--port 7000

并通过以下方式向服务器发送请求:

python 复制代码
import requests

url = "http://localhost:8000/v1/chat/completions"
headers = {"Content-Type": "application/json"}

data = {
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "audio_url",
                    "audio_url": {
                        "url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav"
                    },
                }
            ],
        }
    ]
}

response = requests.post(url, headers=headers, json=data, timeout=300)
response.raise_for_status()
content = response.json()['choices'][0]['message']['content']
print(content)

# parse ASR output if you want
from qwen_asr import parse_asr_output
language, text = parse_asr_output(content)
print(language)
print(text)

流式推理

Qwen3-ASR 完全支持流式推理。目前,流式推理仅在 vLLM 后端中可用。请注意,流式推理不支持批量推理或返回时间戳。详情请参考 示例代码。您也可以通过 指南 启动一个流式 Web 演示,体验 Qwen3-ASR 的流式转录功能。

ForcedAligner 使用方法

Qwen3-ForcedAligner-0.6B 可对齐文本与语音对,并返回词级或字符级的时间戳。以下是直接使用 forced aligner 的示例:

python 复制代码
import torch
from qwen_asr import Qwen3ForcedAligner

model = Qwen3ForcedAligner.from_pretrained(
    "Qwen/Qwen3-ForcedAligner-0.6B",
    dtype=torch.bfloat16,
    device_map="cuda:0",
    # attn_implementation="flash_attention_2",
)

results = model.align(
    audio="https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_zh.wav",
    text="甚至出现交易几乎停滞的情况。",
    language="Chinese",
)

print(results[0])
print(results[0][0].text, results[0][0].start_time, results[0][0].end_time)

此外,forced aligner 支持本地路径 / URL / base64 数据 / (np.ndarray, sr) 输入以及批量推理。详情请参考 示例代码。

启动本地 Web UI 演示

要启动 Qwen3-ASR 的 Web UI Gradio 演示,请先安装 qwen-asr 包,然后运行 qwen-asr-demo。使用以下命令获取帮助:

python 复制代码
qwen-asr-demo --help

要启动演示,可使用以下命令:

python 复制代码
# Transformers backend
qwen-asr-demo \
  --asr-checkpoint Qwen/Qwen3-ASR-1.7B \
  --backend transformers \
  --cuda-visible-devices 0 \
  --ip 0.0.0.0 --port 8000

# Transformers backend + Forced Aligner (enable timestamps)
qwen-asr-demo \
  --asr-checkpoint Qwen/Qwen3-ASR-1.7B \
  --aligner-checkpoint Qwen/Qwen3-ForcedAligner-0.6B \
  --backend transformers \
  --cuda-visible-devices 0 \
  --backend-kwargs '{"device_map":"cuda:0","dtype":"bfloat16","max_inference_batch_size":8,"max_new_tokens":256}' \
  --aligner-kwargs '{"device_map":"cuda:0","dtype":"bfloat16"}' \
  --ip 0.0.0.0 --port 8000

# vLLM backend + Forced Aligner (enable timestamps)
qwen-asr-demo \
  --asr-checkpoint Qwen/Qwen3-ASR-1.7B \
  --aligner-checkpoint Qwen/Qwen3-ForcedAligner-0.6B \
  --backend vllm \
  --cuda-visible-devices 0 \
  --backend-kwargs '{"gpu_memory_utilization":0.7,"max_inference_batch_size":8,"max_new_tokens":2048}' \
  --aligner-kwargs '{"device_map":"cuda:0","dtype":"bfloat16"}' \
  --ip 0.0.0.0 --port 8000
python 复制代码
qwen-asr-demo \
  --asr-checkpoint /home/data_4/googosoft_file_new/qwen3_asr/Qwen3-ASR-1.7B \
  --aligner-checkpoint /home/data_4/googosoft_file_new/qwen3_asr/Qwen3-ForcedAligner-0.6B \
  --backend vllm \
  --cuda-visible-devices 1 \
  --backend-kwargs '{"gpu_memory_utilization":0.7,"max_inference_batch_size":8,"max_new_tokens":2048}' \
  --aligner-kwargs '{"device_map":"cuda:0","dtype":"bfloat16"}' \
  --ip 0.0.0.0 --port 7000

或者将项目clone到本地解压后,在项目跟目录下执行:

python 复制代码
https://github.com/QwenLM/Qwen3-ASR/tree/main
python 复制代码
python qwen_asr/cli/demo.py \
  --asr-checkpoint /home/data_4/googosoft_file_new/qwen3_asr/Qwen3-ASR-1.7B \
  --aligner-checkpoint /home/data_4/googosoft_file_new/qwen3_asr/Qwen3-ForcedAligner-0.6B \
  --backend vllm \
  --cuda-visible-devices 1 \
  --backend-kwargs '{"gpu_memory_utilization":0.7,"max_inference_batch_size":8,"max_new_tokens":2048}' \
  --aligner-kwargs '{"device_map":"cuda:0","dtype":"bfloat16"}' \
  --ip 0.0.0.0 \
  --port 7000

然后打开 http://:8000,或通过 VS Code 等工具的端口转发进行访问。
后端说明

此演示支持两个后端:transformers 和 vLLM。所有特定于后端的初始化参数都应通过 --backend-kwargs 以 JSON 字典形式传入。如果未提供,演示将使用合理的默认值。

python 复制代码
# Example: override transformers init args without flash attention
--backend-kwargs '{"device_map":"cuda:0","dtype":"bfloat16"}'

# Example: override vLLM init args with 65% GPU memory
--backend-kwargs '{"gpu_memory_utilization":0.65}'

CUDA 设备说明

由于 vLLM 不遵循 cuda:0 风格的设备选择方式,本演示通过 --cuda-visible-devices 设置 CUDA_VISIBLE_DEVICES 来选择 GPU。

python 复制代码
# Use GPU 0
--cuda-visible-devices 0

# Use GPU 1
--cuda-visible-devices 1

HTTPS 说明

为避免部署服务器后出现浏览器麦克风权限问题,建议/要求通过 HTTPS 运行 Gradio 服务(尤其是在远程访问或使用现代浏览器/网关时)。使用 --ssl-certfile 和 --ssl-keyfile 启用 HTTPS。首先,生成一个私钥和一个自签名证书(有效期为 365 天):

python 复制代码
openssl req -x509 -newkey rsa:2048 \
  -keyout key.pem -out cert.pem \
  -days 365 -nodes \
  -subj "/CN=localhost"

然后使用 HTTPS 运行演示:

python 复制代码
qwen-asr-demo \
  --asr-checkpoint Qwen/Qwen3-ASR-1.7B \
  --backend transformers \
  --cuda-visible-devices 0 \
  --ip 0.0.0.0 --port 8000 \
  --ssl-certfile cert.pem \
  --ssl-keyfile key.pem \
  --no-ssl-verify

然后打开 http://:8000,或通过 VS Code 等工具的端口转发功能进行访问。

方式二:使用 vLLM 部署

vLLM 官方为 Qwen3-ASR 提供了开箱即用的模型支持,以实现高效推理。

你可以使用 vLLM 的 nightly 版本 wheel 包或 Docker 镜像来运行 Qwen3-ASR。要安装 vLLM 的 nightly 版本,我们推荐使用 uv 作为环境管理器:

python 复制代码
uv venv
source .venv/bin/activate
uv pip install -U vllm --pre \
    --extra-index-url https://wheels.vllm.ai/nightly/cu129 \
    --extra-index-url https://download.pytorch.org/whl/cu129 \
    --index-strategy unsafe-best-match
uv pip install "vllm[audio]" # For additional audio dependencies

在线服务:

你可以通过运行以下命令轻松使用 vLLM 部署 Qwen3-ASR:

python 复制代码
VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3-ASR-1.7B

我个人习惯如下写法启动模型:

python 复制代码
CUDA_VISIBLE_DEVICES=1 \
python3 -m vllm.entrypoints.openai.api_server \
  --model /home/data_4/googosoft_file_new/qwen3_asr/Qwen3-ASR-1.7B \
  --served-model-name Qwen3-ASR-1.7B \
  --host 0.0.0.0 \
  --port 7000 \
  --tensor-parallel-size 1 \
  --gpu-memory-utilization 0.86

模型服务器成功部署后,你可以通过多种方式与其交互。
使用 OpenAI SDK

python 复制代码
import base64
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:7000/v1",
    api_key="EMPTY"
)

response = client.chat.completions.create(
    model="Qwen3-ASR-1.7B",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "audio_url",
                    "audio_url": {
                        "url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav"
                    }
                }
            ]
        }
    ],
)

print(response.choices[0].message.content)

识别本地音频文件:
短时间的音频文件⬇️⬇️⬇️

python 复制代码
import base64
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:7000/v1",
    api_key="EMPTY"
)


audio_path = "/home/data_4/googosoft_file_new/qwen3_asr/welcome.mp3"

with open(audio_path, "rb") as f:
    audio_b64 = base64.b64encode(f.read()).decode()


response = client.chat.completions.create(
    model="Qwen3-ASR-1.7B",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": audio_b64,
                        "format": "wav"
                    }
                }
            ]
        }
    ],
)

print(response.choices[0].message.content)

本地长音频识别(需要进行长文本切分然后再识别):

安装依赖:

python 复制代码
sudo apt update
sudo apt install ffmpeg -y
python 复制代码
import os
import subprocess
import base64
import re
import time
from datetime import datetime
from openai import OpenAI

# ================== vLLM 配置 ==================
client = OpenAI(
    base_url="http://localhost:7000/v1",
    api_key="EMPTY"
)

INPUT_AUDIO = "/home/data_4/googosoft_file_new/qwen3_asr/2026-03-1408-23-32.mp3"
CHUNK_DIR = "/home/data_4/googosoft_file_new/qwen3_asr/chunks"

SEGMENT_TIME = 120  # 2分钟(防 token 超限)

# ================== 工具函数 ==================
def log(msg):
    print(f"[{datetime.now().strftime('%H:%M:%S')}] {msg}")


def clean_text(text):
    return re.sub(r"[嗯呃啊]+", "", text).strip()


# ================== 1?? 音频切分 ==================
def split_audio(input_path, output_dir, segment_time=120):
    os.makedirs(output_dir, exist_ok=True)

    log("开始切分音频...")

    output_pattern = os.path.join(output_dir, "chunk_%03d.wav")

    cmd = [
        "ffmpeg",
        "-i", input_path,
        "-ar", "16000",
        "-ac", "1",
        "-f", "segment",
        "-segment_time", str(segment_time),
        "-reset_timestamps", "1",
        "-y",
        output_pattern
    ]

    subprocess.run(cmd, check=True)

    files = sorted([
        os.path.join(output_dir, f)
        for f in os.listdir(output_dir)
        if f.endswith(".wav")
    ])

    log(f"切分完成,共 {len(files)} 段")
    return files


# ================== 2?? vLLM ASR ==================
def asr_recognize(audio_path, retry=3):
    for i in range(retry):
        try:
            log(f"识别: {audio_path}")

            # 1?? 读取音频
            with open(audio_path, "rb") as f:
                audio_b64 = base64.b64encode(f.read()).decode()

            # 2?? 请求 vLLM
            response = client.chat.completions.create(
                model="Qwen3-ASR-1.7B",
                messages=[
                    {
                        "role": "user",
                        "content": [
                            {
                                "type": "input_audio",
                                "input_audio": {
                                    "data": audio_b64,
                                    "format": "wav"
                                }
                            }
                        ]
                    }
                ],
            )

            return response.choices[0].message.content

        except Exception as e:
            log(f"第 {i+1} 次失败: {e}")
            time.sleep(2)

    return ""


# ================== 3?? 长音频处理 ==================
def asr_long_audio(audio_path):
    chunks = split_audio(audio_path, CHUNK_DIR, SEGMENT_TIME)

    full_text = []

    for i, chunk in enumerate(chunks):
        log(f"处理第 {i+1}/{len(chunks)} 段")

        text = asr_recognize(chunk)
        text = clean_text(text)

        log(f"结果: {text}")

        if text:
            full_text.append(text)

    return "。".join(full_text)


# ================== 主函数 ==================
if __name__ == "__main__":

    if not os.path.exists(INPUT_AUDIO):
        log("音频文件不存在")
        exit(1)

    log("开始 vLLM 长音频 ASR...")

    final_text = asr_long_audio(INPUT_AUDIO)

    print("\n" + "=" * 60)
    print("最终结果")
    print("=" * 60)
    print(final_text)

    with open("result.txt", "w", encoding="utf-8") as f:
        f.write(final_text)

    log("已保存 result.txt")

该模型也支持通过 vLLM 的 OpenAI 转录 API 使用。

python 复制代码
import httpx
from openai import OpenAI

# Initialize client
client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY"
)
audio_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav"
audio_file = httpx.get(audio_url).content

transcription = client.audio.transcriptions.create(
    model="Qwen/Qwen3-ASR-1.7B",
    file=audio_file,
)

print(transcription.text)

使用curl:

python 复制代码
curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
    "messages": [
    {"role": "user", "content": [
        {"type": "audio_url", "audio_url": {"url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-ASR-Repo/asr_en.wav"}}
    ]}
    ]
    }'

离线推理

参见以下使用 vLLM 对 Qwen3-ASR 进行离线推理的示例

python 复制代码
from vllm import LLM, SamplingParams
from vllm.assets.audio import AudioAsset
import base64
import requests

# Initialize the LLM
llm = LLM(
    model="Qwen/Qwen3-ASR-1.7B"
)

# Load audio
audio_asset = AudioAsset("winning_call")

# Create conversation with audio content
conversation = [
    {
        "role": "user",
        "content": [
            {
                "type": "audio_url",
                "audio_url": {"url": audio_asset.url}
            }
        ]
    }
]

sampling_params = SamplingParams(temperature=0.01, max_tokens=256)

# Run inference using .chat()
outputs = llm.chat(conversation, sampling_params=sampling_params)
print(outputs[0].outputs[0].text)

依赖包版本:

python 复制代码
Package                                  Version
---------------------------------------- ---------------------------
accelerate                               1.12.0
aiohappyeyeballs                         2.6.1
aiohttp                                  3.13.5
aiosignal                                1.4.0
annotated-doc                            0.0.4
annotated-types                          0.7.0
anthropic                                0.96.0
anyio                                    4.13.0
apache-tvm-ffi                           0.1.10
astor                                    0.8.1
attrs                                    26.1.0
audioread                                3.1.0
av                                       17.0.1
blake3                                   1.0.8
blinker                                  1.9.0
brotli                                   1.2.0
cachetools                               7.0.6
cbor2                                    6.0.0rc1
certifi                                  2026.2.25
cffi                                     2.0.0
charset-normalizer                       3.4.7
click                                    8.3.2
cloudpickle                              3.1.2
compressed-tensors                       0.15.0.1
cryptography                             46.0.7
cuda-bindings                            12.9.6
cuda-pathfinder                          1.5.3
cuda-python                              12.9.6
cuda-tile                                1.3.0
cuda-toolkit                             12.9.1
cupy-cuda12x                             14.0.1
cython                                   3.2.4
decorator                                5.2.1
depyf                                    0.20.0
dill                                     0.4.1
diskcache                                5.6.3
distro                                   1.9.0
dnspython                                2.8.0
docstring-parser                         0.18.0
dynet38                                  2.2
einops                                   0.8.2
email-validator                          2.3.0
fastapi                                  0.136.0
fastapi-cli                              0.0.24
fastapi-cloud-cli                        0.17.0
fastar                                   0.11.0
fastsafetensors                          0.2.2
filelock                                 3.29.0
flashinfer-cubin                         0.6.8.post1
flashinfer-python                        0.6.8.post1
flask                                    3.1.3
frozenlist                               1.8.0
fsspec                                   2026.3.0
gguf                                     0.18.0
googleapis-common-protos                 1.74.0
gradio                                   6.13.0
gradio-client                            2.5.0
groovy                                   0.1.2
grpcio                                   1.80.0
grpcio-reflection                        1.80.0
h11                                      0.16.0
hf-gradio                                0.4.1
hf-xet                                   1.5.0.dev1
httpcore                                 1.0.9
httptools                                0.7.1
httpx                                    0.28.1
httpx-sse                                0.4.3
huggingface-hub                          1.11.0
idna                                     3.12
ijson                                    3.5.0
importlib-metadata                       8.7.1
interegular                              0.3.3
itsdangerous                             2.2.0
jinja2                                   3.1.6
jiter                                    0.14.0
jmespath                                 1.1.0
joblib                                   1.5.3
jsonschema                               4.26.0
jsonschema-specifications                2025.9.1
lark                                     1.2.2
lazy-loader                              0.5
librosa                                  0.11.0
llguidance                               1.3.0
llvmlite                                 0.44.0
lm-format-enforcer                       0.11.3
loguru                                   0.7.3
markdown-it-py                           4.0.0
markupsafe                               3.0.3
mcp                                      1.27.0
mdurl                                    0.1.2
mistral-common                           1.11.0
model-hosting-container-standards        0.1.14
modelscope                               1.36.1
mpmath                                   1.3.0
msgpack                                  1.1.2
msgspec                                  0.21.1
multidict                                6.7.1
nagisa                                   0.2.11
networkx                                 3.6.1
ninja                                    1.13.0
numba                                    0.61.2
numpy                                    2.2.6
nvidia-cublas-cu12                       12.9.1.4
nvidia-cuda-cupti-cu12                   12.9.79
nvidia-cuda-nvrtc-cu12                   12.9.86
nvidia-cuda-runtime-cu12                 12.9.79
nvidia-cudnn-cu12                        9.17.1.4
nvidia-cudnn-frontend                    1.18.0
nvidia-cufft-cu12                        11.4.1.4
nvidia-cufile-cu12                       1.14.1.1
nvidia-curand-cu12                       10.3.10.19
nvidia-cusolver-cu12                     11.7.5.82
nvidia-cusparse-cu12                     12.5.10.65
nvidia-cusparselt-cu12                   0.7.1
nvidia-cutlass-dsl                       4.5.0.dev0
nvidia-cutlass-dsl-libs-base             4.5.0.dev0
nvidia-ml-py                             13.595.45
nvidia-nccl-cu12                         2.28.9
nvidia-nvjitlink-cu12                    12.9.86
nvidia-nvshmem-cu12                      3.4.5
nvidia-nvtx-cu12                         12.9.79
openai                                   2.32.0
openai-harmony                           0.0.8
opencv-python-headless                   4.13.0.92
opentelemetry-api                        1.41.0
opentelemetry-exporter-otlp              1.41.0
opentelemetry-exporter-otlp-proto-common 1.41.0
opentelemetry-exporter-otlp-proto-grpc   1.41.0
opentelemetry-exporter-otlp-proto-http   1.41.0
opentelemetry-proto                      1.41.0
opentelemetry-sdk                        1.41.0
opentelemetry-semantic-conventions       0.62b0
opentelemetry-semantic-conventions-ai    0.5.1
orjson                                   3.11.8
outlines-core                            0.2.11
packaging                                26.1
pandas                                   3.0.2
partial-json-parser                      0.2.1.1.post7
pillow                                   12.2.0
platformdirs                             4.9.6
pooch                                    1.9.0
prometheus-client                        0.25.0
prometheus-fastapi-instrumentator        7.1.0
propcache                                0.4.1
protobuf                                 6.33.6
psutil                                   7.2.2
py-cpuinfo                               9.0.0
pybase64                                 1.4.3
pycountry                                26.2.16
pycparser                                3.0
pydantic                                 2.13.3
pydantic-core                            2.46.3
pydantic-extra-types                     2.11.1
pydantic-settings                        2.14.0
pydub                                    0.25.1
pygments                                 2.20.0
pyjwt                                    2.12.1
python-dateutil                          2.9.0.post0
python-dotenv                            1.2.2
python-json-logger                       4.1.0
python-multipart                         0.0.26
pytz                                     2026.1.post1
pyyaml                                   6.0.3
pyzmq                                    27.1.0
quack-kernels                            0.3.11
qwen-asr                                 0.0.6
qwen-omni-utils                          0.0.9
ray                                      2.55.0
referencing                              0.37.0
regex                                    2026.4.4
requests                                 2.33.1
rich                                     15.0.0
rich-toolkit                             0.19.7
rignore                                  0.7.6
rpds-py                                  0.30.0
safehttpx                                0.1.7
safetensors                              0.8.0rc0
scikit-learn                             1.8.0
scipy                                    1.17.1
semantic-version                         2.10.0
sentencepiece                            0.2.1
sentry-sdk                               3.0.0a7
setproctitle                             1.3.7
setuptools                               80.10.2
shellingham                              1.5.4
six                                      1.17.0
sniffio                                  1.3.1
soundfile                                0.13.1
sox                                      1.5.0
soxr                                     1.0.0
soynlp                                   0.0.493
sse-starlette                            3.3.4
starlette                                0.52.1
supervisor                               4.3.0
sympy                                    1.14.0
tabulate                                 0.10.0
threadpoolctl                            3.6.0
tiktoken                                 0.12.0
tokenizers                               0.22.2
tomlkit                                  0.14.0
torch                                    2.11.0+cu129
torch-c-dlpack-ext                       0.1.5
torchaudio                               2.11.0+cu129
torchvision                              0.26.0+cu129
tqdm                                     4.67.3
transformers                             5.5.4
triton                                   3.6.0
typer                                    0.24.1
typing-extensions                        4.15.0
typing-inspection                        0.4.2
urllib3                                  2.6.3
uvicorn                                  0.45.0
uvloop                                   0.22.1
vllm                                     0.19.2rc1.dev109+gaad88f848
watchfiles                               1.1.1
websockets                               16.0
werkzeug                                 3.1.8
xgrammar                                 0.1.33
yarl                                     1.23.0
zipp                                     3.23.1

方式三:Docker一键部署(推荐新手)

为了更方便地使用我们的 qwen-asr Python 包,我们提供了预构建的 Docker 镜像:qwenllm/qwen3-asr。你只需安装 GPU 驱动并下载模型文件即可运行代码。

python 复制代码
# 官方原版
LOCAL_WORKDIR=/path/to/your/workspace
HOST_PORT=8000
CONTAINER_PORT=80
docker run --gpus all --name qwen3-asr \
    -v /var/run/docker.sock:/var/run/docker.sock -p $HOST_PORT:$CONTAINER_PORT \
    --mount type=bind,source=$LOCAL_WORKDIR,target=/data/shared/Qwen3-ASR \
    --shm-size=4gb \
    -it qwenllm/qwen3-asr:latest
python 复制代码
LOCAL_WORKDIR=/home/data_4/googosoft_file_new/qwen3_asr
HOST_PORT=8084
CONTAINER_PORT=80
docker run --gpus all --name qwen3-asr \
    -v /var/run/docker.sock:/var/run/docker.sock -p $HOST_PORT:$CONTAINER_PORT \
    --mount type=bind,source=$LOCAL_WORKDIR,target=/data/shared/Qwen3-ASR \
    --shm-size=4gb \
    -it qwenllm/qwen3-asr:latest
相关推荐
C、空白格21 小时前
Java集成Vosk实现离线语音识别
java·开发语言·语音识别
新缸中之脑1 天前
gemini 3.1 TTS全部30 种语音实测
人工智能·语音识别
唯创知音1 天前
唯创知音WT3000A M1模组用AI语音方案重新定义AI儿童打印设备
语音识别·ai儿童打印设备·ai语音交互方案
byte轻骑兵1 天前
【LE Audio】BASS精讲[1]: 核心缩写词拆解,从基础到实战的协议通用语言
人工智能·语音识别·蓝牙·le audio·低功耗音频
yuan199972 天前
MATLAB 多窗谱谱减法语音去噪
人工智能·matlab·语音识别
zero.cyx2 天前
更换Live2D模型具体步骤
人工智能·计算机视觉·语音识别
byte轻骑兵3 天前
从收音机到蓝牙:LE Audio核心BASS服务解析与实战
人工智能·音视频·语音识别·le audio·低功耗音频
开开心心就好3 天前
无需安装的单机塔防游戏轻松畅玩
人工智能·游戏·pdf·音视频·智能家居·语音识别·媒体
开开心心就好3 天前
这款工具批量卸载软件并清理残留文件
人工智能·游戏·音视频·语音识别·媒体·程序员创富·高考