Qwen3-TTS覆盖10种主要语言(中文、英文、日文、韩文、德文、法文、俄文、葡萄牙文、西班牙文、意大利文)以及多种方言音色,满足全球化应用需求。此外,模型具备强大的上下文理解能力,能根据指令和文本语义自适应调控语调、语速和情感表达,对噪声输入文本的鲁棒性也显著提升。核心特性:
- 强大的语音表征能力:基于自研Qwen3-TTS-Tokenizer-12Hz实现语音信号的高效声学压缩与高维语义建模,完整保留副语言信息与声学环境特征,通过轻量化非DiT架构实现高速高保真语音重建
- 通用端到端架构:采用离散多码本LM架构实现全信息端到端语音建模,彻底规避传统LM+DiT方案的信息瓶颈与级联误差,大幅提升模型通用性、生成效率与性能上限
- 极低延迟流式生成:基于创新双轨混合流式生成架构,单模型同时支持流式与非流式生成,单字输入后可立即输出首个音频包,端到端合成延迟低至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)pipinstall-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 Facepipinstall-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-ttsPython包。这将自动安装所需的运行时依赖项,并允许您加载任何已发布的Qwen3-TTS模型。为避免与现有包产生依赖冲突,我们建议使用全新的隔离环境。您可以通过以下方式创建干净的Python 3.12环境:
conda create -n qwen3-ttspython=3.12-y conda activate qwen3-tts然后运行:
pipinstall-U qwen-tts如果想在本地开发或修改代码,请以可编辑模式从源码安装。
gitclone https://github.com/QwenLM/Qwen3-TTS.gitcdQwen3-TTS pipinstall-e.此外,我们建议使用 FlashAttention 2 以减少 GPU 内存占用。
pipinstall-U flash-attn --no-build-isolation如果机器内存少于 96GB 且 CPU 核心数较多,请运行:
MAX_JOBS=4pipinstall-U flash-attn --no-build-isolation同时,您的硬件需要兼容 FlashAttention 2。更多信息请参阅 FlashAttention 仓库 的官方文档。FlashAttention 2 仅在模型以torch.float16或torch.bfloat16格式加载时可用。
Python 包用法
安装后,您可以导入Qwen3TTSModel运行自定义语音合成、语音设计和语音克隆功能。模型权重可通过Hugging Face模型ID(推荐)或本地下载目录路径指定。对于以下所有generate_*函数,除了展示及明确记录的参数外,您还可以传入Hugging Face Transformersmodel.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()查看当前模型支持的发音人和语言列表。
importtorchimportsoundfileassffromqwen_ttsimportQwen3TTSModel model=Qwen3TTSModel.from_pretrained("Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",device_map="cuda:0",dtype=torch.bfloat16,attn_implementation="flash_attention_2",)# single inferencewavs,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 inferencewavs,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指令。
importtorchimportsoundfileassffromqwen_ttsimportQwen3TTSModel model=Qwen3TTSModel.from_pretrained("Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign",device_map="cuda:0",dtype=torch.bfloat16,attn_implementation="flash_attention_2",)# single inferencewavs,sr=model.generate_voice_design(text="哥哥,你回来啦,人家等了你好久好久了,要抱抱!",language="Chinese",instruct="体现撒娇稚嫩的萝莉女声,音调偏高且起伏明显,营造出黏人、做作又刻意卖萌的听觉效果。",)sf.write("output_voice_design.wav",wavs[0],sr)# batch inferencewavs,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,但克隆质量可能下降。
importtorchimportsoundfileassffromqwen_ttsimportQwen3TTSModel 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即可生成新内容,无需重复提取特征。该方案特别适用于需要为大量台词保持角色音色一致的场景。
importtorchimportsoundfileassffromqwen_ttsimportQwen3TTSModel# create a reference audio in the target style using the VoiceDesign modeldesign_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 referenceclone_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 callswavs,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 callwavs,sr=clone_model.generate_voice_clone(text=sentences,language=["English","English"],voice_clone_prompt=voice_clone_prompt,)fori,winenumerate(wavs):sf.write(f"clone_batch_{i}.wav",w,sr)分词器编码与解码
若您仅需对音频进行编码解码以用于传输或训练等用途,Qwen3TTSTokenizer支持通过文件路径、URL链接、numpy波形数据及字典/列表形式的载荷进行编解码操作,例如:
importsoundfileassffromqwen_ttsimportQwen3TTSTokenizer 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的说明文档,您可以探索更高级的使用模式。
启动本地网页交互演示
要启动Qwen3-TTS网页交互演示,只需安装qwen-tts包并运行qwen-tts-demo命令。可通过以下命令查看帮助信息:
qwen-tts-demo --help要启动演示,可以使用以下命令:
# CustomVoice modelqwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --ip0.0.0.0 --port8000# VoiceDesign modelqwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --ip0.0.0.0 --port8000# Base modelqwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-Base --ip0.0.0.0 --port8000然后打开http://<你的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\-days365-nodes\-subj"/CN=localhost"然后使用 HTTPS 运行演示:
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-Base\--ip0.0.0.0 --port8000\--ssl-certfile cert.pem\--ssl-keyfile key.pem\--no-ssl-verify并打开https://<您的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提供首日支持!欢迎使用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 taskpython 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 taskpython 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-tagpython end2end.py --query-type Base --mode-tag icl评估方法
在评估过程中,我们以dtype=torch.bfloat16精度运行所有模型的推理,并设置max_new_tokens=2048。其他采样参数均采用检查点generate_config.json中的默认配置。对于Seed-Test和InstructTTS-Eval测试集,我们设置language=“auto”;其余测试集则显式指定对应语言。详细结果如下所示。
语音生成基准测试
Seed-TTS测试集上的零样本语音生成表现。性能指标采用词错误率(WER,↓),数值越低越好。
在TTS多语言测试集上的多语言语音生成。性能通过内容一致性的词错误率(WER,↓)和说话人相似度的余弦相似度(SIM,↑)来衡量。
跨语言基准测试中的跨语言语音生成。性能指标采用混合错误率(英语为WER,其他语言为CER,↓)。
在InstructTTSEval上的可控语音生成。性能通过属性感知与合成准确率(APS)、描述-语音一致性(DSD)和响应精确度(RP)进行衡量。
目标说话人多语言语音生成在TTS多语言测试集上的表现。性能通过词错误率(WER,↓)衡量。
长语音生成结果。性能通过词错误率(WER,↓)衡量。
语音分词器基准测试
不同监督式语义语音分词器在自动语音识别任务上的性能对比
不同语义相关语音分词器的比较。
Citation
If you find our paper and code useful in your research, please consider giving a star ⭐️ and citation 📝 😃
@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} }