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 12 months ago·Updated 11 months ago· 212
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