Index TTS
The original node — clone a voice from a reference clip
- reference_audio
- audio
- seed
- SimplifiedSubtitle
This is the node people are actually searching for when they type "Index TTS" into Google. Drop in a short reference audio clip, type some text, and it comes back speaking your text in that voice - Chinese and English, no cloud API, no key, runs on your own GPU. It's the original, do-everything node in this pack, and as of the December 2025 update it can drive all three model generations the pack supports: the original Index-TTS, the improved IndexTTS-1.5, and even IndexTTS-2, all from one model_version dropdown.
That last point matters, because it changes what this node is for. If you just want reliable voice cloning with sane defaults, this is your node. If you want IndexTTS-2's newer emotion control (a reference emotion clip, an 8-way emotion slider, or a plain-English emotion description), you don't get that here - this node runs TTS2 in plain mode. For that you want the separate Index TTS 2 - Base/Emotion Audio/Emotion Text/Emotion Vector nodes instead. Think of this one as the reliable generalist and the TTS2 family as the specialist toolkit.
Inputs and outputs that matter
Required: text (Chinese or English, mixed is fine), reference_audio (the voice you're cloning - quality in, quality out), model_version (Index-TTS / IndexTTS-1.5 / IndexTTS-2), language (auto detects per-sentence, or force zh/en - useful because number pronunciation depends on it: "4090" reads as four digits in Chinese mode but as "four thousand ninety" in English), speed (0.5–2.0 - the author's own note is that this is post-processing, not native rate control, so pushing it far from 1.0 costs a bit of naturalness), and seed for reproducible re-rolls.
Optional knobs (temperature, top_p, top_k, repetition_penalty, length_penalty, num_beams, max_mel_tokens, sentence_split) are the usual autoregressive-generation dials. You'll rarely touch most of them - the two worth knowing are repetition_penalty (push it to 10–12 if the clone drifts off-voice on longer text) and max_mel_tokens (raise it if long text gets cut off mid-sentence).
Outputs: audio (wire straight into a Save/Preview Audio node, or into Audio Cleaner if the output has any reverb or noise), seed (what actually got used, handy when seed=0 means "randomize"), and SimplifiedSubtitle - a plain-text transcript string of what was spoken, useful for logging batch runs or feeding a captioning step.
Install
ComfyUI Manager: search ComfyUI-Index-TTS, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/chenpipi0807/ComfyUI-Index-TTS.git
cd ComfyUI-Index-TTS
pip install -r requirements.txt
Then grab the model for whichever model_version you'll use. Index-TTS and IndexTTS-1.5 each want their own folder - ComfyUI/models/Index-TTS/ or ComfyUI/models/IndexTTS-1.5/ - from Hugging Face or ModelScope; the two big files are bigvgan_discriminator.pth (1.6GB) and gpt.pth (696MB), so budget for a real download. IndexTTS-2 is a much bigger, multi-part model stack under ComfyUI/models/IndexTTS-2/ - see the Index TTS 2 - Base article for the full breakdown, or just run the bundled TTS2_download.py script, which fetches and places everything with resume support.
Where people get burned
Picking a model_version whose model folder doesn't exist yet gives you a load failure that reads like a bug but is just a missing download - check the folder before assuming the node is broken. If you're running model_version=IndexTTS-2, the pack's own FAQ flags real dependency friction: transformers versions 4.57.1+ break TTS2 (pin to 4.52.1 or 4.54.1), and safetensors needs to be ≥0.4.3 or you'll hit a get_slice attribute error. On Linux with Python 3.13, the pynini dependency fails to build - drop to Python 3.10/3.11 (Windows users don't need it at all). Community chatter on IndexTTS2 generally echoes what the README's own tuning advice says: a clean, dynamic reference clip (not a quiet, flat one) clones noticeably better than a mumbly recording, so it's worth spending thirty seconds picking a good source clip before you blame the model.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | 你好,这是一段测试文本。 | — |
| reference_audio | AUDIO | — | |
| model_version | COMBO | Index-TTS | 3 options: Index-TTS, IndexTTS-1.5, IndexTTS-2 |
| language | COMBO | auto | 3 options: auto, zh, en |
| speed | FLOAT | 1.00.5–2 | — |
| seed | INT | 00–4294967295 | — |
| temperatureopt | FLOAT | 1.00.1–1.5 | — |
| top_popt | FLOAT | 0.800–1 | — |
| top_kopt | INT | 301–100 | — |
| repetition_penaltyopt | FLOAT | 10.01–15 | — |
| length_penaltyopt | FLOAT | 0.0-5–5 | — |
| num_beamsopt | INT | 31–10 | — |
| max_mel_tokensopt | INT | 600100–1500 | — |
| sentence_splitopt | COMBO | auto | 2 options: auto, manual |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| seed | INT | — |
| SimplifiedSubtitle | STRING | — |