支持10种语言及多 dialect 语音,3秒快速语音克隆,可用于模型微调。采用创新架构实现低延迟流式生成,高效声学压缩,保留丰富语音信息,满足实时交互需求。【此简介由AI生成】
license: apache-2.0
Qwen3-TTS
概述
简介
Qwen3-TTS 覆盖 10 种主要语言(中文、英语、日语、韩语、德语、法语、俄语、葡萄牙语、西班牙语、意大利语)以及多种方言语音配置,可满足全球应用需求。此外,该系列模型具备强大的上下文理解能力,能够根据指令和文本语义自适应控制语气、语速及情感表达,且对含噪输入文本的鲁棒性显著提升。主要特性如下:
- 强大的语音表征能力:依托自研的 Qwen3-TTS-Tokenizer-12Hz,实现语音信号的高效声学压缩与高维语义建模。完整保留副语言信息与声学环境特征,通过轻量级非 DiT 架构实现高速、高保真语音重建。
- 通用端到端架构:采用离散多码本 LM 架构,实现全信息端到端语音建模。彻底规避传统 LM+DiT 方案固有的信息瓶颈与级联错误,显著提升模型通用性、生成效率与性能上限。
- 极致低延迟流式生成:基于创新的 Dual-Track 混合流式生成架构,单模型同时支持流式与非流式生成。输入单个字符即可立即输出首包音频,端到端合成延迟低至 97ms,满足实时交互场景的严苛需求。
- 智能文本理解与语音控制:支持自然语言指令驱动的语音生成,可灵活控制音色、情感、韵律等多维度声学属性。通过深度融合文本语义理解,模型自适应调整语气、节奏与情感表达,实现“所想即所听”的拟真输出。
模型架构
已发布模型说明与下载
以下是已发布的Qwen3-TTS模型介绍及下载信息。技术报告中提及的其他模型将在近期陆续发布。请根据需求选择并下载合适的模型。
| 分词器名称 | 说明 |
|---|---|
| Qwen3-TTS-Tokenizer-12Hz | Qwen3-TTS-Tokenizer-12Hz模型,可将输入语音编码为码本并解码回语音。 |
| 模型 | 特点 | 语言支持 | 流式合成 | 指令控制 |
|---|---|---|---|---|
| Qwen3-TTS-12Hz-1.7B-VoiceDesign | 可根据用户提供的描述进行声音设计。 | 中文、英语、日语、韩语、德语、法语、俄语、葡萄牙语、西班牙语、意大利语 | ✅ | ✅ |
| Qwen3-TTS-12Hz-1.7B-CustomVoice | 通过用户指令对目标音色进行风格控制;支持9种优质音色,涵盖不同性别、年龄、语言及方言组合。 | 中文、英语、日语、韩语、德语、法语、俄语、葡萄牙语、西班牙语、意大利语 | ✅ | ✅ |
| Qwen3-TTS-12Hz-1.7B-Base | 基础模型,支持通过用户音频输入实现3秒快速声音克隆;可用于其他模型的微调(FT)。 | 中文、英语、日语、韩语、德语、法语、俄语、葡萄牙语、西班牙语、意大利语 | ✅ | |
| Qwen3-TTS-12Hz-0.6B-CustomVoice | 支持9种优质音色,涵盖不同性别、年龄、语言及方言组合。 | 中文、英语、日语、韩语、德语、法语、俄语、葡萄牙语、西班牙语、意大利语 | ✅ | |
| Qwen3-TTS-12Hz-0.6B-Base | 基础模型,支持通过用户音频输入实现3秒快速声音克隆;可用于其他模型的微调(FT)。 | 中文、英语、日语、韩语、德语、法语、俄语、葡萄牙语、西班牙语、意大利语 | ✅ |
在qwen-tts包或vLLM中加载模型时,会根据模型名称自动下载模型权重。但若您的运行环境不利于在执行过程中下载权重,可参考以下命令手动将模型权重下载到本地目录:
# Download through ModelScope (recommended for users in Mainland China)
pip install -U modelscope
modelscope download --model Qwen/Qwen3-TTS-Tokenizer-12Hz --local_dir ./Qwen3-TTS-Tokenizer-12Hz
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
modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local_dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice
modelscope download --model Qwen/Qwen3-TTS-12Hz-0.6B-Base --local_dir ./Qwen3-TTS-12Hz-0.6B-Base
# Download through Hugging Face
pip install -U "huggingface_hub[cli]"
huggingface-cli download Qwen/Qwen3-TTS-Tokenizer-12Hz --local-dir ./Qwen3-TTS-Tokenizer-12Hz
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local-dir ./Qwen3-TTS-12Hz-1.7B-CustomVoice
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --local-dir ./Qwen3-TTS-12Hz-1.7B-VoiceDesign
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-Base --local-dir ./Qwen3-TTS-12Hz-1.7B-Base
huggingface-cli download Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --local-dir ./Qwen3-TTS-12Hz-0.6B-CustomVoice
huggingface-cli download Qwen/Qwen3-TTS-12Hz-0.6B-Base --local-dir ./Qwen3-TTS-12Hz-0.6B-Base
快速入门
环境搭建
快速使用Qwen3-TTS的最简单方法是从PyPI安装qwen-tts Python包。这将自动安装所需的运行时依赖项,并允许您加载任何已发布的Qwen3-TTS模型。我们建议使用全新的隔离环境,以避免与现有包发生依赖冲突。您可以通过以下方式创建一个干净的Python 3.12环境:
conda create -n qwen3-tts python=3.12 -y
conda activate qwen3-tts
然后运行:
pip install -U qwen-tts
如果您希望在本地开发或修改代码,请以可编辑模式从源代码安装。
git clone https://github.com/QwenLM/Qwen3-TTS.git
cd Qwen3-TTS
pip install -e .
此外,我们建议使用 FlashAttention 2 以减少 GPU 内存占用。
pip install -U flash-attn --no-build-isolation
如果您的机器内存小于96GB且拥有多个CPU核心,请运行:
MAX_JOBS=4 pip install -U flash-attn --no-build-isolation
此外,你需要配备与 FlashAttention 2 兼容的硬件。有关详细信息,请参阅 FlashAttention 仓库 的官方文档。FlashAttention 2 仅在模型以 torch.float16 或 torch.bfloat16 精度加载时才能使用。
Python 包使用方法
安装完成后,你可以导入 Qwen3TTSModel 来运行自定义语音 TTS、语音设计和语音克隆。模型权重可以指定为 Hugging Face 模型 ID(推荐)或你下载的本地目录路径。对于以下所有 generate_* 函数,除了所示并明确记录的参数外,你还可以传递 Hugging Face Transformers model.generate 支持的生成参数,例如 max_new_tokens、top_p 等。
自定义语音生成
对于自定义语音模型(Qwen3-TTS-12Hz-1.7B/0.6B-CustomVoice),你只需调用 generate_custom_voice,传入单个字符串或批量列表,以及 language、speaker 和可选的 instruct。你也可以调用 model.get_supported_speakers() 和 model.get_supported_languages() 来查看当前模型支持哪些发言人和语言。
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
device_map="cuda:0",
dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)
# single inference
wavs, sr = model.generate_custom_voice(
text="其实我真的有发现,我是一个特别善于观察别人情绪的人。",
language="Chinese", # Pass `Auto` (or omit) for auto language adaptive; if the target language is known, set it explicitly.
speaker="Vivian",
instruct="用特别愤怒的语气说", # Omit if not needed.
)
sf.write("output_custom_voice.wav", wavs[0], sr)
# batch inference
wavs, sr = model.generate_custom_voice(
text=[
"其实我真的有发现,我是一个特别善于观察别人情绪的人。",
"She said she would be here by noon."
],
language=["Chinese", "English"],
speaker=["Vivian", "Ryan"],
instruct=["", "Very happy."]
)
sf.write("output_custom_voice_1.wav", wavs[0], sr)
sf.write("output_custom_voice_2.wav", wavs[1], sr)
对于Qwen3-TTS-12Hz-1.7B/0.6B-CustomVoice模型,以下提供支持的说话人列表及说话人描述。为获得最佳音质,建议使用各说话人的母语。当然,每个说话人也可以说模型支持的任何语言。
| 说话人 | 声音描述 | 母语 |
|---|---|---|
| Vivian | 清亮略带锋芒的年轻女声。 | 中文 |
| Serena | 温暖柔和的年轻女声。 | 中文 |
| Uncle_Fu | 成熟男声,音色低沉醇厚。 | 中文 |
| Dylan | 京味儿青年男声,音色清晰自然。 | 中文(北京方言) |
| Eric | 活泼的成都男声,略带沙哑的明亮感。 | 中文(四川方言) |
| Ryan | 充满活力的男声,节奏感强。 | 英语 |
| Aiden | 阳光的美式男声,中频清晰。 | 英语 |
| Ono_Anna | 俏皮的日本女声,音色轻盈灵动。 | 日语 |
| Sohee | 温暖的韩国女声,情感丰富。 | 韩语 |
声音设计
对于声音设计模型(Qwen3-TTS-12Hz-1.7B-VoiceDesign),您可以使用generate_voice_design来提供目标文本和自然语言的instruct描述。
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign",
device_map="cuda:0",
dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)
# single inference
wavs, sr = model.generate_voice_design(
text="哥哥,你回来啦,人家等了你好久好久了,要抱抱!",
language="Chinese",
instruct="体现撒娇稚嫩的萝莉女声,音调偏高且起伏明显,营造出黏人、做作又刻意卖萌的听觉效果。",
)
sf.write("output_voice_design.wav", wavs[0], sr)
# batch inference
wavs, sr = model.generate_voice_design(
text=[
"哥哥,你回来啦,人家等了你好久好久了,要抱抱!",
"It's in the top drawer... wait, it's empty? No way, that's impossible! I'm sure I put it there!"
],
language=["Chinese", "English"],
instruct=[
"体现撒娇稚嫩的萝莉女声,音调偏高且起伏明显,营造出黏人、做作又刻意卖萌的听觉效果。",
"Speak in an incredulous tone, but with a hint of panic beginning to creep into your voice."
]
)
sf.write("output_voice_design_1.wav", wavs[0], sr)
sf.write("output_voice_design_2.wav", wavs[1], sr)
语音克隆
对于语音克隆模型(Qwen3-TTS-12Hz-1.7B/0.6B-Base),若要克隆语音并合成新内容,只需提供参考音频片段(ref_audio)及其转录文本(ref_text)即可。ref_audio可以是本地文件路径、URL、base64字符串,或(numpy_array, sample_rate)元组。若设置x_vector_only_mode=True,则仅使用说话人嵌入,因此无需ref_text,但克隆质量可能会下降。
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-Base",
device_map="cuda:0",
dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)
ref_audio = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-TTS-Repo/clone.wav"
ref_text = "Okay. Yeah. I resent you. I love you. I respect you. But you know what? You blew it! And thanks to you."
wavs, sr = model.generate_voice_clone(
text="I am solving the equation: x = [-b ± √(b²-4ac)] / 2a? Nobody can — it's a disaster (◍•͈⌔•͈◍), very sad!",
language="English",
ref_audio=ref_audio,
ref_text=ref_text,
)
sf.write("output_voice_clone.wav", wavs[0], sr)
如果您需要在多次生成中重复使用相同的参考提示词(以避免重复计算提示词特征),请使用 create_voice_clone_prompt 构建一次提示词,然后通过 voice_clone_prompt 参数传入。
prompt_items = model.create_voice_clone_prompt(
ref_audio=ref_audio,
ref_text=ref_text,
x_vector_only_mode=False,
)
wavs, sr = model.generate_voice_clone(
text=["Sentence A.", "Sentence B."],
language=["English", "English"],
voice_clone_prompt=prompt_items,
)
sf.write("output_voice_clone_1.wav", wavs[0], sr)
sf.write("output_voice_clone_2.wav", wavs[1], sr)
如需更多可复用的声音克隆提示词示例、批量克隆及批量推理相关内容,请参考示例代码。结合这些示例和generate_voice_clone函数说明,您可以探索更多高级使用方式。
先设计声音再克隆
如果您希望获得一个可像克隆说话人一样重复使用的定制声音,一种实用的工作流程是:(1)使用VoiceDesign模型合成一段符合目标角色设定的简短参考音频,(2)将该音频输入create_voice_clone_prompt以构建可复用的提示词,然后(3)调用generate_voice_clone并传入voice_clone_prompt来生成新内容,无需每次重新提取特征。当您需要为多个语句保持一致的角色声音时,这种方法尤为有用。
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel
# create a reference audio in the target style using the VoiceDesign model
design_model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign",
device_map="cuda:0",
dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)
ref_text = "H-hey! You dropped your... uh... calculus notebook? I mean, I think it's yours? Maybe?"
ref_instruct = "Male, 17 years old, tenor range, gaining confidence - deeper breath support now, though vowels still tighten when nervous"
ref_wavs, sr = design_model.generate_voice_design(
text=ref_text,
language="English",
instruct=ref_instruct
)
sf.write("voice_design_reference.wav", ref_wavs[0], sr)
# build a reusable clone prompt from the voice design reference
clone_model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-Base",
device_map="cuda:0",
dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)
voice_clone_prompt = clone_model.create_voice_clone_prompt(
ref_audio=(ref_wavs[0], sr), # or "voice_design_reference.wav"
ref_text=ref_text,
)
sentences = [
"No problem! I actually... kinda finished those already? If you want to compare answers or something...",
"What? No! I mean yes but not like... I just think you're... your titration technique is really precise!",
]
# reuse it for multiple single calls
wavs, sr = clone_model.generate_voice_clone(
text=sentences[0],
language="English",
voice_clone_prompt=voice_clone_prompt,
)
sf.write("clone_single_1.wav", wavs[0], sr)
wavs, sr = clone_model.generate_voice_clone(
text=sentences[1],
language="English",
voice_clone_prompt=voice_clone_prompt,
)
sf.write("clone_single_2.wav", wavs[0], sr)
# or batch generate in one call
wavs, sr = clone_model.generate_voice_clone(
text=sentences,
language=["English", "English"],
voice_clone_prompt=voice_clone_prompt,
)
for i, w in enumerate(wavs):
sf.write(f"clone_batch_{i}.wav", w, sr)
分词器的编码与解码
如果您仅需对音频进行编码和解码以用于传输或训练等场景,Qwen3TTSTokenizer 支持通过路径、URL、numpy 波形以及字典/列表负载进行编码/解码,例如:
import soundfile as sf
from qwen_tts import Qwen3TTSTokenizer
tokenizer = Qwen3TTSTokenizer.from_pretrained(
"Qwen/Qwen3-TTS-Tokenizer-12Hz",
device_map="cuda:0",
)
enc = tokenizer.encode("https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen3-TTS-Repo/tokenizer_demo_1.wav")
wavs, sr = tokenizer.decode(enc)
sf.write("decode_output.wav", wavs[0], sr)
如需更多分词器示例(包括不同的输入格式和批量使用方式),请参考示例代码。借助这些示例以及Qwen3TTSTokenizer的说明,您可以探索更多高级使用模式。
启动本地 Web UI 演示
要启动 Qwen3-TTS Web UI 演示,只需安装 qwen-tts 包并运行 qwen-tts-demo。使用以下命令获取帮助:
qwen-tts-demo --help
要启动演示,您可以使用以下命令:
# CustomVoice model
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --ip 0.0.0.0 --port 8000
# VoiceDesign model
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --ip 0.0.0.0 --port 8000
# Base model
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-Base --ip 0.0.0.0 --port 8000
然后打开 http://<your-ip>:8000,或通过 VS Code 等工具中的端口转发进行访问。
基础模型 HTTPS 注意事项
为避免服务器部署后出现浏览器麦克风权限问题,对于基础模型部署,建议/要求通过 HTTPS 运行 gradio 服务(尤其是在远程访问或通过现代浏览器/网关访问时)。使用 --ssl-certfile 和 --ssl-keyfile 启用 HTTPS。首先,我们需要生成私钥和自签名证书(有效期为 365 天):
openssl req -x509 -newkey rsa:2048 \
-keyout key.pem -out cert.pem \
-days 365 -nodes \
-subj "/CN=localhost"
然后使用 HTTPS 运行演示:
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-Base \
--ip 0.0.0.0 --port 8000 \
--ssl-certfile cert.pem \
--ssl-keyfile key.pem \
--no-ssl-verify
然后打开 https://<your-ip>:8000 即可体验。如果浏览器显示警告,这是自签名证书的正常现象。在生产环境中,请使用真实证书。
DashScope API 使用方法
为了进一步探索 Qwen3-TTS,我们建议您尝试使用 DashScope API,以获得更快速、更高效的体验。有关详细的 API 信息和文档,请参考以下内容:
| API 描述 | API 文档(中国大陆) | API 文档(国际) |
|---|---|---|
| Qwen3-TTS 自定义声音模型实时 API | https://help.aliyun.com/zh/model-studio/qwen-tts-realtime | https://www.alibabacloud.com/help/en/model-studio/qwen-tts-realtime |
| Qwen3-TTS 声音克隆模型实时 API | https://help.aliyun.com/zh/model-studio/qwen-tts-voice-cloning | https://www.alibabacloud.com/help/en/model-studio/qwen-tts-voice-cloning |
| Qwen3-TTS 声音设计模型实时 API | https://help.aliyun.com/zh/model-studio/qwen-tts-voice-design | https://www.alibabacloud.com/help/en/model-studio/qwen-tts-voice-design |
vLLM 使用方法
vLLM 官方已为 Qwen3-TTS 提供 day-0 支持!欢迎使用 vLLM-Omni 进行 Qwen3-TTS 的部署和推理。有关安装及更多详细信息,请查看 vLLM-Omni 官方文档。目前仅支持离线推理,后续将支持在线服务,vLLM-Omni 会在推理速度、流式能力等方面持续为 Qwen3-TTS 提供支持与优化。
离线推理
您可以使用 vLLM-Omni 在本地对 Qwen3-TTS 进行推理,我们在 vLLM-Omni 代码库 中提供了示例,可生成音频输出:
# git clone https://github.com/vllm-project/vllm-omni.git
# cd vllm-omni/examples/offline_inference/qwen3_tts
# Run a single sample with CustomVoice task
python end2end.py --query-type CustomVoice
# Batch sample (multiple prompts in one run) with CustomVoice task:
python end2end.py --query-type CustomVoice --use-batch-sample
# Run a single sample with VoiceDesign task
python end2end.py --query-type VoiceDesign
# Batch sample (multiple prompts in one run) with VoiceDesign task:
python end2end.py --query-type VoiceDesign --use-batch-sample
# Run a single sample with Base task in icl mode-tag
python end2end.py --query-type Base --mode-tag icl
评估
评估过程中,我们对所有模型均采用dtype=torch.bfloat16进行推理,并设置max_new_tokens=2048。所有其他采样参数均使用检查点中generate_config.json的默认值。对于Seed-Test和InstructTTS-Eval测试集,我们设置language="auto";而对于其他所有测试集,则显式传入相应的language参数。详细结果如下所示。
语音生成基准测试
在Seed-TTS测试集上进行零样本语音生成。性能通过词错误率(WER,↓)衡量,数值越低越好。
| 数据集 | 模型 | 性能 | |
|---|---|---|---|
| 内容一致性 | |||
| SEED test-zh | test-en |
Seed-TTS(Anastassiou et al., 2024) | 1.12 | 2.25 |
| MaskGCT(Wang et al., 2024) | 2.27 | 2.62 | |
| E2 TTS(Eskimez et al., 2024) | 1.97 | 2.19 | |
| F5-TTS(Chen et al., 2024) | 1.56 | 1.83 | |
| Spark TTS(Wang et al., 2025) | 1.20 | 1.98 | |
| Llasa-8B(Ye et al., 2025b) | 1.59 | 2.97 | |
| KALL-E(Xia et al., 2024) | 0.96 | 1.94 | |
| FireRedTTS 2(Xie et al., 2025) | 1.14 | 1.95 | |
| CosyVoice 3(Du et al., 2025) | 0.71 | 1.45 | |
| MiniMax-Speech(Zhang et al., 2025a) | 0.83 | 1.65 | |
| Qwen3-TTS-25Hz-0.6B-Base | 1.18 | 1.64 | |
| Qwen3-TTS-25Hz-1.7B-Base | 1.10 | 1.49 | |
| Qwen3-TTS-12Hz-0.6B-Base | 0.92 | 1.32 | |
| Qwen3-TTS-12Hz-1.7B-Base | 0.77 | 1.24 | |
在TTS多语言测试集上进行多语言语音生成。性能通过词错误率(WER,↓)衡量内容一致性,通过余弦相似度(SIM,↑)衡量说话人相似度。
| 语言 | Qwen3-TTS-25Hz | Qwen3-TTS-12Hz | MiniMax | ElevenLabs | ||
|---|---|---|---|---|---|---|
| 0.6B-Base | 1.7B-Base | 0.6B-Base | 1.7B-Base | |||
| 内容一致性 | ||||||
| 中文 | 1.108 | 0.777 | 1.145 | 0.928 | 2.252 | 16.026 |
| 英语 | 1.048 | 1.014 | 0.836 | 0.934 | 2.164 | 2.339 |
| 德语 | 1.501 | 0.960 | 1.089 | 1.235 | 1.906 | 0.572 |
| 意大利语 | 1.169 | 1.105 | 1.534 | 0.948 | 1.543 | 1.743 |
| 葡萄牙语 | 2.046 | 1.778 | 2.254 | 1.526 | 1.877 | 1.331 |
| 西班牙语 | 2.031 | 1.491 | 1.491 | 1.126 | 1.029 | 1.084 |
| 日语 | 4.189 | 5.121 | 6.404 | 3.823 | 3.519 | 10.646 |
| 韩语 | 2.852 | 2.631 | 1.741 | 1.755 | 1.747 | 1.865 |
| 法语 | 2.852 | 2.631 | 2.931 | 2.858 | 4.099 | 5.216 |
| 俄语 | 5.957 | 4.535 | 4.458 | 3.212 | 4.281 | 3.878 |
| 说话人相似度 | ||||||
| 中文 | 0.797 | 0.796 | 0.811 | 0.799 | 0.780 | 0.677 |
| 英语 | 0.811 | 0.815 | 0.829 | 0.775 | 0.756 | 0.613 |
| 德语 | 0.749 | 0.737 | 0.769 | 0.775 | 0.733 | 0.614 |
| 意大利语 | 0.722 | 0.718 | 0.792 | 0.817 | 0.699 | 0.579 |
| 葡萄牙语 | 0.790 | 0.783 | 0.794 | 0.817 | 0.805 | 0.711 |
| 西班牙语 | 0.732 | 0.731 | 0.812 | 0.814 | 0.762 | 0.615 |
| 日语 | 0.810 | 0.807 | 0.798 | 0.788 | 0.776 | 0.738 |
| 韩语 | 0.824 | 0.814 | 0.812 | 0.799 | 0.779 | 0.700 |
| 法语 | 0.698 | 0.703 | 0.700 | 0.714 | 0.628 | 0.535 |
| 俄语 | 0.734 | 0.744 | 0.781 | 0.792 | 0.761 | 0.676 |
在跨语言基准测试上进行跨语言语音生成。性能通过混合错误率(英语使用WER,其他语言使用CER,↓)衡量。
| 任务 | Qwen3-TTS-25Hz-1.7B-Base | Qwen3-TTS-12Hz-1.7B-Base | CosyVoice3 | CosyVoice2 |
|---|---|---|---|---|
| en-to-zh | 5.66 | 4.77 | 5.09 | 13.5 |
| ja-to-zh | 3.92 | 3.43 | 3.05 | 48.1 |
| ko-to-zh | 1.14 | 1.08 | 1.06 | 7.70 |
| zh-to-en | 2.91 | 2.77 | 2.98 | 6.47 |
| ja-to-en | 3.95 | 3.04 | 4.20 | 17.1 |
| ko-to-en | 3.48 | 3.09 | 4.19 | 11.2 |
| zh-to-ja | 9.29 | 8.40 | 7.08 | 13.1 |
| en-to-ja | 7.74 | 7.21 | 6.80 | 14.9 |
| ko-to-ja | 4.17 | 3.67 | 3.93 | 5.86 |
| zh-to-ko | 8.12 | 4.82 | 14.4 | 24.8 |
| en-to-ko | 6.83 | 5.14 | 5.87 | 21.9 |
| ja-to-ko | 6.86 | 5.59 | 7.92 | 21.5 |
在InstructTTSEval上进行可控语音生成。性能通过属性感知与合成准确度(APS)、描述-语音一致性(DSD)和响应精准度(RP)衡量。
| 类型 | 模型 | InstructTTSEval-ZH | InstructTTSEval-EN | ||||
|---|---|---|---|---|---|---|---|
| APS(↑) | DSD(↑) | RP(↑) | APS(↑) | DSD(↑) | RP(↑) | ||
| 目标 说话人 |
Gemini-flash | 88.2 | 90.9 | 77.3 | 92.3 | 93.8 | 80.1 |
| Gemini-pro | 89.0 | 90.1 | 75.5 | 87.6 | 86.0 | 67.2 | |
| Qwen3TTS-25Hz-1.7B-CustomVoice | 83.1 | 75.0 | 63.0 | 79.0 | 82.8 | 69.3 | |
| Qwen3TTS-12Hz-1.7B-CustomVoice | 83.0 | 77.8 | 61.2 | 77.3 | 77.1 | 63.7 | |
| GPT-4o-mini-tts | 54.9 | 52.3 | 46.0 | 76.4 | 74.3 | 54.8 | |
| 语音 设计 |
Qwen3TTS-12Hz-1.7B-VD | 85.2 | 81.1 | 65.1 | 82.9 | 82.4 | 68.4 |
| Mimo-Audio-7B-Instruct(Zhang et al., 2025b) | 75.7 | 74.3 | 61.5 | 80.6 | 77.6 | 59.5 | |
| VoiceSculptor(Hu et al., 2026) | 75.7 | 64.7 | 61.5 | - | - | - | |
| Hume | - | - | - | 83.0 | 75.3 | 54.3 | |
| VoxInstruct(Zhou et al., 2024) | 47.5 | 52.3 | 42.6 | 54.9 | 57.0 | 39.3 | |
| Parler-tts-mini(Lyth & King, 2024) | - | - | - | 63.4 | 48.7 | 28.6 | |
| Parler-tts-large(Lyth & King, 2024) | - | - | - | 60.0 | 45.9 | 31.2 | |
| PromptTTS(Guo et al., 2023) | - | - | - | 64.3 | 47.2 | 31.4 | |
| PromptStyle(Liu et al., 2023) | - | - | - | 57.4 | 46.4 | 30.9 | |
TTS多语言测试集上的目标说话人多语言语音生成。性能通过词错误率(WER,↓)衡量。
| 语言 | Qwen3-TTS-25Hz | Qwen3-TTS-12Hz | GPT-4o-Audio Preview |
||
|---|---|---|---|---|---|
| 0.6B-CustomVoice | 1.7B-CustomVoice | 0.6B-CustomVoice | 1.7B-CustomVoice | ||
| 中文 | 0.874 | 0.708 | 0.944 | 0.903 | 3.519 |
| 英语 | 1.332 | 0.936 | 1.188 | 0.899 | 2.197 |
| 德语 | 0.990 | 0.634 | 2.722 | 1.057 | 1.161 |
| 意大利语 | 1.861 | 1.271 | 2.545 | 1.362 | 1.194 |
| 葡萄牙语 | 1.728 | 1.854 | 3.219 | 2.681 | 1.504 |
| 西班牙语 | 1.309 | 1.284 | 1.154 | 1.330 | 4.000 |
| 日语 | 3.875 | 4.518 | 6.877 | 4.924 | 5.001 |
| 韩语 | 2.202 | 2.274 | 3.053 | 1.741 | 2.763 |
| 法语 | 3.865 | 3.080 | 3.841 | 3.781 | 3.605 |
| 俄语 | 6.529 | 4.444 | 5.809 | 4.734 | 5.250 |
长语音生成结果。性能通过词错误率(WER,↓)衡量。
| 数据集 | 模型 | 性能 | |
|---|---|---|---|
| 内容一致性 | |||
| long-zh | long-en | Higgs-Audio-v2 (chunk)(Boson AI, 2025) | 5.505 | 6.917 |
| VibeVoice(Peng et al., 2025) | 22.619 | 1.780 | |
| VoxCPM(Zhou et al., 2025) | 4.835 | 7.474 | |
| Qwen3-TTS-25Hz-1.7B-CustomVoice | 1.517 | 1.225 | |
| Qwen3-TTS-12Hz-1.7B-CustomVoice | 2.356 | 2.812 | |
语音Tokenizer基准测试
不同有监督语义语音Tokenizer在ASR任务上的对比。
| 模型 | 码本大小 | FPS | C.V. EN | C.V. CN | Fluers EN | Fluers CN |
|---|---|---|---|---|---|---|
| S3 Tokenizer(VQ)(Du et al., 2024a) | 4096 | 50 | 12.06 | 15.38 | - | - |
| S3 Tokenizer(VQ)(Du et al., 2024a) | 4096 | 25 | 11.56 | 18.26 | 7.65 | 5.03 |
| S3 Tokenizer(FSQ)(Du et al., 2024a) | 6561 | 25 | 10.67 | 7.29 | 6.58 | 4.43 |
| Qwen-TTS-Tokenizer-25Hz(Stage 1) | 32768 | 25 | 7.51 | 10.73 | 3.07 | 4.23 |
| Qwen-TTS-Tokenizer-25Hz(Stage 2) | 32768 | 25 | 10.40 | 14.99 | 4.14 | 4.67 |
不同语义相关语音Tokenizer的对比。
| 模型 | NQ | 码本大小 | FPS | PESQ_WB | PESQ_NB | STOI | UTMOS | SIM |
|---|---|---|---|---|---|---|---|---|
| SpeechTokenizer(Zhang et al., 2023a) | 8 | 1024 | 50 | 2.60 | 3.05 | 0.92 | 3.90 | 0.85 |
| X-codec(Ye et al., 2025a) | 2 | 1024 | 50 | 2.68 | 3.27 | 0.86 | 4.11 | 0.84 |
| X-codec 2(Ye et al., 2025b) | 1 | 65536 | 50 | 2.43 | 3.04 | 0.92 | 4.13 | 0.82 |
| XY-Tokenizer(Gong et al., 2025) | 8 | 1024 | 12.5 | 2.41 | 3.00 | 0.91 | 3.98 | 0.83 |
| Mimi(Défossez et al., 2024) | 16 | 2048 | 12.5 | 2.88 | 3.42 | 0.94 | 3.87 | 0.87 |
| FireredTTS 2 Tokenizer(Xie et al., 2025) | 16 | 2048 | 12.5 | 2.73 | 3.28 | 0.94 | 3.88 | 0.87 |
| Qwen-TTS-Tokenizer-12Hz | 16 | 2048 | 12.5 | 3.21 | 3.68 | 0.96 | 4.16 | 0.95 |
引用说明
如果您觉得我们的论文和代码对您的研究有所帮助,欢迎点赞 ⭐ 并引用 📝 本文 😃
@article{Qwen3-TTS,
title={Qwen3-TTS Technical Report},
author={Hangrui Hu and Xinfa Zhu and Ting He and Dake Guo and Bin Zhang and Xiong Wang and Zhifang Guo and Ziyue Jiang and Hongkun Hao and Zishan Guo and Xinyu Zhang and Pei Zhang and Baosong Yang and Jin Xu and Jingren Zhou and Junyang Lin},
journal={arXiv preprint arXiv:2601.15621},
year={2026}
}