ITL Breeze TTS Voice Direction Advanced
Direction Advanced for Long Takes
- model
- reference_audio
- audio
Direction Advanced is ITL Breeze TTS Voice Direction with the sampling settings exposed - and of the six Breeze generate nodes, this is the one where those settings earn their keep. Not because the defaults are bad (they are upstream's, and they're fine), but because this mode has two separate things pulling on the generation: the reference clip holding the voice steady, and the instruction pushing the delivery somewhere new. When those fight, you have more than one place to intervene.
Same inputs as the Normal node - reference_audio, its exact reference_text, instruction, text, seed, unload_after - plus the knobs below.
Where each control actually pulls
cfg_scale (default 4.0) is the guidance dial, and it's already on the Normal Direction node. It decides how hard the model leans on your instruction relative to the reference. Raise it and the direction is honoured more emphatically; raise it too far and the read goes stiff and over-articulated. This is the first thing to try when a line feels like it's ignoring what you asked for.
temperature (default 0.9, range 0.05–2) is the general expressiveness dial on top of that. For emotional dialogue a touch more helps. For a long narration pass you want steadiness, so ease it down toward 0.7.
repetition_penalty (default 1.1, minimum 1.0) is your anti-loop control. Long instructed paragraphs are where this bites: a phrase repeats, or a final syllable stretches out. Nudge toward 1.15–1.2. It's a surgical fix and it won't flatten the performance the way dropping temperature will.
top_k (default 50, 0 disables) and top_p (default 1.0) trim the unlikely end of the sampling distribution - set one, not both. top_p at 0.9 is the gentler lever.
max_new_tokens (default 750, range 50–1500) caps output length at roughly 12.5 codec frames per second of audio, so 750 is about a minute. The budget is shared with the prompt (the runtime is sized max(1024, max_new_tokens + 512)), which is why a long passage under a low cap comes back truncated rather than slow. If a paragraph loses its last clause, raise this before blaming the model.
A tuning order that works
Change cfg_scale first if the delivery is wrong in kind. Then temperature if it's wrong in energy. Then repetition_penalty if it's mechanically broken. Leave top_k/top_p for last, and change them by small increments - 0.9 rather than 0.5. max_new_tokens isn't a taste setting at all: set it once, high enough for your longest line, and forget it.
While the loader has fast_path on, any edit here rebuilds the runtime and re-captures the CUDA graphs, costing a few seconds on the next run. Do your sweep with fast_path off and switch it back on for production.
Install
Part of ComfyUI-IntoTheLatent-Utils. Manager → search ComfyUI-IntoTheLatent-Utils → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Into-The-Latent/ComfyUI-IntoTheLatent-Utils
pip install -r ComfyUI-IntoTheLatent-Utils/requirements.txt
The pack vendors the Breeze model code, so nothing comes from GitHub at runtime, and it declares no torch dependency - your CUDA torch stays as it is. Weights download on first run (~7.2 GB) into models/breeze_tts/Breeze-TTS-2/. NVIDIA GPU only, ~7.7 GiB VRAM, ~14.4 GiB with fast_path.
Two reminders
Nothing here fixes a poor reference_text. Sampling settings shape the decode; a transcript that doesn't match the reference audio corrupts the conditioning, and no amount of top_p rescues that. Transcribe it properly.
And remember the 7.7 GiB: if a video or image model runs later in the same workflow, turn on unload_after or run the audio through ITL Breeze TTS Unload. ComfyUI's model manager cannot evict a model it can't see.
Inputs (13)
| 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. | |
| reference_audio | AUDIO | A few seconds of the voice to imitate (mono is fine; stereo is downmixed). | |
| reference_text | STRING | Exact transcript of reference_audio. Wrong text = wrong voice. ITL Whisper Transcribe can produce it from the clip. | |
| 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. |
| temperature | FLOAT | 0.900.05–2 | — |
| top_k | INT | 500–500 | 0 disables top-k. |
| top_p | FLOAT | 1.000–1 | — |
| repetition_penalty | FLOAT | 1.101–2 | — |
| max_new_tokens | INT | 75050–1500 | Caps output length; ~12.5 codec frames per second of audio. |
| 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 | — |