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

基于vLLM-Omni插件部署Qwen3-TTS模型服务化

1、模型与框架概述

Qwen3-TTS模型介绍

Qwen3-TTS 覆盖 10 种主要语言(中文、英文、日文、韩文、德文、法文、俄文、葡萄牙文、西班牙文和意大利文),并提供多种方言语音配置,以满足全球应用需求。此外,该模型具备强大的上下文理解能力,可根据指令和文本语义自适应地控制语调、语速和情感表达,并对含噪声的输入文本展现出显著增强的鲁棒性。

Qwen3-TTS 模型介绍:

模型特性
Qwen3-TTS-12Hz-1.7B-CustomVoice通过用户指令对目标音色进行风格控制;
支持 9 种优质音色,涵盖不同性别、年龄、语言和方言的组合。
Qwen3-TTS-12Hz-1.7B-VoiceDesign根据用户提供的描述进行音色设计。
Qwen3-TTS-12Hz-1.7B-Base基础模型,支持从用户提供的 3 秒音频快速克隆音色;
可用于微调(FT)其他模型。

vLLM-Omni介绍

vLLM最初设计用于支持大型语言模型,以完成基于文本的自回归生成任务。vLLM-Omni 是一个扩展其对全模态模型推理和服务支持的框架:

  • 全模态:文本、图像、视频和音频数据处理
  • 非自回归架构:将 vLLM 的自回归支持扩展到扩散变换器 (DiT) 和其他并行生成模型
  • 异构输出:从传统文本生成到多模态输出

2、环境准备

配套版本环境准备指导
vLLM-Ascendv0.14.0rc1-
vLLM-Omniv0.14.0vLLM-Omni插件安装指南
CANN8.5.0-
Python3.11.14-
torch2.9.0+cpu-
torch_npu2.9.0-
驱动版本25.2.0-
算力设备Atlas 800T A2 910B-

3、推理服务部署

3.1、镜像下载

  • vLLM-Ascend容器部署
# 1、拉取镜像
docker pull quay.io/ascend/vllm-ascend:v0.14.0rc1

# 2、容器启动
export IMAGE=quay.io/ascend/vllm-ascend:v0.14.0rc1
docker run -itd \
    --name Qwen3-TTS \
    --shm-size=1g \
    --net=host \
    --device /dev/davinci0 \
    --device /dev/davinci1 \
    --device /dev/davinci2 \
    --device /dev/davinci3 \
    --device /dev/davinci4 \
    --device /dev/davinci5 \
    --device /dev/davinci6 \
    --device /dev/davinci7 \
    --device /dev/davinci_manager \
    --device /dev/devmm_svm \
    --device /dev/hisi_hdc \
    -v /usr/local/dcmi:/usr/local/dcmi \
    -v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool \
    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
    -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
    -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
    -v /etc/ascend_install.info:/etc/ascend_install.info \
    $IMAGE bash

# 3、进入容器
docker exec -it {container_id} /bin/bash
  • vLLM-Omni 0.14.0版本已发布,也可直接使用omni镜像,无需如下插件部署步骤
docker pull quay.io/ascend/vllm-omni:v0.14.0
  • vLLM-Omni插件部署
# 1、依赖包部署
apt update
apt install libjemalloc2
echo "export LD_PRELOAD=/usr/lib/$(uname -m)-linux-gnu/libjemalloc.so.2:$LD_PRELOAD" >> ~/.bashrc
source ~/.bashrc

# 2、vLLM-Omni部署
cd /vllm-workspace
# 本次使用了主分支,待0.14.0版本正式发布可切换相应分支
git clone https://github.com/vllm-project/vllm-omni.git
cd vllm-omni
# 注释掉pyproject.toml中的"fa3-fwd==0.0.1",否则会安装失败,npu用不到这个包
pip install -v -e .
export VLLM_WORKER_MULTIPROC_METHOD=spawn

# 3、语音依赖包部署
pip install torchaudio==2.9.0

3.2、模型权重下载

vllm启动服务时可自动下载模型权重至/root/.cache/目录下,如果离线环境不方便下载,也可手动下载准备

modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-1.7B-CustomVoice
modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --local_dir ./Qwen3-TTS-12Hz-1.7B-VoiceDesign
modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-Base --local_dir ./Qwen3-TTS-12Hz-1.7B-Base

3.3、模型部署

# 指定模型名称,自动下载模型
# Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice
# Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign
# Qwen/Qwen3-TTS-12Hz-1.7B-Base
export VLLM_USE_MODELSCOPE=true
vllm serve "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice" \
    --stage-configs-path /vllm-workspace/vllm-omni/vllm_omni/model_executor/stage_configs/qwen3_tts.yaml \
    --host 0.0.0.0 \
    --port 8000 \
    --gpu-memory-utilization 0.9 \
    --trust-remote-code \
    --enforce-eager \
    --omni

# 指定模型下载路径,启动服务
vllm serve /workspace/Qwen3-TTS-12Hz-1.7B-CustomVoice \
    --served-model-name "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice" \
    --stage-configs-path /vllm-workspace/vllm-omni/vllm_omni/model_executor/stage_configs/qwen3_tts.yaml \
    --host 0.0.0.0 \
    --port 8000 \
    --gpu-memory-utilization 0.9 \
    --trust-remote-code \
    --enforce-eager \
    --omni 

3.4、模型验证

curl请求示例如下,详细模型接口调用示例可参照:Qwen3-TTS Online Serving

# CustomVoice模型请求示例
curl -X POST http://0.0.0.0:8000/v1/audio/speech \
    -H "Content-Type: application/json" \
    -d '{
        "input": "Hello, how are you?",
        "voice": "Vivian",
        "language": "English"
    }' --output output.wav

# VoiceDesign模型请求示例
curl -X POST http://0.0.0.0:8000/v1/audio/speech \
    -H "Content-Type: application/json" \
    -d '{
        "task_type": "VoiceDesign",
        "input": "哥哥,你回来啦",
        "instructions": "体现撒娇稚嫩的萝莉女声,音调偏高"
    }' --output output.wav