Nodes/Vantage-Nodes/Qwen TTS Voice Design Node
ComfyUI Node

Qwen TTS Voice Design Node

Design a voice with a sentence instead of hunting for a sample

By vantagewithai·Created 8 months ago·Updated about a month ago· 25
Qwen TTS Voice Design Node
  • model
  • tokenizer
  • AUDIO
text
instruct
languageAuto
deviceinherit
attentioninherit
seed0
max_new_tokens2048
top_p0.80
top_k20
temperature1.00
repetition_penalty1.05
unload_model_after_generatefalse

Most TTS makes you either pick from a menu of preset voices or find a clean sample to clone. This node does the third thing: you describe the voice in plain English - "a warm, slightly gravelly audiobook narrator, mid-pace, subtle British accent" - and Qwen3's VoiceDesign model invents it. That's the feature that got the Qwen3-TTS release thread attention in the first place: fine control over timbre, prosody and emotion from natural language, no reference clip at all.

It's one of the more fun nodes in the pack, and also the one where "describe what you want" genuinely works instead of being a gimmick. The tradeoff is that it's a big model doing heavy lifting, so it's the slowest and most VRAM-hungry TTS node here.

What it needs

  • model - the voice_design_model output from QwenTTSModelDownloader. This is not the same model as the clone one; they're separate weights.
  • tokenizer - the tokenizer output from the same downloader.
  • text - what the voice actually says. Required.
  • instruct - the voice/style instruction. Required input, but it's fine to pass empty text if you want the model to just pick a default voice. The more concrete you are ("breathy, slow, conspiratorial"), the better it follows.
  • language - Auto plus ten languages: Chinese, English, Japanese, Korean, French, German, Spanish, Portuguese, Russian, Italian.

The sampling controls are the familiar LLM dials - temperature (1.0), top_p (0.8), top_k (20), repetition_penalty (1.05), max_new_tokens (2048), seed (0). For expressive reads, people often nudge temperature up and repetition_penalty a touch higher; if the voice keeps repeating or flattening, that penalty is the first knob to turn. All the RNGs (torch, numpy, CUDA) get seeded from the single seed input, so identical inputs reproduce.

What comes out

One output: a standard ComfyUI AUDIO object (waveform + sample rate). Save it with any audio saver you like - VHS or the pack's own save-audio node - or preview it. There's no text-to-audio for multiple lines here; that's the Multi Speaker node's job. This is a single read.

Install

Part of the Vantage-Nodes pack:

cd ComfyUI/custom_nodes
git clone https://github.com/vantagewithai/Vantage-Nodes.git
pip install -r requirements.txt

or ComfyUI Manager → search "Vantage-Nodes" → Install → restart. Download the models first with QwenTTSModelDownloader (several GB on first run; the voice-design repo is the big one). If you only ever use the clone or design path, note that you don't strictly need the other models downloaded - the downloader grabs all four at once though, so there's no way to be picky without downloading manually.

Common issues

  • CUDA out of memory - the code handles it gracefully: it unloads the model, empties the cache, and suggests the fixes in the error message. They're the right fixes - lower max_new_tokens, switch attention to sdpa, make sure you're actually on bf16, close other GPU apps. VoiceDesign is the heaviest TTS node here, so this is the one you're most likely to hit it on.
  • Voice ignores your instruction - the instruction is text fed through the same pipeline as the content, so very long or very abstract instructions dilute. Keep it short and concrete.
  • bf16 refusal on CPU/MPS - bf16 only runs on CUDA. On Apple silicon or CPU-only boxes, re-run the downloader with dtype = fp32.
  • Slow generation - expected. 1.7B + sampling over many tokens on a consumer card is minutes, not seconds. Set unload_model_after_generate on to get your VRAM back when it's done.
CategoryVantage/Audio/Qwen3 TTS

Inputs (14)

NameTypeDefaultDescription
modelQWEN_TTS_MODEL
tokenizerQWEN_TTS_TOKENIZER
textSTRING
instructSTRING
languageCOMBOAuto11 options: Auto, Chinese, English, Japanese, Korean, French, +5
deviceCOMBOinherit5 options: inherit, auto, cuda, mps, cpu
attentionCOMBOinherit6 options: inherit, auto, sage_attn, flash_attn, sdpa, eager
seedoptINT0
max_new_tokensoptINT2048
top_poptFLOAT0.80
top_koptINT20
temperatureoptFLOAT1.00
repetition_penaltyoptFLOAT1.05
unload_model_after_generateoptBOOLEANfalseUnload model from memory after generation

Outputs (1)

NameTypeDescription
AUDIOAUDIO