Load AudioX
ComfyUI can't handle audio I/O; Load AudioX is the front door it's missing
- audio
- converted_path
ComfyUI's audio story has always been bolted on. The models got good - you can generate narration, foley, even full songs locally now - but the plumbing around sound stayed thin. If your generated video needs a real soundtrack, a voiceover you recorded, or a clip you trimmed, the boring middle part is where things fall apart. Load AudioX is the boring middle part, done properly. It's one node from the WorkflowX pack (a solo dev's all-in-one toolkit - loader, configurator, prompt library, and canvas utilities in one install), and it quietly fixes a gap you'll hit the second you want audio on your video.
What it actually does
Think of it as the audio cousin of the pack's Load Video X. You pick a file - any common container, or even a video, whose first audio stream it extracts - and you get a waveform on the node face with draggable trim handles. Trim it, pick channels and sample rate, run a repair pass, and out the other end comes a clean AUDIO tensor plus an MP3 or WAV file written from the exact same master. No separate encode-and-save chain, no guessing what the downstream node expects.
The source file is never touched. Everything is decoded to a float32 PCM master, all processing happens on that in memory, then FFmpeg encodes the MP3/WAV companion. That single master → two outputs design is the whole point: whatever you see in the graph is byte-identical to what you'd play from the file on disk.
The repair path is the interesting bit
Most loaders just fail on a corrupt file. Load AudioX tries normal PyAV decode first, then retries with FFmpeg in a tolerant mode - generated timestamps, ignored indexes, corrupt-packet discard - which salvages damaged MP3 frames and broken-duration files that would make a normal loader throw. The structured AAC/M4A repair is deliberately narrow: only an audio-only, single-track, unencrypted file with a provably truncated sample table gets reconstructed, and it has to decode cleanly to the expected length or it's rejected rather than guessed. That cautiousness is refreshing. It means "I can't fix this" beats "here's a silent, subtly corrupted file."
Inputs and outputs that matter
The whole node is driven by UI state, so it has just one graph input worth knowing:
seconds(FLOAT, optional) - wire this up to lock the output to a fixed duration. When the source is shorter it pads with silence or loops; it's how you force a clip to exactly fill a video segment, and it overrides the on-node length control.
Both outputs are useful:
audio(AUDIO) - the processed PCM master in ComfyUI's standard audio dictionary (waveform+sample_rate). This is what you feed to anything that takes anAUDIOsocket - the pack's own Save Video X has anaudioinput for exactly this, and VideoHelperSuite-style nodes accept the same type.converted_path(STRING) - the absolute path to the encoded MP3 or WAV. Handy when a tool wants a filename rather than a tensor.
Install
Same as any WorkflowX node - you get this as part of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/haroonaslam/WorkflowX-Configurator
Restart ComfyUI and hard-refresh the browser (Ctrl+Shift+R) so the frontend loads. Or use ComfyUI Manager and search "WorkflowX-Configurator". The good news: no model downloads and no extra Python dependencies - the requirements file is empty. It leans on FFmpeg, which ComfyUI already bundles via imageio_ffmpeg, plus PyAV if you have it.
Common issues
The big one is FFmpeg. The node raises a clear error if no executable is found, but if your ComfyUI install is missing it, that's the first thing to check. After an update, a missing node usually means you didn't restart, or the browser is serving stale extensions - check /object_info for WorkflowX_LoadAudioX. And don't panic when the converted file seems to vanish: with permanent save off (the default), it writes to a temp area and overwrites atomically on each run. Turn on permanent save in the gear if you need the file to survive.
One honest caveat: this is a niche node in a niche pack, so you won't find a big community around it - but the mechanism is sound, and for a workflow that needs real audio attached to video, it beats gluing three fragile nodes together.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| secondsopt | FLOAT | Optional fixed output duration. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | Trimmed and fully processed PCM audio for downstream ComfyUI nodes. |
| converted_path | STRING | Absolute path to the converted MP3 or WAV file. |