SupaVoice Video Loader
Frames and audio in one pull — the video loader built for training data
- images
- audio
- audio_path
- metadata_json
- fps
- frame_count
Most of the SupaVoice pack is a transcribe pipeline. SupaVoice Video Loader is the node that understands a video file as a thing with both - it hands you the frames as an IMAGE batch and the clean audio as an AUDIO, extracted from the same clip, so you can build labeled image+audio+transcript training data without juggling two loaders that don't agree on timing. It lives under SupaVoice/video, the only node in the pack that does.
How it works
Under the hood it's ffprobe for metadata plus two ffmpeg passes: one decodes frames (with fps and scale filters applied) into a float32 IMAGE batch, the other extracts the audio track to a WAV and reloads it as AUDIO. If the video has no audio track it doesn't error - it deliberately returns silence, which is a thoughtful touch if you're building a dataset from muted footage and want consistent output shapes.
Inputs worth actually setting:
start_seconds,end_seconds,duration_seconds- duration wins if it's > 0; otherwiseend - start. Defaultduration_secondsis 5.fps- 0 means "use the source frame rate" (that's the sensible default; don't touch it unless you know why).width/height- 0 keeps source size; otherwise it scales (with lanczos) and preserves aspect ratio when you set only one side.max_frames- caps the batch (default 120, up to 4096). Your safety valve against accidentally decoding an hour of video.audio_sample_rate(default 16000) andaudio_channels(mono/stereo) shape the audio for whatever you're feeding next.
Outputs: images, audio, audio_path, metadata_json (a STRING with codec, dimensions, fps, duration, frame count - handy for logging or conditionals), fps, and frame_count as plain values.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/mexxmillion/ComfyUI-SupaVoice-Transcriber
Restart ComfyUI. No model downloads. Because it shells out to bare ffmpeg and ffprobe, those need to be on the PATH visible to ComfyUI - fine on a normal Windows embed, easy to forget on a bare Linux box. The default media_path is again the author's E:\git\SupaVoice\input\new_test.mp4, so replace it. And like the trim node, it gets the drag-and-drop + draggable timeline widget from the pack's frontend JS - drag a video in, scrub the handles, done.
One more thing: this node is loads frames into memory. max_frames of 4096 at full resolution is a lot of VRAM, so keep the cap tight unless you're actually using the frames. If all you want is audio, the leaner WAV/Media to Audio node is the better tool.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| media_path | STRING | E:\git\SupaVoice\input\new_test.mp4 | — |
| start_seconds | FLOAT | 0.000–86400 | — |
| end_seconds | FLOAT | 0.000–86400 | — |
| duration_seconds | FLOAT | 5.000–86400 | — |
| fps | FLOAT | 0.00–120 | — |
| width | INT | 00–8192 | — |
| height | INT | 00–8192 | — |
| max_frames | INT | 1201–4096 | — |
| audio_sample_rate | INT | 160008000–48000 | — |
| audio_channels | COMBO | stereo | 2 options: mono, stereo |
| output_prefix | STRING | supavoice_video | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |
| audio_path | STRING | — |
| metadata_json | STRING | — |
| fps | FLOAT | — |
| frame_count | INT | — |