Qwen3-TTS Models Loader ⚡
Downloads a Qwen3-TTS model once — and is fully offline after that
- QWEN_TTS_MODEL
Qwen3-TTS is a real, local, open TTS that can pass for a service-quality voice - and this loader is how you get the model onto your disk without touching the command line. Pick a repo_id, hit run once, and the checkpoint downloads into models/Qwen3-TTS/<name>/. Every load after the first is fully offline, because the node always loads with local_files_only=True. No network access once the files are there, no surprise phone-homes.
The dropdowns
-
repo_id- five presets across two sizes and three personalities:Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice(default) - built-in named speakers.Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign- voice-design instructions.Qwen/Qwen3-TTS-12Hz-1.7B-Base- no speaker or instruct features, just generation.Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice- the small CustomVoice.Qwen/Qwen3-TTS-12Hz-0.6B-Base.
The layout follows the DarioFT convention: pick a repo, it downloads into
models/Qwen3-TTS/<folder_name>/, and the speech tokenizer/codec lives inside that same repo - no separate download. If you already have a HuggingFace or ModelScope cache copy, it's migrated in place instead of re-downloaded. -
source-HuggingFace(default) orModelScope, for the region/mirror you actually have access to. -
precision-bf16(default),fp16, orfp32. -
attention-auto(default),flash_attention_2,sdpa, oreager.
The optional input
local_model_path - override to point at an existing local folder containing a full model. The one requirement: it must have a speech_tokenizer/ subfolder. Leave it blank to use repo_id. This is the escape hatch for a model you already have on disk, or a variant that isn't in the preset list.
One output
QWEN_TTS_MODEL - a wrapper object that goes straight into Qwen3-TTS Custom Voice (the generate node). The two are a matched pair: loader here, generate there.
How to pre-fetch by hand
If you'd rather download outside ComfyUI (a long download through the UI risks a timeout mid-file), the README gives the exact command:
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --local-dir ComfyUI/models/Qwen3-TTS/Qwen3-TTS-12Hz-1.7B-CustomVoice
Then just re-add the node and the loader will find it.
Installing it
Part of the ComfyUI-GGUF-Loader pack under 🤖 CCTech/Qwen TTS. ComfyUI Manager → search "ComfyUI-GGUF-Loader" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
cd ComfyUI-GGUF-Loader
pip install -r requirements.txt
This node needs the qwen-tts pip package (it's in requirements.txt as an optional dependency - pip install qwen-tts if you cloned before it was there). Note this is a transformers checkpoint plus a separate codec/vocoder, not a GGUF-quantization model - the pack wraps it directly, which is why the install differs from the GGUF loaders.
Common issues
The first-run download is the thing that looks like a hang - a 1.7B model is a real download, and if you're on a flaky connection, pre-fetch with the CLI command above instead. If a dropdown is empty, check models/Qwen3-TTS/ for the folder the README expects. And if you point local_model_path at a folder that's missing speech_tokenizer/, the load fails - that subfolder is non-negotiable.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| repo_id | COMBO | Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice | Models found under models/Qwen3-TTS/. To add another variant, download it with the CLI into models/Qwen3-TTS/<name>/ and re-add this node (see README). |
| source | COMBO | HuggingFace | 2 options: HuggingFace, ModelScope |
| precision | COMBO | bf16 | 3 options: bf16, fp16, fp32 |
| attention | COMBO | auto | 4 options: auto, flash_attention_2, sdpa, eager |
| local_model_pathopt | STRING | Override: an existing local folder containing a full model (must have a speech_tokenizer/ subfolder). Leave blank to use repo_id. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| QWEN_TTS_MODEL | QWEN_TTS_MODEL | — |