Nodes/ComfyUI_IndexTTS/IndexTTS Run
ComfyUI Node

IndexTTS Run

Zero-shot voice cloning with IndexTTS v1 / v1.5

By billwuhao·Created about a year ago·Updated 9 months ago· 537
IndexTTS Run
  • audio
  • dialogue_audio_s2
  • audio
versionv1.5
text
top_k30
top_p0.80
temperature1.00
num_beams3
max_mel_tokens1000
max_text_tokens_per_sentence120
sentences_bucket_max_size4
fast_inferencetrue
custom_cuda_kernelfalse
deepspeedfalse
unload_modeltrue

IndexTTSRun is the plain version: straight zero-shot voice cloning off IndexTTS v1.0 or v1.5, no emotion vectors, no per-speaker mood controls. If you just want "clone this voice, say this text" without touching IndexTTS2's emotion layer, this node is lighter to reason about than IndexTTS2Run and still gets you two-speaker dialogue through the same [S1]/[S2] convention. Think of it as the node to reach for when the extra knobs on the v2 node are noise, not signal, for what you're doing.

How it works

Same pipeline shape as v2 minus the emotion branch: text gets tokenized, a GPT-style model predicts mel tokens conditioned on your reference audio, BigVGAN vocodes the result into a waveform. The version selector determines which checkpoint set gets loaded - v1.0's original files, or the renamed v1.5 set. v1.5 is the one to actually use. Per the pack's own changelog, v1.5 is where dialogue mode, speaker preview, and - critically for Windows users - a properly working text normalizer all landed together; earlier v1.0 releases are described by the author as effectively hobbled on Windows before that fix shipped.

The inputs and outputs that matter

  • version - v1.5 (default, and the one you want) or V1.0.
  • audio / text - same idea as the v2 node: a reference clip to clone, and what it should say.
  • fast_inference (on by default) - exactly what it says: faster generation. Leave it on; only turn it off if you're chasing a quality issue and want to A/B against it.
  • sentences_bucket_max_size (default 4) - how many sentences get batched together during generation. Raise it if you've got VRAM to spare and want long text to run faster; lower it if you're tight on memory.
  • max_mel_tokens (default 1000) - the length cap on generated audio, tighter than v2's default. Bump it for long paragraphs or the tail end gets cut off.
  • dialogue_audio_s2 (optional) - drop in a second speaker's reference clip and the node automatically switches into two-person dialogue mode, reading [S1]/[S2]-tagged text the same way IndexTTS2Run does.

Output is a single audio.

How to install it

Same pack, same install as the rest: search "ComfyUI_IndexTTS" in ComfyUI Manager, or

cd ComfyUI/custom_nodes
git clone https://github.com/billwuhao/ComfyUI_IndexTTS.git
cd ComfyUI_IndexTTS
pip install -r requirements.txt

Windows needs the same extra step as every node in this pack: pynini won't build cleanly from pip there, so grab the matching prebuilt wheel from the author's separate pynini-windows-wheels repo before you touch requirements.txt, plus importlib_resources and WeTextProcessing.

The model download for this node's v1 track is smaller and simpler than IndexTTS2's five-repo pull - three files placed under ComfyUI/models/TTS/Index-TTS, pulled from the IndexTeam Hugging Face repos and renamed by hand. This is the detail that trips people up: v1.5's files need a _v1_5 suffix added manually (bigvgan_generator_v1_5.pth, bpe_v1_5.model, gpt_v1_5.pth); v1.0's don't. The README spells out the exact renames - follow them literally rather than guessing.

Common issues & troubleshooting

Mismatched version and model files is the most specific failure mode here: pick v1.5 in the dropdown but only have the unrenamed v1.0 files sitting in the folder (or vice versa) and the node won't find its weights. The fix is just making sure the dropdown matches whichever set you actually renamed and placed - not a bug, just a naming convention you have to follow by hand since there's no auto-downloader to enforce it for you.

Windows pynini is the recurring blocker for this whole pack, not just this node - WeTextProcessing depends on it for text normalization, and the prebuilt wheels are Python-version-specific, so grab the exact one matching your interpreter or the install silently doesn't work. And if you see a transformers.cache_utils import error on load, that's a version conflict between this pack and something else in your environment pinning transformers differently - reinstall this pack's requirements.txt last, or use a dedicated venv, to sort it out.

Category🎤MW/MW-IndexTTS

Inputs (15)

NameTypeDefaultDescription
versionCOMBOv1.52 options: v1.5, V1.0
audioAUDIO
textSTRING
top_kINT300–1000
top_pFLOAT0.800–1
temperatureFLOAT1.000–2
num_beamsINT31–20
max_mel_tokensINT10000–100000
max_text_tokens_per_sentenceINT1200–1000
sentences_bucket_max_sizeINT41–100
fast_inferenceBOOLEANtrue
custom_cuda_kernelBOOLEANfalse
deepspeedBOOLEANfalse
unload_modelBOOLEANtrue
dialogue_audio_s2optAUDIO

Outputs (1)

NameTypeDescription
audioAUDIO