(Down)load Qwen TTS Models
The Qwen TTS model grabber that makes the rest of the pack work
- tokenizer
- base_model
- voice_design_model
- custom_voice_model
This is the node you run first when you want any of the Qwen3 TTS nodes in Vantage-Nodes to do anything at all. It doesn't make sound. It grabs the four Qwen3-TTS pieces - the tokenizer, the base speech model, the voice-design model, and the custom-voice (clone) model - off Hugging Face, drops them into ComfyUI/models/qwen-tts/, and hands you lazy handles you wire into the nodes that actually synthesize audio.
The whole Qwen3 TTS stack is a 1.7B open-weight model family from Alibaba, and it landed in late 2025 to a lot of "finally, a local TTS that doesn't sound like a robot" energy. The catch for a beginner: it's four separate repositories, they're big, and they're not on CivitAI or any of the model folders you're used to. This node wraps that chore so you never touch a browser.
What it outputs
The four outputs are the four ingredients:
- tokenizer -
QWEN_TTS_TOKENIZER, goes into the voice design node. - base_model - the plain text-to-speech model, goes into the multi-speaker node.
- voice_design_model - the model that turns natural-language voice instructions into audio, goes into the voice design node.
- custom_voice_model - the voice-cloning model, goes into the voice clone prompt node.
Each is a "lazy" object. It only actually loads weights into memory when a downstream node calls .load(), so you can wire all four outputs around your graph without eating VRAM until the moment of generation.
The three settings that matter
Only three inputs exist, and two of them you can safely leave alone:
- device -
autopicks CUDA if it exists, then MPS, then CPU. Setcudato force it. - attention -
autotries flash_attn if installed, falls back to sdpa on CUDA or eager on CPU.sage_attnis patched in at runtime and is the fastest path on recent GPUs if you have the dependency;sdpais the boring reliable choice. - dtype -
bf16orfp32. The downloader also sets this as the base dtype for everything downstream. Keepbf16unless you're on a card that doesn't support it (the code refuses bf16 outside CUDA).
First run, this node downloads all four repos and it looks frozen - it's not, it's pulling gigabytes. Let it finish. Second run it checks the local folder, sees it's populated, and returns in a blink.
Install
Qwen TTS is one family inside the bigger Vantage-Nodes pack. Install the pack once and you get all of it:
cd ComfyUI/custom_nodes
git clone https://github.com/vantagewithai/Vantage-Nodes.git
pip install -r requirements.txt
Restart ComfyUI. Easier still: ComfyUI Manager → Custom Nodes Manager → search "Vantage-Nodes" → Install. Fair warning on that requirements.txt - it pulls in the entire pack's needs (gguf, onnxruntime, librosa, soundfile, torchaudio, accelerate…), most of which exists for other node families, so this install is heavier than a utility pack has any right to be. If you only want TTS and pip chokes on sox, note that sox is also a system binary on Linux, not just a pip package.
Common issues
- Downloads never seem to finish - it's four multi-GB repos on first run over the
huggingface_hubsnapshot downloader. Check the console log for the progress lines before assuming a hang. - bf16 errors on CPU/MPS - that's by design. Switch dtype to
fp32or run on CUDA. - "CUDA requested but not available" - you picked
cudaon a machine without it.autoexists so you don't have to care.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| device | COMBO | auto | 4 options: auto, cuda, mps, cpu |
| attention | COMBO | auto | 5 options: auto, sage_attn, flash_attn, sdpa, eager |
| dtype | COMBO | bf16 | 2 options: bf16, fp32 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| tokenizer | QWEN_TTS_TOKENIZER | — |
| base_model | QWEN_TTS_MODEL | — |
| voice_design_model | QWEN_TTS_MODEL | — |
| custom_voice_model | QWEN_TTS_MODEL | — |