Nodes/ComfyUI-IndexTTS2/IndexTTS2 Advanced
ComfyUI Node

IndexTTS2 Advanced

Same TTS as Simple, with the sampling knobs pulled out — for when default output isn't good enough

By snicolast·Created about a year ago·Updated 12 months ago· 213
IndexTTS2 Advanced
  • audio
  • emotion_audio
  • emotion_vector
  • AUDIO
  • STRING
◄text—►
◄emotion_control_weight1.00►
◄use_random_stylefalse►
◄interval_silence_ms200►
◄max_text_tokens_per_segment120►
◄seed-1►
◄do_sampletrue►
◄temperature0.80►
◄top_p0.80►
◄top_k30►
◄repetition_penalty10.0►
◄length_penalty0.0►
◄num_beams3►
◄max_mel_tokens1500►
◄typical_samplingfalse►
◄typical_mass0.90►
◄speech_speed1.00►
◄use_fp16false►
◄output_gain1.00►

IndexTTS2 Advanced is what you reach for when Simple gets you 90% of the way and the last 10% is a word spoken wrong, a flat delivery, or a voice you need to reproduce identically across a batch. It's the same voice-cloning engine under the hood - same reference clip, same text, same emotion inputs - but it exposes the sampling and decoding controls that Simple hides. Think of it as Simple with the hood open.

How it works

The pipeline is identical to IndexTTS2 Simple: reference audio to a temp WAV, the vendored upstream IndexTTS2 inference (GPT-style autoregressive codec, BigVGAN vocoder, CAMPPlus speaker embedding), 22.05kHz mono out. The difference is that this node forwards about a dozen decoding parameters straight into the model's generation call. Nothing here is a fake slider - these are real knobs on the underlying sampler.

The inputs that matter

The three required inputs are the same as Simple: audio, text, and emotion_control_weight. The optional list is long, but you can ignore most of it. The few a beginner actually sets:

  • seed - default -1 means random; set a number and you can reproduce a take. This is the one I'd touch first.
  • speech_speed - 0 to 4, default 1. The model's pacing was a common complaint, and this is the direct fix.
  • temperature / top_p / top_k - the classic sampling trio (0.8 / 0.8 / 30 by default). Lower temperature for steadier, more predictable reads; nudge it up if the voice sounds robotic.
  • do_sample - sampling on (default) vs. greedy decoding. Turn it off with a fixed seed and you get the most deterministic output the model can manage.

Everything else is legitimately advanced: num_beams (beam search width, default 3), repetition_penalty (and yes, the default of 10 is as high as it looks - it's the upstream default, leave it), length_penalty, interval_silence_ms (pause length between text segments), max_text_tokens_per_segment (how the text gets chunked), typical_sampling / typical_mass, max_mel_tokens, and use_random_style, which swaps in a random style instead of your reference. use_fp16 and output_gain behave exactly as in Simple.

Outputs

Same as Simple: AUDIO and a status STRING. The string reports model precision, emotion source, and applied gain, and it's worth a read when a take comes out weird - it'll tell you which path the node actually took.

Install and troubleshooting

Installing is identical to Simple (same pack, same heavy requirements.txt, same checkpoints/ model folder). For issues, the Simple article's list applies here too, plus two Advanced-specific habits: change one knob at a time, because these interact in non-obvious ways, and keep FP16 off - the same artifact problems testers found on Simple show up here. If a line comes out wrong, don't brute-force the sampler; rewrite the text first. A missing apostrophe or an awkward phrase causes more weirdness than any of these sliders will fix.

CategoryAudio/IndexTTS

Inputs (22)

NameTypeDefaultDescription
audioAUDIO—
textSTRING—
emotion_control_weightFLOAT1.000–1—
emotion_audiooptAUDIO—
emotion_vectoroptEMOTION_VECTOR—
use_random_styleoptBOOLEANfalse—
interval_silence_msoptINT2000–12000—
max_text_tokens_per_segmentoptINT1200–2048—
seedoptINT-1-1–2147483647—
do_sampleoptBOOLEANtrue—
temperatureoptFLOAT0.800–5—
top_poptFLOAT0.800–1—
top_koptINT300–2048—
repetition_penaltyoptFLOAT10.00–50—
length_penaltyoptFLOAT0.0-10–50—
num_beamsoptINT31–10—
max_mel_tokensoptINT15000–8192—
typical_samplingoptBOOLEANfalse—
typical_massoptFLOAT0.900–2000—
speech_speedoptFLOAT1.000–4—
use_fp16optBOOLEANfalse—
output_gainoptFLOAT1.000–4—

Outputs (2)

NameTypeDescription
AUDIOAUDIO—
STRINGSTRING—