Nodes/IndexTTS-2 Nodes/IndexTTS2 Voice Clone
ComfyUI Node

IndexTTS2 Voice Clone

Clone a voice from one audio clip and make it say anything

By kana112233·Created 8 months ago·Updated 8 months ago· 3
IndexTTS2 Voice Clone
  • model
  • spk_audio_prompt
  • audio
textHello, this is a test of voice cloning with IndexTTS-2.
temperature1.0
top_k0
top_p1.00
use_randomfalse

This is the node you reach for first, because it's the entire point of the pack: give it a few seconds of someone talking and a line of text, and it says the line in their voice. No fine-tuning, no training, no ElevenLabs account - just zero-shot voice cloning that runs on your GPU. It's the direct local competitor to what F5-TTS and Chatterbox do, with IndexTTS-2's own flavor: strong naturalness and an English/Chinese sweet spot.

The workflow is embarrassingly simple: Model Loader → Voice Clone → SaveAudio. spk_audio_prompt takes standard ComfyUI AUDIO, so you wire in a core LoadAudio node pointing at your reference file. That's the whole graph.

How it works

The reference clip gets run through a wav2vec-BERT feature extractor into a speaker conditioning embedding - that's your timbre. The text gets tokenized and fed to an autoregressive GPT that predicts speech codes, which a speech-to-mel module and the BigVGAN vocoder turn into a 22.05 kHz waveform. Because the speaker identity and the content are handled by separate branches, you can swap text and keep the voice, which is the "zero-shot" part. Notably, with no explicit emotion input this node just inherits whatever emotion the reference audio carries - a happy-sounding reference gives happy-sounding output.

The inputs that actually matter

  • text - what the voice says. Multiline, so paragraphs are fine.
  • spk_audio_prompt - your reference clip, from LoadAudio. This is 90% of the quality, not the text.
  • use_random - off by default. Enabling it adds variety between runs but degrades cloning fidelity. Leave it off unless you're deliberately hunting for variants.
  • temperature, top_k, top_p - sampling knobs. top_k defaults to 0 (off); the pack's own docs suggest 5–10 if your output is unstable.

The single output, audio, is standard ComfyUI AUDIO - wire it to SaveAudio (or PreviewAudio) to actually keep the result.

Getting good clones

The community's hard-won rules for reference audio are worth repeating, because this model is sensitive:

  • Use 5–15 seconds of clean, single-speaker audio. No background music, no crowd.
  • Loud, dynamic, expressive clips (a podcast clip) work dramatically better than quiet, slow, monotone ones (a soft audiobook reading). The model leans on the energy in the reference.
  • IndexTTS-2 is English/Chinese-native, so don't expect miracles on other languages.
  • It fumbles apostrophes - "don't" comes out garbled, so write "dont". Annoying, but you'll get used to retyping contractions.

Install and setup

Same story as the rest of the pack: Manager search "IndexTTS-2", or clone into custom_nodes, then pip install -r requirements.txt. You need the full model downloaded to ComfyUI/models/IndexTTS-2/ (see the Model Loader article) and internet for the first load's w2v-BERT and MaskGCT downloads. The heavy dependency list is the price of entry for audio in ComfyUI - set aside a patient pip install the first time.

Categoryaudio/IndexTTS2

Inputs (7)

NameTypeDefaultDescription
modelINDEXTTS2_MODEL
textSTRINGHello, this is a test of voice cloning with IndexTTS-2.
spk_audio_promptAUDIO
temperatureFLOAT1.00.1–2
top_kINT00–100
top_pFLOAT1.000–1
use_randomBOOLEANfalse

Outputs (1)

NameTypeDescription
audioAUDIO