Nodes/IndexTTS2-PauseControl/IndexTTS 候选试听
ComfyUI Node

IndexTTS 候选试听

IndexTTSListen

By lynx-gt·Created about a month ago·Updated about a month ago· 4
IndexTTS 候选试听
    • round1
    • round2
    • round3
    • log
    task
    custom_task
    segment
    custom_segment0
    task_dir
    accept_round0

    Batch generation gives you rounds candidates per segment - three takes of segment one, three of segment two, and so on - and the whole point of having candidates is that you pick the good one. Doing that by hunting through output/批量生成_20260807_120000/ in a file manager is misery. IndexTTSListen is the listening booth: point it at a task, pick a segment, get the three rounds as separate AUDIO outputs you can wire into PreviewAudio nodes, and - the part that makes it a pipeline node rather than a glorified player - mark the winner as accepted.

    The inputs

    • task_dir - the batch node's task_dir output, wired in. This is the preferred path, and a wired value wins over the dropdown. If you're not wiring it, task (a dropdown populated by the pack's bundled JS) or custom_task (type the path) work instead.
    • segment / custom_segment - which segment to audition. The dropdown is populated from the task's manifest, so it lists actual segment numbers rather than making you guess. A quick note on the numbering since it trips people up: 001_1.wav is segment 1, round 1 - the leading zeros are the segment, the last number is the take, and the error message when you get it wrong says exactly that.
    • accept_round - the workflow meat. 0 (default) means "just listen, change nothing." Set it to 1, 2, or 3 and the node writes an accepted flag for that round into the task's manifest.json. That's how the downstream nodes (SRT generation, final assembly) know which take is canonical. It's a one-shot action: run with accept_round=2, the manifest records round 2 as accepted, and the log confirms it.

    Outputs

    Three AUDIO tensors, round1, round2, round3 - wire each into its own PreviewAudio and you've got a side-by-side listening rig. If a round's file doesn't exist you get a short silent placeholder instead of a crash, and the log tells you what happened. There's also a log string for status, including current acceptance flags per round.

    One thing the log will nag you about: if you ran rounds=4 or higher, the node shows you only the first three rounds. The extras exist on disk (004_4.wav...) - the UI just doesn't surface them - so if your best take is hiding in round 5, you'll have to listen to it the file-manager way.

    Where it fits

    IndexTTSLoader → IndexTTSBatch (rounds=3) → IndexTTSListen → PreviewAudio ×3
    

    Generate, audition, accept. Then IndexTTSSrt reads the accepted picks from the manifest and produces the final audio plus subtitles, and IndexTTSFix handles the one take that's almost right but has a single pause out of spec. That's the whole production loop, and Listen is the human-in-the-middle step that makes it work - the node where you're supposed to slow down and actually listen.

    Troubleshooting

    • "任务目录为空" (task directory empty) - you haven't run a batch yet, or the path didn't come through. Run IndexTTSBatch first; wired task_dir is the most reliable path.
    • A segment shows all-placeholder silence - the files genuinely don't exist; check whether the batch actually generated that segment (or got interrupted before it).
    • You can't remember which round you accepted - the log prints the acceptance state, and it's also sitting in manifest.json under that segment's rounds entries.

    Installation is shared with the whole pack: ComfyUI Manager, search IndexTTS2-PauseControl (or git clone https://github.com/lynx-gt/IndexTTS2-PauseControl into custom_nodes/, run python install.py, restart), and the ~11.8GB IndexTTS2 weights into ComfyUI/models/index_tts/.

    CategoryIndexTTS

    Inputs (6)

    NameTypeDefaultDescription
    taskCOMBO1 options:
    custom_taskSTRING
    segmentCOMBO1 options: 1
    custom_segmentINT0
    task_dirSTRING接收「批量生成」节点的 task_dir 输出(连线传入时优先于 task/custom_task)
    accept_roundINT00–3验收标记:0=仅试听不改状态;1/2/3=标记该轮通过验收(写入任务 manifest.json,供后续流程选用)

    Outputs (4)

    NameTypeDescription
    round1AUDIO
    round2AUDIO
    round3AUDIO
    logSTRING