Qwen3 TTS Fast Loader
The Qwen3 TTS Loader node that actually earns the 'Fast'
- model
Qwen3-TTS was already one of the best open text-to-speech models around - Alibaba's 1.7B talker, Apache-2.0 licensed, genuinely multilingual, and it clones voices and "designs" voices from a written description like almost nothing else local. The problem was speed. The Python-side decode dispatches roughly 500 small GPU kernels per token, so a 4090 sat bored waiting on Python. This node fixes that by leaning on faster-qwen3-tts (Andres Marafioti, MIT): it captures the whole decode step - 28-layer talker plus the 5-layer code predictor - into a replayed CUDA graph with a static KV cache. Reported gains are ~5.6x on a 4090, up to ~7-9x on H100s and Windows 4060s. That is the entire point of this pack, and this Loader is where it happens.
It works like a checkpoint loader: pick a model, and everything downstream gets a model handle you wire into the generate nodes. The console prints how long graph capture took, and every generation prints its real-time factor (Nx Real-Time) plus VRAM before/after, which is a nice habit to actually read.
The inputs that matter
model_name is the one you'll set constantly, and it's really five models doing three jobs:
- CustomVoice (0.6B or 1.7B) - the nine built-in speakers used by Custom Voice / Batch Generate.
- 1.7B-VoiceDesign - voice-from-description, the one the Voice Design node needs.
- Base (0.6B or 1.7B) - zero-shot voice cloning from a reference clip.
So pick the model that matches the generate node you're wiring up; the 1.7B Base is the one most people end up living in. The 0.6B variants are the "my GPU is older / I'm testing" option - decent quality, much lighter.
The rest mostly have sane defaults, and you should mostly leave them alone:
devicecuda:0 or cuda:1 if you have a second GPU.dtype- bfloat16 is the default vibe; float16 is there if you need it.attention- leave it on sdpa.flash_attention_2only works if you've actually built flash-attn into your torch, and most people haven't.max_seq_len- sizes the static KV cache (512-8192, default 2048). This one you'll touch. Longer text needs more room, and reference audio in in-context cloning counts against the same budget. Ifmax_new_tokensexceedsmax_seq_len - 256, the console clamps it with a warning instead of silently failing.warmup- keep it on. That's the graph-capture pass that buys the speed; switching it off means no captured graphs and you've thrown away the pack's reason to exist.
How to install it
ComfyUI Manager → search "Qwen3-TTS" → install → restart. That's genuinely it - the manager handles the Python deps (qwen-tts, soundfile, numpy). Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/YildirimMC/ComfyUI-Qwen3-TTS-Fast
pip install -r ComfyUI-Qwen3-TTS-Fast/requirements.txt
Needs an NVIDIA GPU and PyTorch 2.5.1+. Models auto-download into ComfyUI/models/TTS/ on first load - no manual model fetching. The faster-qwen3-tts engine is bundled in vendor/, deliberately, because its metadata declares transformers>=5.15 while the code only needs one symbol from it - installing it normally would try to upgrade your whole ComfyUI transformers install to 5.x and break half your other nodes. That transformer-version conflict is the classic TTS-in-ComfyUI failure mode, and this pack sidesteps it. If you have your own copy pip-installed it takes precedence; the console tells you which is in use.
Gotchas
First run of any model is slow twice over: the download, then graph capture (it prints how many seconds). The output is not bit-identical to other Qwen3-TTS wrappers - the static-cache path uses different SDPA kernels and the code predictor's sampling is frozen at capture time, so temperature/top_p only steer the talker. Some people report a subtle quality tradeoff for the speed; the pack's claim is "without quality loss," and for most narration you won't hear a difference.
The model stays resident (cached by loader settings) until ComfyUI restarts or you run the Fast Unload node - there's no CPU offload, because captured graphs hold fixed GPU buffers. See that node's page when you're sharing VRAM with a video model.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 5 options: Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice, Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign, Qwen/Qwen3-TTS-12Hz-1.7B-Base, Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice, Qwen/Qwen3-TTS-12Hz-0.6B-Base | |
| device | COMBO | 2 options: cuda:0, cuda:1 | |
| dtype | COMBO | 2 options: bfloat16, float16 | |
| attention | COMBO | 2 options: sdpa, flash_attention_2 | |
| max_seq_len | INT | 2048512–8192 | — |
| warmupopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | QWEN3TTS_FAST | — |