Nodes/Qwen3-TTS - Voice Synthesis & Cloning/🎨 Qwen3-TTS VoiceDesign
ComfyUI Node

🎨 Qwen3-TTS VoiceDesign

Invent a voice from a sentence

By flybirdxxΒ·Created 7 months agoΒ·Updated 3 months agoΒ· 1,874
🎨 Qwen3-TTS VoiceDesign
    • audio
    β—„textHello worldβ–Ί
    β—„instructβ–Ί
    β—„model_choice1.7Bβ–Ί
    β—„deviceautoβ–Ί
    β—„precisionbf16β–Ί
    β—„languageAutoβ–Ί
    β—„seed0β–Ί
    β—„max_new_tokens2048β–Ί
    β—„top_p0.80β–Ί
    β—„top_k20β–Ί
    β—„temperature1.0β–Ί
    β—„repetition_penalty1.05β–Ί
    β—„attentionautoβ–Ί
    β—„unload_model_after_generatefalseβ–Ί

    Voice cloning needs a reference voice to copy. VoiceDesign skips that entirely: you describe a voice in words - "a gentle female voice with a high pitch," "a gruff elderly man, slightly hoarse" - and the model invents it. No reference clip, no transcript, no voice you've ever heard before. It's the pack's answer to the "what if there were a voice for this character" problem, and it's the most fun node in the whole pack precisely because you're not cloning anyone; you're conjuring.

    How it works

    The two required text inputs are text - the line to speak - and instruct, the description of the voice you want. Both are mandatory: the node raises an error if instruct is empty, because there's nothing to generate from otherwise. The model runs on the VoiceDesign variant, and one restriction is baked into the source: VoiceDesign only supports the 1.7B model. Pick 0.6B and it errors out - that's by design, not a bug, so don't fight it.

    The rest of the inputs are the pack's standard toolkit: model_choice, device, precision, language (Auto plus ten), and the generation knobs seed, max_new_tokens, top_p/top_k/temperature/repetition_penalty, attention, unload_model_after_generate. Output is a single audio.

    Writing good instructions

    The instruct field does a lot of work, and the style of prompt that works here is concrete and adjective-heavy: describe timbre ("deep", "breathy", "nasal"), age or gender if it matters, delivery ("slow and deliberate", "cheerful", "monotone"), and any persona flavor. Short, clear English sentences tend to land better than elaborate prose - the model parses descriptions, it doesn't write fanfic. If you're planning a character with a designed voice, you can pair VoiceDesign with the pack's persistence loop: wire its output into VoiceClonePrompt to extract features from the invented voice, SaveVoice it, and reuse it in dialogue later.

    The honest caveat from the community: VoiceDesign can be inconsistent - people have reported it ignoring styles and defaulting to a flat American accent. Treat the first output as a rough sketch; nudge the instruction and re-run. That's also why the pack's own advice leans on cloning for anything that must be right.

    Install

    VoiceDesign is part of flybirdxx/ComfyUI-Qwen-TTS ("Qwen3-TTS - Voice Synthesis & Cloning"). ComfyUI Manager: search "Qwen3-TTS". Or:

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

    Restart ComfyUI. Pin the pack's one critical dependency - transformers 5.0+ breaks it:

    pip install "transformers>=4.57.0,<5.0.0"   # e.g. transformers==4.57.3
    

    First run downloads the VoiceDesign model into models/qwen-tts/ (multi-GB, and it looks frozen while it pulls). Pre-fetch with python download_models.py if you want it over with.

    Common issues

    An error saying "Text and instruction description are required" means instruct is blank - fill it in. "VoiceDesign only supports 1.7B" means you flipped the model choice to 0.6B - flip it back. And if the voice comes out generic or ignores your style description, that's the model being temperamental rather than broken: reword the instruction, keep it concrete, and re-run. One design note: since it's 1.7B only, this is the heaviest node in the pack per run - enable unload_model_after_generate on low VRAM.

    CategoryQwen3-TTS

    Inputs (14)

    NameTypeDefaultDescription
    textSTRINGHello worldβ€”
    instructSTRINGβ€”
    model_choiceCOMBO1.7B2 options: 0.6B, 1.7B
    deviceCOMBOauto5 options: auto, cuda, xpu, mps, cpu
    precisionCOMBObf162 options: bf16, fp32
    languageCOMBOAuto11 options: Auto, Chinese, English, Japanese, Korean, French, +5
    seedoptINT00–18446744073709550000β€”
    max_new_tokensoptINT2048512–4096β€”
    top_poptFLOAT0.800–1Nucleus sampling probability
    top_koptINT200–100Top-k sampling parameter
    temperatureoptFLOAT1.00.1–2Sampling temperature
    repetition_penaltyoptFLOAT1.051–2Penalty for repetition
    attentionoptCOMBOautoAttention implementation
    unload_model_after_generateoptBOOLEANfalseUnload model from memory after generation

    Outputs (1)

    NameTypeDescription
    audioAUDIOβ€”