Nodes/ComfyUI-FL-Qwen3TTS/FL Qwen3 TTS Custom Voice
ComfyUI Node

FL Qwen3 TTS Custom Voice

Nine built-in speakers and a style knob — the fastest way to speech in this pack

By filliptm·Created 7 months ago·Updated 2 days ago· 149
FL Qwen3 TTS Custom Voice
  • model
  • audio
textHello, this is a test of the Qwen3 text to speech system.
speakerRyan
languageEnglish
top_k50
top_p1.00
temperature0.90
repetition_penalty1.05
max_new_tokens2048
seed-1
instruct

If you want a decent voice right now, without hunting down reference audio or writing a voice description, this is the node. It generates speech from Qwen3-TTS's nine predefined speakers - Ryan and Aiden (English), Vivian, Serena, Uncle_Fu, Dylan, Eric (Chinese), Ono_Anna (Japanese), Sohee (Korean) - in any of the ten supported languages, and it throws in an optional instruct field so you can steer how the thing talks. No cloning, no training, no reference clip. Just text in, audio out.

It's the node you reach for when you're prototyping narration, knocking out dialogue for a video, or you need a voice and don't care that it's not yours. On the spectrum the ComfyUI TTS world draws, this is the "generic voice is fine, speed matters" corner - the Qwen3 equivalent of Kokoro's role, but with a much bigger language net.

How it works

The node needs a model from the Model Loader - specifically the CustomVoice variant (Qwen3-TTS-12Hz-1.7B-CustomVoice or the 0.6B version). Connect the wrong model type and it refuses with an error that spells out the fix, which is the pack's signature move and a relief after a day of debugging silent failures.

Under the hood it calls the model's generate_custom_voice with a speaker name, the language, and your optional instruction, then decodes the generated tokens back to a waveform and hands you a standard AUDIO output at 24kHz. That output plugs straight into a preview node, a save node, or anything else in your graph that accepts audio.

The inputs you'll actually touch

  • speaker - the name of one of the nine voices. It's a plain text field, not a dropdown, so type it exactly: Ryan, Aiden, Ono_Anna, Sohee, and so on. Each speaker has a home language; Ryan and Aiden are the English defaults.
  • language - ten choices (Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian). Match it to the text you're feeding in.
  • instruct - the fun one. It's a style instruction like "speaking quickly and excitedly" or "whispering, hesitant." This is what turns a flat reading into something with a mood. Optional, but it's half the reason to use the CustomVoice model instead of a plain clone.
  • text - what the voice says. Multiline, so paragraphs are fine.
  • The sampling block - top_k, top_p, temperature, repetition_penalty, max_new_tokens, seed. Leave them at defaults unless you're chasing a specific artifact. seed is -1 (random) by default; set it to a number to make the same text reproducible.

Output: one audio (AUDIO) connection.

Installing

ComfyUI Manager, search "FL Qwen3 TTS". Or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-Qwen3TTS.git
cd ComfyUI-FL-Qwen3TTS
pip install -r requirements.txt

Restart, then let the Model Loader pull the CustomVoice model on first use (it lands in ComfyUI/models/tts/Qwen3TTS/, a few GB).

Common issues

Most people hit exactly two things. One: the wrong model variant wired in - fix it in the loader. Two: a misspelled or unknown speaker name, which produces either an error or a voice that ignores your style instruction; the README's speaker table is the ground truth for valid names. And remember the instruct field is optional and empty by default - if your output sounds flat, that's why. Don't expect real-time speed either; like the rest of this pack it's around a few times real-time, so short test clips first.

CategoryFL/Qwen3TTS

Inputs (11)

NameTypeDefaultDescription
modelQWEN3TTS_MODEL
textSTRINGHello, this is a test of the Qwen3 text to speech system.
speakerSTRINGRyan
languageCOMBOEnglish10 options: Chinese, English, Japanese, Korean, German, French, +4
top_kINT501–200
top_pFLOAT1.000.1–1
temperatureFLOAT0.900.1–2
repetition_penaltyFLOAT1.051–2
max_new_tokensINT2048128–8192
seedINT-1-1–18446744073709550000
instructoptSTRING

Outputs (1)

NameTypeDescription
audioAUDIO