Nodes/ComfyUI-Index-TTS/Index TTS 2 Pro (小说多角色)
ComfyUI Node

Index TTS 2 Pro (小说多角色)

Multi-character novel narration with emotion control

By chenpipi0807·Created about a year ago·Updated about a month ago· 720
Index TTS 2 Pro (小说多角色)
  • narrator_audio
  • character1_audio
  • character2_audio
  • character3_audio
  • character4_audio
  • character5_audio
  • emotion_audio
  • cache_control
  • audio
  • seed
  • Subtitle
  • SimplifiedSubtitle
structured_text<Narrator>这是一段旁白文本。<Character1>你好,我是角色1。<Narrator>他说道。
modeAuto
emotion_weight0.80
do_sample_modeon
temperature0.80
top_p0.90
top_k30
num_beams3
repetition_penalty10.0
length_penalty0.0
max_mel_tokens1815
max_tokens_per_sentence120
seed0

This is the flagship node in the whole pack: multi-character novel narration - narrator plus up to five distinct character voices - running on IndexTTS-2, with the emotion controls that model line is built around layered on top. It's what you get when you combine Index TTS Pro's cast-of-voices approach with Index TTS 2 - Emotion Audio's ability to steer delivery from a reference clip, in one node. Added in the December 2025 update specifically in response to users asking for TTS2-quality multi-character reading (it wasn't there before - the original Pro node is stuck on the older Index-TTS/1.5 models).

If you're building an audiobook-style read of a chapter with real cast and real emotional range, this is the node. If IndexTTS-2's heavier model download or slower generation isn't worth it for your use case, the older Index TTS Pro does the same multi-character job on the lighter model line, just without emotion control.

Inputs and outputs that matter

Required: structured_text (your script, tagged <Narrator> / <Character1><Character5> - pair this node with Novel Text Structure to generate that tagging from plain prose automatically), narrator_audio (the reference voice for narration), and mode (Auto/Duration/Tokens, same length-pacing control as the rest of the TTS2 family - leave on Auto unless you need tight timing control).

Optional: character1_audio through character5_audio for each tagged character's voice - any tag without a wired audio input just won't get a distinct voice in the output, so double-check your tags match your connections before a long render. emotion_audio and emotion_weight (0–1.4, a slightly wider range than the standalone Emotion Audio node) work the same way as on that node: feed a clip of the delivery you want, and it colors the whole reading. The rest - do_sample_mode, temperature, top_p, top_k, num_beams, repetition_penalty, length_penalty, max_mel_tokens, max_tokens_per_sentence, seed, and cache_control (wire in an Index TTS 2 - Cache Control node) - are the shared TTS2 sampling and VRAM-management controls.

Outputs: audio (the full cast reading, one clip), seed, Subtitle (structured captions across the whole multi-character script), and SimplifiedSubtitle (plain-text transcript).

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

This node needs the complete IndexTTS-2 stack under ComfyUI/models/IndexTTS-2/ - base weights, the qwen0.6bemo4-merge emotion classifier, MaskGCT's semantic codec, CampPlus speaker embeddings, facebook/w2v-bert-2.0, and a BigVGAN vocoder checkpoint. Run the bundled TTS2_download.py (needs huggingface_hub, supports resuming and a China mirror via HF_ENDPOINT) rather than piecing it together by hand - it's genuinely a lot of files across several source repos.

Where people get burned

This is a new node (added in the same update that fixed several longstanding bugs), so treat it as a bit less battle-tested than the rest of the pack - the changelog itself flags it as something that "will have some bugs, feedback welcome." The multi-character mismatch trap from the original Pro node applies here too: a character tag with no matching characterN_audio input silently falls through rather than erroring. And the usual TTS2 dependency issues apply on top - a 401 on w2v-bert-2.0 means downloading it locally instead of live, and transformers needs pinning to 4.52.1 or 4.54.1. If a long multi-character render is your goal, generate a short test pass first to confirm every character tag is actually wired to a voice before committing GPU time to the full chapter.

Categoryaudio

Inputs (21)

NameTypeDefaultDescription
structured_textSTRING<Narrator>这是一段旁白文本。<Character1>你好,我是角色1。<Narrator>他说道。
narrator_audioAUDIO
modeCOMBOAuto3 options: Auto, Duration, Tokens
character1_audiooptAUDIO
character2_audiooptAUDIO
character3_audiooptAUDIO
character4_audiooptAUDIO
character5_audiooptAUDIO
emotion_audiooptAUDIO
emotion_weightoptFLOAT0.800–1.4
do_sample_modeoptCOMBOon2 options: off, on
temperatureoptFLOAT0.800.1–2
top_poptFLOAT0.900–1
top_koptINT300–100
num_beamsoptINT31–10
repetition_penaltyoptFLOAT10.01–10
length_penaltyoptFLOAT0.0-2–2
max_mel_tokensoptINT181550–1815
max_tokens_per_sentenceoptINT1200–600
seedoptINT00–4294967295
cache_controloptDICT

Outputs (4)

NameTypeDescription
audioAUDIO
seedINT
SubtitleSTRING
SimplifiedSubtitleSTRING