CoachBate Load H3 Audio Path
Load a slice of audio by path, in the shot file, without a browser dialog
- audio
A loader you can drive from text
ComfyUI's stock audio loaders want you to click a file. That's fine when you're making one thing and useless when you're making forty of them from a shotlist, because the path is data - it lives in a JSON file, it changes per shot, and no dialog is going to appear at 3am with the right answer.
CoachBate Load H3 Audio Path takes an audio path as a string, with an optional in/out range in
seconds, and returns an AUDIO you can feed to H3's reference-audio slots. That's why it exists:
the shotlist carries reference_audio_1-style paths, and this is the node that turns one into
something a model can hear.
Path resolution, since that's the whole node
audio_path is the only thing that matters and the rules are simple once you know them:
- Blank returns no reference audio at all - the node outputs
Noneand doesn't try to decode, which is what you want for the shots that don't use a reference. - A relative path resolves under ComfyUI's output directory. You can write
[output]in front to be explicit about it, but it's the default. - An absolute path is taken as-is, and surrounding quotes are stripped, so you can paste a Windows path straight out of Explorer without it breaking.
start_seconds (default 0) and end_seconds (default -1) slice the source. -1 means "to the end
of the file", which is the honest default: most references are short clips used whole.
Under the hood it decodes with PyAV - the same av package ComfyUI itself ships, so there's
nothing extra to install - and normalises integer PCM to float. It also hashes the file's mtime
into its change detection, so replacing the file on disk re-triggers the node instead of handing
you a cached stale waveform. That sounds like a small thing until you've spent twenty minutes
wondering why your new VO take isn't being used.
Inputs and outputs
Required, all three: audio_path (STRING), start_seconds (FLOAT, ≥0), end_seconds (FLOAT,
≥-1). Output: audio (AUDIO).
The tooltip is worth reading once, since it's the author's own framing: this is H3 reference
audio. If you're after a whole-song master for a music-video pipeline, that's what
CoachBatePrepareShotContinuity's conditioning_audio input is for.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/CoachBate/ComfyUI-CoachBate.git
Or ComfyUI Manager → search "CoachBate" → restart ComfyUI. Nodes appear under CoachBate / H3. The pack declares no pip dependencies of its own; this node uses PyAV, which ComfyUI already requires.
Where people get burned
- "H3 reference audio not found: …" - the resolved path doesn't exist. Nine times out of ten
it's a relative path that landed in
output/when you meant it to be absolute. - "starts at X s, after the 4.2s file ends" - your
start_secondsis past the end of the file. Usually a leftover from the previous shot's longer reference. - "end (…) must be after start (…)" -
end_secondsbelowstart_seconds. Note that -1 is special-cased and is never the problem. - The waveform is far too short for the shot. You sliced a range; the model then gets a reference it can't use for the whole duration. Check the slice bounds before blaming lipsync.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_path | STRING | H3 reference audio. Relative paths resolve under ComfyUI output; use '[output]' to make that explicit. Blank returns no reference audio. | |
| start_seconds | FLOAT | 0.00 | Start of the source-audio slice in seconds. |
| end_seconds | FLOAT | -1.00 | End of the source-audio slice in seconds; -1 uses the rest of the file. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |