ComfyUI Node

IndexTTS 2.5 Sampling Config

The knobs behind a repeatable IndexTTS 2.5 render

By xiaozhuguang·Created 29 days ago·Updated 25 days ago· 9
IndexTTS 2.5 Sampling Config
    • Sampling Config
    • Sampling Info
    do_samplefalse
    temperature0.80
    top_p0.80
    top_k30
    num_beams3
    repetition_penalty10.0
    length_penalty0.00
    max_mel_tokens1500
    max_text_tokens_per_segment120
    segment_silence_ms200
    text_normalizationtrue

    Here's a workflow truth: the Generate node works fine with zero configuration, and most people should leave it that way. But the moment you need the same line read the same way twice, or a long script split into clean chunks, or a script to stop reading "1,024" as "one point zero two four," you've found the reason this node exists. IndexTTS 2.5 Sampling Config centralizes every generation knob that isn't the text or the voice, so you can stop fiddling with per-run settings and bake in a repeatable render.

    Wire its Sampling Config output into the Generate node's sampling input and it overrides the stable defaults Generate uses when left unconnected. It also emits a second output, Sampling Info, a plain string summarizing what you've configured - handy for logging a render or double-checking you didn't leave something at a weird value.

    The inputs, grouped by what they do

    Determinism. do_sample is the master switch. Off (the default) means greedy beam search: with a fixed seed, the same text and reference give you the same take, every time. That's your reproducibility mode - for dubbing where a line needs to be consistent across a cut, this is the setting that saves you. Flip it on and temperature, top_p, and top_k start to matter, trading repeatability for variety. If a take sounds robotic, a touch of temperature (0.8 is the default, try 0.9–1.0) and top_p loosen it up.

    Search shape. num_beams (default 3) controls beam search width - more beams mean "smarter" but slower generation. repetition_penalty is the one to remember when the model starts chewing on a phrase and won't let go; the pack ships it set high as part of its stable defaults, so you usually only move it down if a line sounds flattened. length_penalty biases toward longer or shorter utterances.

    Long text. max_text_tokens_per_segment (default 120) sets how much text goes into each chunk before the model splits it, and segment_silence_ms (default 200) inserts a pause between chunks. This is the hidden superpower: feed it a long paragraph and it comes out as cleanly segmented speech instead of one breathless run-on. If you're synthesizing a whole narration, this is where you live.

    Text normalization. text_normalization (default on) routes the text through the front-end that expands numbers, units, and dates into their spoken forms. This is the difference between "1,024" being read as a number and as gibberish. Leave it on unless you're hitting a weird edge case. And max_mel_tokens (default 1500, range 256–4096) caps how long each generated audio chunk can be - a ceiling, not something you tune for quality.

    When to actually reach for it

    Three situations. One: you need repeatability - set a fixed seed on Generate, leave do_sample off, done. Two: long-form audio - raise max_text_tokens_per_segment a bit and set segment_silence_ms to the pause length you want between sentences. Three: you're troubleshooting a read - the Sampling Info string tells you exactly what got applied, which beats guessing which stale setting is haunting a render.

    It's part of the Comfyui-indextts25-xzg pack, so installation is the same as the rest of the family: install the pack (Manager or git clone), pip install the requirements into your ComfyUI Python, drop the ~5GB model into models/TTS/IndexTTS-2.5/, restart. One honest warning for the eager: everything here defaults to the pack's stable settings on purpose, and the transformers<5.0 pin in requirements.txt is load-bearing - if you go upgrading things willy-nilly and hit an OffloadedCache import error, that pin is your culprit and your fix. Resist the urge to touch all eleven knobs on day one. The defaults are good; the knobs are for when they're not.

    CategoryComfyui-indextts25-xzg/IndexTTS 2.5

    Inputs (11)

    NameTypeDefaultDescription
    do_sampleBOOLEANfalseResults are more stable when off; temperature/top_p/top_k take effect when on.
    temperatureFLOAT0.800.1–2
    top_pFLOAT0.800.05–1
    top_kINT300–200
    num_beamsINT31–10
    repetition_penaltyFLOAT10.00.1–20
    length_penaltyFLOAT0.00-2–2
    max_mel_tokensINT1500256–4096
    max_text_tokens_per_segmentINT12020–300
    segment_silence_msINT2000–3000
    text_normalizationBOOLEANtrue

    Outputs (2)

    NameTypeDescription
    Sampling ConfigXZG_INDEXTTS25_SAMPLING
    Sampling InfoSTRING