Save Audio
ComfyUI's save button for audio, minus the ceremony
- audio
- sample_rate
Once you've generated audio in ComfyUI - LTX 2.3's native sound, or MMAudio bolted onto a Wan clip - the awkward part begins: getting the thing out of the graph and onto disk. That's the whole job of Save Audio, the output node of the ComfyUI-SoundHub pack. It takes the audio tensor plus a sample rate and writes a real file to ComfyUI/output/, with a filename you actually control. There's no cleverness here, and there doesn't need to be.
How it works
The mechanism is about as direct as it gets. It's an OUTPUT_NODE that calls torchaudio.save() with the waveform you feed it, the sample_rate input, and whatever format you picked. Files land in your output folder as {prefix}_{timestamp}_{counter}.wav (or .mp3/.ogg/.flac), with a counter so a fresh run never overwrites an old one.
One thing worth knowing: the node's IS_CHANGED returns a constant that never matches, so ComfyUI treats every execution as new and always writes a file. That's the right behavior for a save node - you never get silently skipped output - but it means re-running a workflow you're not sure about will pile up files in your output directory. Old audio collecting dust is a you problem, not a node problem.
The inputs that matter
There are four, and you'll set two of them most of the time.
- audio - the pack's
AUDIOtensor. Anything that outputs that type feeds it: Load Audio, or another SoundHub node. - sample_rate - a separate input, and this is the trap. Save Audio does not infer the rate from the audio. If your audio came from Load Audio you get
sample_rateout the same node and wire it straight in. If it came from somewhere else, you have to supply it, and a missing or zero rate makes the node raise a "Invalid sample rate" error. - filename_prefix - defaults to
ComfyUI_Audio. The tooltip promises%date:yyyy-MM-dd%formatting for dated names, and a/in the prefix creates a subfolder inside your output dir, somusic/final_takeworks. - format -
wav,mp3,ogg, orflac.wavis the safe default and what you should start with.
Installing it
SoundHub is a small pack with no model downloads - nothing to fetch from HuggingFace, no checkpoints, just code and Python packages. The README's path is the reliable one:
cd ComfyUI/custom_nodes
git clone https://github.com/Yuan-ManX/ComfyUI-SoundHub.git
cd ComfyUI-SoundHub
pip install -r requirements.txt
Then restart ComfyUI. If you use ComfyUI Manager, you can search "ComfyUI-SoundHub" there instead and let it handle the clone.
One dependency note from reading the source: requirements.txt lists librosa, which is a heavy pull (it drags in numba and friends) and which the shipped code never actually imports - the nodes only need torch, torchaudio, and numpy, which you almost certainly already have. If the pip install step chokes on librosa, comment that line out and carry on.
Troubleshooting
- MP3 (or ogg/flac) save fails while wav works - this is torchaudio's encoding backend, not the node. Torchaudio only writes compressed formats if it has an ffmpeg or sox backend available. If wav saves fine and mp3 errors, that's your environment, and the pragmatic fix is to save wav and convert afterward.
- Files not showing up - check
ComfyUI/output/(notinput/), and remember every run writes a new timestamped file, so sort by newest. - "Invalid sample rate" - feed the
sample_rateoutput from Load Audio instead of guessing.
It's not flashy, but for the price of one node it turns "where did my audio go" into a solved problem.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | The audio to save. | |
| sample_rate | SAMPLE_RATE | The sample rate of the audio. | |
| filename_prefix | STRING | ComfyUI_Audio | The prefix for the file to save. Can include formatting like %date:yyyy-MM-dd% |
| format | COMBO | wav | Audio format to save as |
Outputs (0)
No outputs