Nodes/ComfyUI-Qwen3-TTS-Fast/Qwen3 TTS Fast Loader
ComfyUI Node

Qwen3 TTS Fast Loader

The Qwen3 TTS Loader node that actually earns the 'Fast'

By YildirimMc·Created about 23 hours ago·Updated about 23 hours ago· 1
Qwen3 TTS Fast Loader
    • model
    model_name
    device
    dtype
    attention
    max_seq_len2048
    warmuptrue

    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:

    • device cuda: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_2 only 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. If max_new_tokens exceeds max_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.

    CategoryQwen3_TTS_Fast

    Inputs (6)

    NameTypeDefaultDescription
    model_nameCOMBO5 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
    deviceCOMBO2 options: cuda:0, cuda:1
    dtypeCOMBO2 options: bfloat16, float16
    attentionCOMBO2 options: sdpa, flash_attention_2
    max_seq_lenINT2048512–8192
    warmupoptBOOLEANtrue

    Outputs (1)

    NameTypeDescription
    modelQWEN3TTS_FAST