Qwen3-TTS is an advanced Text-to-Speech (TTS) model family covering 10 major languages (Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, and Italian) along with multiple dialectal voice profiles. It features strong contextual understanding, enabling adaptive control of tone, speaking rate, and emotional expression based on text semantics and natural language instructions.
Code, models, and weights are publicly available in the official GitHub repository.
Traditional language model and Diffusion Transformer (LM+DiT) schemes often suffer from information bottlenecks and cascading errors. Qwen3-TTS addresses these issues by introducing a universal end-to-end architecture based on a discrete multi-codebook LM configuration.
Key traits of Qwen3-TTS:
Qwen3-TTS-Tokenizer-12Hz, it achieves efficient acoustic compression and high-dimensional semantic modeling, fully preserving paralinguistic and environmental context.The Qwen3-TTS architecture utilizes full-information end-to-end modeling, moving away from classic cascaded systems. It pairs a discrete multi-codebook language model framework with a lightweight non-DiT architecture for high-speed, high-fidelity speech reconstruction.
The platform features several key foundation and specialized models:
Qwen3-TTS is intended for:
Limitations:
torch.float16 or torch.bfloat16 data types.To run inference, you will need to install the official package and its performance dependencies.
conda create -n qwen3-tts python=3.12 -y
conda activate qwen3-tts
pip install -U qwen-tts
pip install -U flash-attn --no-build-isolation
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",
)
wavs, sr = model.generate_custom_voice(
text="其实我真的有发现,我是一个特别善于观察别人情绪的人。",
language="Chinese", # Set explicitly if known, or omit for auto-adaptive
speaker="Vivian",
instruct="用特别愤怒的语气说",
)
sf.write("output_custom_voice.wav", wavs[0], sr)
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 = "path/to/reference.wav"
ref_text = "This is the text spoken in the reference audio clip."
wavs, sr = model.generate_voice_clone(
text="Synthesize this new text content using the speaker profile extracted from the reference.",
language="English",
ref_audio=ref_audio,
ref_text=ref_text,
)
sf.write("output_voice_clone.wav", wavs[0], sr)
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("path/to/input.wav")
wavs, sr = tokenizer.decode(enc)
sf.write("decode_output.wav", wavs[0], sr)
@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}
}