Nodes/ComfyUI-GGUF-Loader/Qwen3-TTS Custom Voice ⚡
ComfyUI Node

Qwen3-TTS Custom Voice ⚡

Nine built-in named speakers, no cloning setup, fully local

By ChrisColeTech·Created about a month ago·Updated 3 days ago· 10
Qwen3-TTS Custom Voice ⚡
  • qwen_tts_model
  • AUDIO
textHello world
speakerDylan
languageAuto
seed0
max_new_tokens2048
top_p0.80
top_k20
temperature1.00
repetition_penalty1.05
instruct
custom_speaker_name
unload_model_after_generatefalse

Text-to-speech is one of those jobs where the paid APIs (ElevenLabs and friends) still own "reliable" - but the open stack keeps closing the gap, and Qwen3-TTS's CustomVoice models are a big reason. This node is the generate step: feed it a QWEN_TTS_MODEL from Qwen3-TTS Models Loader, type some text, pick a speaker, and out comes speech as standard comfy AUDIO. No cloning setup, no API key, nothing leaves your machine.

The speakers

The speaker dropdown lists the nine built-in named voices baked into the CustomVoice checkpoint: Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, Aiden, Ono_Anna, Sohee. They cover a genuinely useful range of gender, age and tone - and they're built in, so there's zero reference-audio setup. If you've loaded a fine-tuned checkpoint with its own speaker names, the optional custom_speaker_name input overrides the dropdown with any string. That's the escape hatch for "my checkpoint has speakers the preset list doesn't know about."

The inputs that matter

  • text - what to say.
  • language - Auto (default) plus ten explicit languages. "Auto" does what it says; for reliable pronunciation in a specific language, set it.
  • seed - reproducibility.
  • max_new_tokens (2048), top_p (0.8), top_k (20), temperature (1.0), repetition_penalty (1.05) - the usual sampling controls. The defaults are sane; temperature is the one worth nudging if output sounds robotic (raise it a little).
  • instruct - a voice-design instruction, e.g. "speak softly and slowly." Here's the catch the node flags for you: it's real model-native conditioning on the 1.7B checkpoint, but the 0.6B checkpoint silently drops it upstream. This pack logs a warning instead of reproducing that silence - so on 0.6B, don't expect instruct to do anything, and you'll be told why in the console.
  • unload_model_after_generate - off by default. Leave it off if you're generating several clips (keeps the model resident); flip it on in a memory-tight multi-model workflow.

One output

AUDIO - standard comfy audio, into Save Audio, a video mux, or anywhere an AUDIO input lives. In the pack's LTX-2.3 talking-head workflow, this is exactly what you use for the reference voice / spoken lines.

Installing it

Part of the ComfyUI-GGUF-Loader pack under 🤖 CCTech/Qwen TTS. ComfyUI Manager → search "ComfyUI-GGUF-Loader" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
cd ComfyUI-GGUF-Loader
pip install -r requirements.txt

Needs the qwen-tts pip package and a model loaded via Qwen3-TTS Models Loader (first run downloads it).

Common issues

The biggest one is the 0.6B vs 1.7B difference: the small checkpoint ignores instruct, drops some prosody nuance, and generally sounds plainer. If your output lacks the expressiveness you expected, check which variant the loader is serving. An unknown speaker name raises an error that lists every valid one - that's a feature, read the message. And if output sounds rushed or stuttery, temperature up and repetition_penalty slightly higher are the two dials to try before touching anything else.

Category🤖 CCTech/Qwen TTS

Inputs (13)

NameTypeDefaultDescription
qwen_tts_modelQWEN_TTS_MODEL
textSTRINGHello world
speakerCOMBODylan9 options: Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, +3
languageCOMBOAuto11 options: Auto, Chinese, English, Japanese, Korean, German, +5
seedINT00–18446744073709550000
max_new_tokensINT20481–32768
top_pFLOAT0.800–1
top_kINT200–500
temperatureFLOAT1.000–2
repetition_penaltyFLOAT1.050.5–5
instructoptSTRINGVoice-design instruction. Ignored by 0.6B CustomVoice checkpoints (upstream behavior).
custom_speaker_nameoptSTRINGOverrides speaker with any string - for a fine-tuned checkpoint's own speaker names.
unload_model_after_generateoptBOOLEANfalse

Outputs (1)

NameTypeDescription
AUDIOAUDIO