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

Qwen3-TTS Loader 🚀

The node every Qwen3-TTS workflow starts with (and where the GBs get downloaded)

By wanaigc·Created 7 months ago·Updated 7 months ago· 113
Qwen3-TTS Loader 🚀
    • model_obj
    model_repo
    download_sourceModelScope
    precisionbf16
    attn_modesdpa
    auto_downloadtrue

    If you're staring at this pack and wondering where to start, start here. Every other node in ComfyUI-Qwen3-TTS that actually makes sound - Custom Voice, Voice Clone, Voice Design, the whole dialogue engine - wants a QWEN3_MODEL on its input, and this Loader is the only node that produces one. It's also where the multi-gigabyte downloads happen and where the pack's first gotcha lives, so it pays to understand it before you let it run.

    What it does

    The Loader wraps Alibaba's Qwen3-TTS open-weights models (the same family that's been making the rounds since the January 2026 release: 12Hz tokenizer, ten languages, Apache 2.0). You pick a model repo, it checks whether it's already on disk, downloads it if not, loads it into memory, and hands you a model_obj to wire into a generation node.

    The model_repo dropdown is the important choice, because the Qwen3-TTS line splits into three jobs:

    • ...-Base - the general model. Required for voice cloning and multi-role dialogue.
    • ...-CustomVoice - the preset-speaker model (Vivian, Uncle_Fu, Ryan, and six more built-in voices).
    • ...-VoiceDesign - the natural-language voice design model ("a cute loli voice asking for candy").

    Each comes in 1.7B and 0.6B sizes. On an 8GB card, the 0.6B is the comfortable pick; the 1.7B has been run fine on a 3060 per community reports, but it's tight on 8GB. If the node that follows rejects your model with a "Model Mismatch" error, this is why - you loaded the CustomVoice variant into a clone node that needs Base.

    How it works

    Under the hood it's fairly unglamorous: it checks ComfyUI/models/TTS/Qwen/<repo> for the files, and if they're missing (and auto_download is on) it runs a snapshot_download from either ModelScope or HuggingFace into that folder, then loads with Qwen3TTSModel.from_pretrained. The other knobs matter more than their defaults suggest:

    • download_source - defaults to ModelScope, which is great in China and occasionally slow or throttled elsewhere. If your first download crawls, switch to HuggingFace. It only matters when the model is missing; once it's on disk the setting is ignored.
    • precision - bf16 default, then fp16/fp32. On MPS it silently forces fp16 because fp32 is glacial there.
    • attn_mode - sdpa default. flash_attention_2 only sticks if you're on GPU with a half-precision dtype; sage_attention needs SageAttention installed, otherwise it falls back to sdpa. The README recommends pip install flash-attn --no-build-isolation on NVIDIA cards for the speed bump, but it's genuinely optional - sdpa works fine.

    Output is a single model_obj of type QWEN3_MODEL.

    Installing it

    cd ComfyUI/custom_nodes
    git clone https://github.com/wanaigc/ComfyUI-Qwen3-TTS.git
    cd ComfyUI-Qwen3-TTS
    pip install -r requirements.txt
    

    Or just search "ComfyUI-Qwen3-TTS" in ComfyUI Manager and restart. Either way, requirements.txt pulls in qwen-tts (the core model library), transformers, modelscope, huggingface-hub, soundfile, funasr, and ffmpeg-python. It's a real dependency stack bolted onto your environment, the same structural deal as every audio pack in ComfyUI - the ecosystem essay on this is blunt about dependency conflicts being the default failure mode for the whole audio layer.

    Troubleshooting

    • First run downloads multiple GB. The 1.7B repos are chunky, and the download can look hung on a slow connection. Watch the ComfyUI/models/TTS/Qwen/ folder filling up rather than the console.
    • Out of memory - the README's own advice: use bf16 and, on the dialogue nodes, drop the batch. Stepping from 1.7B to 0.6B is the biggest lever on an 8GB card.
    • Model Mismatch errors - you paired the wrong repo with the wrong generator node. Base for cloning/dialogue, CustomVoice for presets, VoiceDesign for designed voices.
    • Temper expectations on speed - Qwen3-TTS doesn't stream. Community reports put a 100-word paragraph at around 45–55 seconds on a 3090 including generation. It's "wait a bit," not "watch it talk."
    CategoryQwen3-TTS

    Inputs (5)

    NameTypeDefaultDescription
    model_repoCOMBO5 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
    download_sourceCOMBOModelScope2 options: ModelScope, HuggingFace
    precisionCOMBObf163 options: bf16, fp16, fp32
    attn_modeCOMBOsdpa4 options: flash_attention_2, sage_attention, sdpa, eager
    auto_downloadBOOLEANtrue

    Outputs (1)

    NameTypeDescription
    model_objQWEN3_MODEL