ITL Breeze TTS Voice Design
Invent a Voice With One Sentence (Breeze TTS Voice Design)
- model
- audio
Voice cloning needs a clip. Design doesn't. You type a description - "a warm, low male voice, slow" - and the model speaks your text in a voice that matches. No reference audio anywhere in the node.
That makes it the node you reach for when you don't have the voice yet. Casting a character in a game mockup, narrating a video with a voice that doesn't belong to anyone real, testing five different deliveries of the same line before you commit one to a longer pipeline. It's also the cheapest way to audition Breeze at all, since there's nothing to record, trim or transcribe first.
What you wire up
Three inputs do the work, plus two knobs.
text is what gets spoken, and it's bilingual (English and Chinese; the language is detected from the text). The inline cues work here too - (laugh), (sigh), (clears throat), or [笑] / [叹气] in Chinese - and for designed voices they're a fast way to hear whether a voice has the range you imagined.
instruction is the description, and it's where all the craft is. Say what you'd say to a voice actor: age, gender, timbre, pace, accent, mood. "A warm, low male voice, slow" beats "good voice." Short instructions work; vague adjectives do less. If you've written character descriptions for an LLM, this is the same skill.
cfg_scale (default 4.0, range 0.1–10) is classifier-free guidance, and unlike Voice Clone this node has it, because the design template carries a negative branch. Upstream suggests around 4 for design and direction work, and the tooltip says the same. Treat it like CFG anywhere else: turning it up follows the instruction harder and gets brittle, turning it down gets loose and generic. 4 is a sane start; you rarely need to leave it.
Then seed (default 42) and unload_after. Output: one audio.
The seed is the voice
Here's the mental model that makes this node genuinely useful: with no reference audio, the voice is defined by (instruction, seed). Same instruction and same seed, same voice. Which means the seed isn't just a reroll button - it's the identity of the character. Pick a pair, write it down, and reuse it across every line of dialogue that character speaks. Change the instruction and you've recast the part.
That's how you build a consistent speaker without ever recording anyone. Keep the seed fixed, keep the instruction fixed, and vary only text. And it's why control_after_generate next to the seed deserves a second's attention: leave it on random and every run gives you a subtly different person, which is the opposite of what you want here. Set it to fixed once you've found a voice you like.
How it works
The node builds a request containing only the keys this mode uses - text, speaker, and your instruction - so the design template is chosen deliberately rather than inferred. The model code itself is vendored inside the pack, so nothing is fetched from GitHub at load time.
Install
Manager → search ComfyUI-IntoTheLatent-Utils → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Into-The-Latent/ComfyUI-IntoTheLatent-Utils
pip install -r ComfyUI-IntoTheLatent-Utils/requirements.txt
First run downloads ~7.2 GB of Breeze weights into models/breeze_tts/Breeze-TTS-2/. This pack ships no torch constraint on purpose - your existing CUDA build stays put - but Breeze itself wants torch >= 2.7 and an NVIDIA GPU with ~7.7 GiB free. No CPU path.
Gotchas
An empty instruction errors rather than silently producing a generic voice. This is one of the few nodes in ComfyUI that tells you exactly which input is missing.
If you need to sound like a specific person, you're on the wrong node. Design invents; Voice Clone or Voice Direction matches. Design is for casting, not imitating.
The 7.7 GiB stays resident. Same story as the rest of the Breeze family - if an image or video model runs later in the same workflow, flip unload_after on or route the audio through ITL Breeze TTS Unload. ComfyUI's model manager can't evict this model for you.
Weights are research and non-commercial (BreezeBlue Research and Non-Commercial License), which is worth checking before you ship anything built on it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | BREEZE_TTS | From ITL Breeze TTS Loader. | |
| text | STRING | What to say. Inline vocal events: (laugh), (sigh), (clears throat) in English; [笑], [叹气] in Chinese. The model is bilingual (English / Chinese) and detects the language from the text. | |
| instruction | STRING | Voice description (Design) or delivery direction (Direction): tone, pace, emotion. | |
| seed | INT | 420–4294967295 | — |
| cfg_scale | FLOAT | 4.00.1–10 | Classifier-free guidance. Upstream suggests ~4 for design / direction. |
| unload_after | BOOLEAN | false | Free the Breeze model (~7.7 GiB VRAM) after this node runs. Turn on when an image/video model runs later in the same workflow; the next Breeze node reloads the weights. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |