Load Audio (Soze)
The node that actually gets sound into ComfyUI
- Audio
- Audio_Filename_Path
- Audio_Filename
- Audio_Filename_No_Ext
- Audio_Changed
- status
Audio stopped being an afterthought in ComfyUI the moment LTX 2.3 shipped native sound and people started layering MMAudio onto Wan footage - add a soundtrack, do a lip-sync, score a music video. But before any of that, you have to get audio into the graph. Load Audio, the input node of the ComfyUI-SoundHub pack, is the unglamorous first step: it reads a file from your input folder and turns it into a waveform tensor plus its sample rate, with trimming, channel conversion, and volume all folded in.
How it works
The node scans ComfyUI/input/ for .wav, .mp3, .ogg, and .flac files and hands you a dropdown of what it finds - you can also upload a file straight from the widget. Pick one and it runs torchaudio.load(), converts to float32, and gives you a [channels × samples] tensor along with the sample rate.
Two details make it nicer than it looks. First, IS_CHANGED hashes the actual file bytes, so if you drop a new version of the audio into your input folder, the node re-executes without you having to bump anything - genuinely handy when you're iterating on a clip. Second, the preview toggle (on by default) puts an audio player on the node pointing at the source file, so you can confirm you loaded the right thing before it goes anywhere.
The inputs that matter
You'll actually touch most of these, but three deserve a real explanation.
- audio - the file dropdown. Only files sitting in
input/show up here; that's a common "where is my file" moment. - start_time / duration - this is the pair people get wrong. If
duration > 0, it slices fromstart_timefor that many seconds. Ifdurationis0butstart_timeis set, it trims fromstart_timeto the end of the file. So: want a 5-second section? Set both. Just want the intro gone? Setstart_timeand leavedurationat 0. - channels -
auto(leave as-is),mono(average the two channels together), orstereo(duplicate mono to both channels). Auto is right for most things; pick mono when you're feeding analysis or voice work. - volume - multiplies the waveform, 0 to 5, default 1. Crank it to 5 and you'll clip; it's an input trim, not a mastering tool.
What comes out
Two outputs: audio (the tensor) and sample_rate. Wire both into Save Audio or Preview Audio from the same pack and you're done. One honest caveat: this AUDIO type is a raw waveform - it is not LTX's audio-latent type, so don't expect it to plug straight into an LTX audio VAE encoder. If your downstream node wants a different audio type, it won't accept this, and that's a type mismatch, not a bug.
Installing it
It ships in the ComfyUI-SoundHub pack, same install for all three nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Yuan-ManX/ComfyUI-SoundHub.git
cd ComfyUI-SoundHub
pip install -r requirements.txt
Restart ComfyUI and you'll find the "SoundHub" category. ComfyUI Manager users can just search "ComfyUI-SoundHub". No model files to download. Note that requirements.txt lists librosa, which the code never imports - it's dead weight, and if it ever fails to install you can delete that line.
Troubleshooting
- File not in the dropdown - it has to live in
input/, notoutput/. Drop it there and refresh. - Wrong section loaded - that's the
start_time/durationinterplay above; remember duration 0 + start_time set means "to the end." - Everything's too quiet or distorted - you pushed
volumetoo far, or forced stereo/mono that didn't match the source.
It's a plumbing node, but it's the pipe everything else flows through.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | COMBO | 1 options: |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| Audio | AUDIO | — |
| Audio_Filename_Path | STRING | — |
| Audio_Filename | STRING | — |
| Audio_Filename_No_Ext | STRING | — |
| Audio_Changed | BOOL | — |
| status | STRING | — |