Nodes/ComfyUI-IntoTheLatent-Utils/ITL Breeze TTS Voice Direction Advanced
ComfyUI Node

ITL Breeze TTS Voice Direction Advanced

Direction Advanced for Long Takes

By Into-The-Latent·Created about a month ago·Updated about 19 hours ago· 2
ITL Breeze TTS Voice Direction Advanced
  • model
  • reference_audio
  • audio
text
reference_text
instruction
seed42
cfg_scale4.0
temperature0.90
top_k50
top_p1.00
repetition_penalty1.10
max_new_tokens750
unload_afterfalse

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.

CategoryInto The Latent/audio

Inputs (13)

NameTypeDefaultDescription
modelBREEZE_TTSFrom ITL Breeze TTS Loader.
textSTRINGWhat 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_audioAUDIOA few seconds of the voice to imitate (mono is fine; stereo is downmixed).
reference_textSTRINGExact transcript of reference_audio. Wrong text = wrong voice. ITL Whisper Transcribe can produce it from the clip.
instructionSTRINGVoice description (Design) or delivery direction (Direction): tone, pace, emotion.
seedINT420–4294967295
cfg_scaleFLOAT4.00.1–10Classifier-free guidance. Upstream suggests ~4 for design / direction.
temperatureFLOAT0.900.05–2
top_kINT500–5000 disables top-k.
top_pFLOAT1.000–1
repetition_penaltyFLOAT1.101–2
max_new_tokensINT75050–1500Caps output length; ~12.5 codec frames per second of audio.
unload_afterBOOLEANfalseFree 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)

NameTypeDescription
audioAUDIO