Nodes/comfyui-indextts25-t8/IndexTTS 2.5 多角色 / SRT 生成 · T8star-Aix
ComfyUI Node

IndexTTS 2.5 多角色 / SRT 生成 · T8star-Aix

Dialogue, SRT slots, and auto-ASR in one node

By T8mars·Created 14 days ago·Updated a day ago· 25
IndexTTS 2.5 多角色 / SRT 生成 · T8star-Aix
  • model
  • role_library
  • dialogue_script
  • sampling
  • 合并音频
  • 逐句音频
  • 生成报告 JSON
  • 自动回写 SRT
  • 可视化时间轴 JSON
seed0
timeline_policyshift
fit_srt_slotsfalse
slot_duration_modenative
fit_tolerance_ms180
batch_gap_ms200
postprocess_presetoff
postprocess_strength1.00
asr_enabledfalse
asr_backendauto
asr_modelbase
asr_deviceauto
asr_threshold0.82
subtitle_timing_modeactual
subtitle_text_modeasr_passed
subtitle_include_roletrue

This is the workhorse of the whole multi-role flow. It takes the model, a role library (your cast), and a dialogue script (your lines), then synthesizes every line with the right voice, mixes them into one standard AUDIO, and - if you ask - writes you a finished SRT at the same time. If you're building character dialogue, an audiobook, or subtitled video voiceover, this node is where the actual work happens.

How it works

It iterates the script line by line: each line resolves its role, looks up that role's reference audio and emotion in the library, and runs a full IndexTTS inference for that utterance. Outputs are the 合并音频 (mixed master), 逐句音频 (a list of per-line clips, so you can inspect or re-mix individual takes), 生成报告 JSON, plus 自动回写 SRT and 可视化时间轴 JSON when subtitle stuff is enabled.

The inputs that shape it

  • timeline_policy - shift (default) delays any colliding line so nothing overlaps; overlay keeps the original SRT start times and safely mixes the overlap. For timed subtitles you usually want overlay; for plain narration shift.
  • fit_srt_slots / slot_duration_mode - the SRT-fit feature. With slots on, each line tries to land inside its subtitle's time window: native (recommended) allocates target frames to the length regulator in a single inference; natural re-runs with a fitted factor; pad/exact pad or trim to the slot. exact can cut tail consonants, so it's for hard slots only.
  • batch_gap_ms - silence inserted between lines (200 default).
  • postprocess_preset / strength - the same voice-cleanup presets as the standalone post-process node, applied to the mixed master.
  • ASR block - asr_enabled plus backend/model/device/threshold: each line gets transcribed after synthesis and compared against the script. This is the quality gate that catches "it said the wrong thing" per line, automatically.

Subtitle outputs, briefly

subtitle_timing_mode (actual vs original) picks whether SRT times come from the real generated audio or the script's original timestamps. subtitle_text_mode decides what text lands in the SRT: asr_passed (default) replaces a line only when ASR similarity clears the threshold, asr_all replaces everything recognized, original keeps your script text. subtitle_include_role prepends the role name. It's a lot of knobs, but the defaults - actual timing, asr_passed text - are the sane ones: real timestamps, corrected text only when the ASR is confident.

Where people get burned

  • Missing roles - the node validates that every role in the script has a connected voice before queuing. Read that message; it names the role.
  • ASR needs a separate install. The ASR extras (openai-whisper / faster-whisper, plus opencc-python-reimplemented) are optional and don't come with the pack. Without them, asr_enabled errors with a clear "backend not available" message. Install with ComfyUI's own Python:
python -m pip install "openai-whisper>=20250625" "opencc-python-reimplemented>=0.1.7"
  • The fit_srt_slots trap. Target durations that fight natural pacing degrade naturalness - the README says it plainly: "目标时长与自然语速差异过大时仍可能降低自然度." Don't force every line into a slot; reserve exact for subtitle hard slots where the video demands it.
  • transformers must stay <5 - same pack-wide rule, and it's the first thing to check on any cryptic failure here.

Installation

Same as the whole pack: ComfyUI Manager (IndexTTS 2.5 · T8star-Aix), or clone the repo and install requirements with ComfyUI's Python. Weights go in ComfyUI/models/TTS/IndexTTS-2.5. The node itself adds nothing beyond the pack's standard deps - except the ASR extras above, if you enable that path.

CategoryT8star-Aix/Audio/IndexTTS 2.5

Inputs (20)

NameTypeDefaultDescription
modelT8_INDEXTTS25_MODEL
role_libraryT8_INDEXTTS25_ROLE_LIBRARY
dialogue_scriptT8_INDEXTTS25_DIALOGUE_SCRIPT
seedINT00–18446744073709550000
timeline_policyCOMBOshiftshift 顺延避免重叠;overlay 保留 SRT 起点并安全混音。
fit_srt_slotsBOOLEANfalse仅 SRT 有效;native 单次控制,其他模式保留兼容回退。
slot_duration_modeCOMBOnativenative 原生单次控制(推荐);natural 二次适配;pad/exact 为兼容收尾。
fit_tolerance_msINT1800–2000
batch_gap_msINT2000–5000
postprocess_presetCOMBOoff6 options: off, voice_clarity, clear_narration, deharsh, warm, normalize
postprocess_strengthFLOAT1.000–1
asr_enabledBOOLEANfalse
asr_backendCOMBOauto3 options: auto, openai_whisper, faster_whisper
asr_modelCOMBObase5 options: tiny, base, small, medium, turbo
asr_deviceCOMBOauto3 options: auto, cuda, cpu
asr_thresholdFLOAT0.820–1
subtitle_timing_modeCOMBOactual2 options: actual, original
subtitle_text_modeCOMBOasr_passed3 options: asr_passed, asr_all, original
subtitle_include_roleBOOLEANtrue
samplingoptT8_INDEXTTS25_SAMPLING

Outputs (5)

NameTypeDescription
合并音频AUDIO
逐句音频AUDIO
生成报告 JSONSTRING
自动回写 SRTSTRING
可视化时间轴 JSONSTRING