Nodes/ComfyUI-Index-TTS/Index TTS 2.5 - Base (多语言/语速)
ComfyUI Node

Index TTS 2.5 - Base (多语言/语速)

Index TTS 2.5 Base

By chenpipi0807·Created about a year ago·Updated 6 days ago· 751
Index TTS 2.5 - Base (多语言/语速)
  • reference_audio
  • cache_control
  • audio
  • seed
  • subtitle
text大家好,这是 IndexTTS 2.5 的语音合成演示。
langZH
duration_factor1.00
do_sample_modeon
temperature0.80
top_p0.80
top_k30
num_beams3
repetition_penalty10.0
length_penalty0.0
max_mel_tokens1500
max_tokens_per_sentence120
interval_silence_ms200
text_normalizationtrue
seed0

This is the node you'll actually build your TTS workflow around. Index TTS 2.5 - Base is the flagship of the chenpipi0807/ComfyUI-Index-TTS pack: zero-shot voice cloning right inside ComfyUI, no API, no key, no cloud. You feed it a 3–15 second clip of a voice and a line of text, and it talks back in that voice. The community's verdict on IndexTTS is pretty consistent - it's the open-source option people actually reach for when they want voice cloning that sounds human, and this node is the popular ComfyUI wrapper for the 2.5 generation.

What 2.5 adds over the older 2.0 nodes in the same pack is the interesting part: it's genuinely multilingual (Chinese, English, Japanese, Spanish, Arabic) and does cross-lingual cloning - a Chinese reference clip can speak English or Japanese. It also gets native speed control and much stronger pronunciation markup, plus a roughly 1.6x speed boost from running bf16 on CUDA.

How it works

Under the hood it's the usual modern TTS stack, just wired into a node. The reference clip is turned into a speaker embedding via Campplus; a GPT-style autoregressive model then generates semantic tokens conditioned on that voice and your text; a unified semantic codec (codec.pth) and the BigVGAN vocoder turn those tokens into a waveform. The pack keeps one shared loader and engine across all the 2.5 nodes, so loading models once isn't repeated for every node in your graph. It also unloads them after each run by default to keep VRAM low.

The inputs that matter

  • reference_audio - a clean 3–15s clip of the voice you want. This is the whole game. Loud, dynamic audio (podcast-style) clones far better than a quiet, flat reading.
  • text - the script, with pronunciation markup written inline. This is 2.5's superpower for Chinese homophones: 他在银<行|XING2>里<行|HANG2>走了半天. English takes CMU phonemes (<minute|M AY0 . N UW1 T>), Japanese takes kana (<上手|じょうず>).
  • lang - ZH, EN, JA, ES, AR, or ZH/EN mixed.
  • duration_factor - speed, 0.5–2.0. Counterintuitively, above 1 is slower, below 1 is faster. 1.0 is normal.

The sampling stack (temperature, top_p, top_k, num_beams) and seed are there if you want reproducibility or to hunt for a better take; defaults are sensible. max_mel_tokens defaults to 1500 - bump it for long paragraphs. The optional cache_control input wires up to the pack's Cache Control node.

Outputs: audio (AUDIO, straight into SaveAudio or PreviewAudio), seed (INT, so you can reuse or vary), and subtitle (STRING - handy when you're building video).

Install

Install the pack via ComfyUI Manager (search "ComfyUI-Index-TTS") or:

cd ComfyUI/custom_nodes
git clone https://github.com/chenpipi0807/ComfyUI-Index-TTS
cd ComfyUI-Index-TTS
pip install -r requirements.txt

Then the models, all into ComfyUI/models/IndexTTS-2.5/:

python .\ComfyUI\custom_nodes\ComfyUI-Index-TTS\TTS2_5_download.py

That script grabs gpt.pth (about 3.3GB), the codec, s2mel.pth, the Campplus embedding, w2v-bert-2.0/ (for offline use), and bigvgan/. It's a chunky download, and the requirements list is chunky too - transformers, torchaudio, librosa, whisper, tiktoken, g2p-en, fugashi for Japanese, and pynini on Linux (Windows skips it).

Where people get burned

  • The 401 Unauthorized from facebook/w2v-bert-2.0 - the fix is downloading it locally into ComfyUI/models/IndexTTS-2.5/w2v-bert-2.0/ so the pack never hits the network.
  • transformers version hell - this pack and its dependencies fight newer transformers. The README pins the known-good range: transformers==4.52.1 or 4.54.1.
  • A "boring" reference clip gives a boring clone. If the output is flat or robotic, it's usually the reference audio, not the node.
  • The pack updates often - git pull in the custom node folder when things act weird, and remember 2.5 and 2.0 keep separate model directories and can coexist in one workflow.
Categoryaudio

Inputs (17)

NameTypeDefaultDescription
textSTRING大家好,这是 IndexTTS 2.5 的语音合成演示。
reference_audioAUDIO
langCOMBOZH6 options: ZH, EN, JA, ES, AR, ZH/EN
duration_factorFLOAT1.000.5–2
do_sample_modeoptCOMBOon2 options: off, on
temperatureoptFLOAT0.800.1–2
top_poptFLOAT0.800–1
top_koptINT300–100
num_beamsoptINT31–10
repetition_penaltyoptFLOAT10.01–10
length_penaltyoptFLOAT0.0-2–2
max_mel_tokensoptINT150050–1815
max_tokens_per_sentenceoptINT1200–600
interval_silence_msoptINT2000–2000
text_normalizationoptBOOLEANtrue
seedoptINT00–4294967295
cache_controloptDICT

Outputs (3)

NameTypeDescription
audioAUDIO
seedINT
subtitleSTRING