IndexTTS 2.5 可视化时间轴编辑 · T8star-Aix
Hand-edit your multi-role timing as JSON, watch it render as colored tracks
- dialogue_script
- 编辑后的台词脚本
- 时间轴预览 JSON
- 可视化时间轴
The multi-role generator decides timing for you. This node lets you take over. You feed it a dialogue script, edit each line's start/end milliseconds, role, language, and speed as JSON, and it returns a validated script you can hand back to the generator - plus a rendered IMAGE timeline you can preview. It's the manual-nudge node for when a line lands 200ms late and you'd rather fix it than regenerate the whole scene.
How the loop works
- Connect a dialogue script. Run the node once with
timeline_edits_jsonempty - it validates your script and gives you the 时间轴预览 JSON output, which contains every line with its currentstart_ms/end_ms, role, text, language, and duration factor. - Copy that JSON's lines array, edit the numbers by hand, paste it back into
timeline_edits_json. - Re-run. The node validates strictly (line numbers must be complete and non-repeating), then outputs:
- 编辑后的台词脚本 - a
T8_INDEXTTS25_DIALOGUE_SCRIPTyou can reconnect to the multi-role/SRT generate node for a re-mix on the new timeline. - 时间轴预览 JSON - the authoritative edited timeline, in milliseconds.
- 可视化时间轴 - a standard
IMAGEof per-line colored tracks. Wire it into ComfyUI's nativePreview Imageand you get a scrollable, visual check of overlaps and gaps.
- 编辑后的台词脚本 - a
A real edited line looks like:
{"line": 1, "role": "角色A", "text": "第一句。", "language": "ZH", "duration_factor": 1.0, "start_ms": 500, "end_ms": 2100}
Why it's better than it sounds
Editing timing as JSON sounds programmer-hostile, but it's the honest format for a graph editor - and the preview image is the thing that makes it usable. You see the colored tracks, spot the overlap, fix the millisecond, re-run. The strict validation (complete, non-repeating line numbers) means malformed edits fail at queue time with a specific message instead of silently producing a corrupted mix. The README even has the full round-trip pattern: timeline editor → generator → done, with ASR reports flowing into the subtitle rewrite node so you can tune subtitles separately from the audio.
Gotchas
Nothing exotic - ships with the pack (Manager search IndexTTS 2.5 · T8star-Aix or the repo clone), no model load, no VRAM. Two things to actually watch:
- The generator's
timeline_policystill applies downstream. If you hand an edited timeline to the generator and it's set toshift, conflicting lines get delayed anyway, defeating your hand-tuning. Useoverlaywhen you've hand-placed lines and want them respected. - Text edits here are just for the mix. Change a line's text in the timeline JSON and the regenerated audio says the new words - but if you're also running ASR proofreading, the ASR is comparing against this text, so keep the script and the timeline in sync or you'll get confusing pass/fail results.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| dialogue_script | T8_INDEXTTS25_DIALOGUE_SCRIPT | — | |
| timeline_edits_json | STRING | 先运行节点取得预览 JSON;复制 lines 数组后修改并填回。时间单位为毫秒。 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| 编辑后的台词脚本 | T8_INDEXTTS25_DIALOGUE_SCRIPT | — |
| 时间轴预览 JSON | STRING | — |
| 可视化时间轴 | IMAGE | — |