ITL Breeze TTS Voice Clone Advanced
Temperature, Top-p and the Rest
- model
- reference_audio
- audio
This is ITL Breeze TTS Voice Clone plus five sampling knobs. Out of the box it behaves identically - the Advanced defaults are literally the Normal node's values in the engine, so switching to this node changes nothing until you touch something. It exists for the cases where the take is almost right and you want to push on it.
Everything about the clone workflow is unchanged: reference audio, its exact transcript, the line to speak, seed, unload_after, and one audio output. What's new is below.
The five knobs
temperature (default 0.9, range 0.05–2) is how much randomness goes into picking the next audio token. Lower it toward 0.6–0.7 when a read feels unstable or a word keeps coming out wrong - you get flatter, more repeatable delivery. Raise it and you get more expressiveness along with more chance of a weird artifact. This is the knob you'll actually use.
top_k (default 50, 0 disables it) restricts sampling to the 50 most likely tokens. top_p (default 1.0) does the same job by cumulative probability instead of a count. In practice you pick one; nudging top_p to something like 0.9 while leaving top_k alone is the gentler version of lowering temperature, because it trims the unlikely tail without flattening the middle.
repetition_penalty (default 1.1, minimum 1.0) penalizes tokens the model has already produced. If you're getting a stutter, a doubled syllable, or an unnaturally long tail on the last word of a sentence, raise this toward 1.15–1.2 before you go anywhere else. Don't confuse it with temperature - this is the targeted fix for looping, and it doesn't cost you expressiveness the way turning the temperature down does.
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. Two things worth knowing: the cap is shared with the prompt, because the runtime is built with a sequence length of max(1024, max_new_tokens + 512) - a long line plus a low cap means the end gets cut off, not slowed down. And if a line of yours is getting clipped mid-sentence, raise this toward 1000–1500 before you suspect anything else.
That's the whole surface. There's still no cfg_scale here, for the same reason as the Normal node: the clone template has no negative branch, so guidance has nothing to do, and the engine rejects any value other than 1.0.
The one interaction that catches people
Changing any of these rebuilds the runtime, and if the loader has fast_path enabled, that means re-capturing the CUDA graphs - a few seconds of extra wait on the first generation after a tweak. It's not broken, it's the graph warm-up. If you're sweeping settings to find a good take, it's faster to do that pass with fast_path off and turn it back on once you're happy.
When to reach for this node
Honestly? Less than the file count suggests. Defaults are the upstream defaults and Breeze sounds good on them. The four real triggers are: a line that loops (repetition penalty), a line that gets truncated (max_new_tokens), a take that wobbles between runs (temperature down), or dialogue where you want a touch more life in one line and less in another (temperature up on the emotional one).
One thing this node does not fix: a bad reference_text. Sampling settings cannot rescue a transcript that doesn't match the audio, because the mismatch is in the conditioning, not the decoding. Transcribe the clip properly - ITL Whisper Transcribe is in the same pack - and you'll hear the difference immediately.
Install
Comes with the pack. 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
Needs an NVIDIA GPU, ~7.7 GiB VRAM (≈14.4 GiB with fast_path), ~7.2 GB of weights downloaded on first run into models/breeze_tts/Breeze-TTS-2/. Same unload_after advice as everywhere in this pack: if a video or image model runs later in the same graph, free the 7.7 GiB or you'll meet the OOM.
Inputs (11)
| 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. | |
| seed | INT | 420–4294967295 | — |
| 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 | — |