Qwen3 TTS Batch Generate
Paste a script, get a stack of audio files — one queue for the whole page
- model
- clone_prompt
- AUDIO
Qwen3 TTS Batch Generate is the node you graduate to when typing lines one at a time into Custom Voice starts feeling like a punishment. Paste a whole list of texts into one field, hit queue once, and get back one AUDIO per line. It's the "generate my entire script in one go" node, and it's the only node in this pack that outputs a list of audio rather than a single clip.
What it takes in
- text_list - your texts, one per line (multiline). The default "Line 1\nLine 2\nLine 3" shows the shape.
- separator - how the list is split. Defaults to
\n(newline), so line-per-text is the natural usage. Set it to something else if your text contains newlines and you want to split on, say, a;instead. - seed - one seed for the whole batch.
The optional inputs decide which generation mode it runs in:
- speaker (default
Vivian) - the preset voice for the custom-voice path. Note this is a free-text string here, not the dropdown you get on the Custom Voice node - spell the speaker name exactly right, or it won't resolve. - language (default
Auto) - also a string, not an enum. Same spelling discipline. - clone_prompt - wire a
QWEN_CLONE_PROMPTin and the whole batch switches to voice-clone mode using that pre-built voice instead of a preset speaker.
Plus the standard sampling sliders. Output is an AUDIO list - one per input line, in order - which you can feed to Preview Audio (with a list-handling node or by wiring each) or Save Audio.
Which mode are you in?
The node's logic is simple: if clone_prompt is connected, it runs generate_voice_clone over the whole list in that voice. If not, it runs generate_custom_voice with speaker for every line. Pick your lane deliberately. The clone path is the efficient one for a long script in one voice (combined with Create Clone Prompt, you build the embedding once and batch the rest); the custom-voice path is the quick preset-voice batch.
The honest caveats
Batch nodes are great until they're not, and this one has two traps:
- One voice, one batch. There's no per-line speaker or emotion control - it's all one speaker, one language, one set of sampling params for the whole list. If lines need different voices, you need multiple Batch nodes (or one per voice).
- Text-list gotchas. Because
separatordefaults to\n, empty lines are stripped, but if your text legitimately contains newlines you'll silently split mid-thought. Also, sincespeakerandlanguageare plain strings, a typo fails at generation time, not in the dropdown. Double-check names.
On the plus side, the batch runs in a single model session, so you're not paying model reloads between lines - which is exactly what makes it faster than firing off N separate Custom Voice nodes. The console stat block (RTF, samples/sec, VRAM) also shows the whole batch's numbers at once, which is the closest thing to a benchmark this pack gives you.
Install and run
Standard pack install - ComfyUI Manager search "Qwen3-TTS", or git clone https://github.com/PGCRT/ComfyUI-QWEN3_TTS into custom_nodes/, pip install -r requirements.txt, restart. Load the CustomVoice model for the speaker path or the Base model for the clone-prompt path - the model has to match the mode you pick. Then: type your script, pick a speaker (or wire a clone prompt), queue once, and go make coffee while the whole page generates.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | QWEN_TTS_MODEL | — | |
| text_list | STRING | Line 1 Line 2 Line 3 | — |
| separator | STRING | — | |
| seed | INT | 00–18446744073709550000 | — |
| speakeropt | STRING | Vivian | — |
| languageopt | STRING | Auto | — |
| clone_promptopt | QWEN_CLONE_PROMPT | — | |
| max_new_tokensopt | INT | 20481–8192 | — |
| temperatureopt | FLOAT | 1.000.1–2 | — |
| top_popt | FLOAT | 0.800.1–1 | — |
| repetition_penaltyopt | FLOAT | 1.101–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |