FL Qwen3 TTS Custom Voice
Nine built-in speakers and a style knob — the fastest way to speech in this pack
- model
- audio
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.seedis-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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | QWEN3TTS_MODEL | — | |
| text | STRING | Hello, this is a test of the Qwen3 text to speech system. | — |
| speaker | STRING | Ryan | — |
| language | COMBO | English | 10 options: Chinese, English, Japanese, Korean, German, French, +4 |
| top_k | INT | 501–200 | — |
| top_p | FLOAT | 1.000.1–1 | — |
| temperature | FLOAT | 0.900.1–2 | — |
| repetition_penalty | FLOAT | 1.051–2 | — |
| max_new_tokens | INT | 2048128–8192 | — |
| seed | INT | -1-1–18446744073709550000 | — |
| instructopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |