Nodes/MiniMax H3 Audio T8/MiniMax H3 Dialogue Boundary Analyzer / 对白边界分析 (EXP/T8)
ComfyUI Node

MiniMax H3 Dialogue Boundary Analyzer / 对白边界分析 (EXP/T8)

'Did that line actually play here?' — finding speech boundaries locally

By T8mars·Created 20 days ago·Updated a day ago· 807
MiniMax H3 Dialogue Boundary Analyzer / 对白边界分析 (EXP/T8)
  • audio
  • transcript
  • unique_target_found
  • clean_exact
  • speech_start_seconds
  • speech_end_seconds
  • extra_before_units
  • extra_after_units
  • report_json
expected_text
asr_model_directory
languageauto
beam_size5
cpu_threads8
unload_after_analyzetrue
tail_activity_threshold_dbfs-45.0

You generated a line of dialogue, and now you need to know exactly where in the audio it starts and ends - for trimming, for timing against video, for building a master. MiniMaxH3DialogueBoundaryAnalyzerT8 answers that with a local CPU faster-whisper pass: it transcribes your audio, looks for the exact text you expected, and reports the boundary only when it finds exactly one contiguous match. Ambiguous? It tells you so. And it never edits a single sample - this is an analyzer, not an editor.

How it works

You feed it audio and expected_text (the line you believe is in there). It runs faster-whisper (CTranslate2, CPU) with beam_size (default 5) and cpu_threads (default 8). The model directory comes from asr_model_directory - an absolute faster-whisper CTranslate2 directory, or a folder under ComfyUI/models/TTS. Note the tooltip carefully: no model is downloaded automatically. You supply the whisper model yourself; this is a local-only tool, no API, no keys.

The interesting outputs:

  • unique_target_found - true only when exactly one contiguous exact-target sequence was found. This is the gate everything else hangs on.
  • clean_exact - whether that match is clean (no extra garbage welded onto the target).
  • speech_start_seconds / speech_end_seconds - the boundary, when found.
  • extra_before_units / extra_after_units - how much padding surrounds the target.
  • transcript and report_json for the full readout.

The honesty you should appreciate

Two deliberate caveats are baked in. First, tail_activity_threshold_dbfs (default −45) only reports post-target signal activity - the tooltip says it plainly: "This is not a VAD or a speech/non-speech decision." Tail energy is not assumed to be speech. Second, if the target text isn't found as one clean contiguous match, the node abstains rather than guessing a boundary from signal levels. For dialogue timing, a wrong start time is worse than no start time, and this node knows it.

Where it fits

This is the measurement side of the speech chain. Pair it with the pack's Speech Verify node for exact-target alignment and Dialogue Safe Master for the mix - the boundary values it produces are exactly the speech_start_seconds those downstream nodes want. It's also a great sanity check: "did H3 actually say the line I prompted, and did it say it once?"

Installing it

From MiniMax H3 Audio T8 (T8mars/T8star, GPL-3.0). Manager search MiniMax H3 Audio T8, or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8

restart. No forced pip extras - but this node does need a faster-whisper model on disk, which is the one dependency people forget. And the H3 weights' Community License excludes the US, EU, UK, South Korea.

The trap

unique_target_found = false doesn't mean the line isn't there - it means the transcription didn't produce one clean contiguous match (accents, background noise, or H3 garbling the line will do it). That's the moment to check transcript and see what it did hear. And if asr_model_directory is empty, the node has no model to run: point it at your CTranslate2 directory or models/TTS subfolder first.

CategoryT8/MiniMax H3/Speech/Experimental

Inputs (8)

NameTypeDefaultDescription
audioAUDIO
expected_textSTRING
asr_model_directorySTRINGAbsolute faster-whisper CTranslate2 directory, or a folder under ComfyUI/models/TTS. No model is downloaded automatically.
languageCOMBOauto12 options: auto, Arabic, Chinese, English, French, German, +6
beam_sizeINT51–20
cpu_threadsINT81–64
unload_after_analyzeBOOLEANtrue
tail_activity_threshold_dbfsFLOAT-45.0-120–0Only reports post-target signal activity. This is not a VAD or a speech/non-speech decision.

Outputs (8)

NameTypeDescription
transcriptSTRING
unique_target_foundBOOLEAN
clean_exactBOOLEAN
speech_start_secondsFLOAT
speech_end_secondsFLOAT
extra_before_unitsINT
extra_after_unitsINT
report_jsonSTRING