π Audio Load
Load a wav, mp3, or flac into your graph β as raw samples, not a decoded dict
- AUDIO
- SAMPLE_RATE
If you've been living in pure image-land, welcome to the audio side: ComfyUI core has no audio loader, so every audio pipeline starts with a pack that adds one. ACE_AudioLoad is Ace Nodes' entry point - a dropdown of your audio files in the input folder, plus an upload button, that reads the file with soundfile and hands you the samples and the sample rate. It's the audio equivalent of Load Image, with one important difference you need to know about before you wire anything.
It's part of π
Ace Nodes (hay86/ComfyUI_AceNodes), the usual one-author grab-bag.
How it works
The dropdown lists wav, mp3, and flac files from ComfyUI/input, and the JS widget lets you upload a file straight into that folder from the node. When the graph runs, it reads the file via soundfile and returns:
AUDIO- the raw audio samples as a list of floats (interleaved, in the -1..1 range).SAMPLE_RATE- an integer, e.g. 44100 or 48000.
The samples are hashed for change detection and validated on input, so ComfyUI re-runs when the file changes. Both outputs are meant to feed this pack's ACE_AudioSave and ACE_AudioPlay, which expect the same "samples + sample rate" pair.
The trap: this pack is inconsistent about audio format
Here's the thing that will waste an evening. ACE_AudioLoad returns samples and a separate sample rate. But ACE_AudioCrop - the pack's own crop node - expects the standard ComfyUI audio dict, {"waveform": tensor, "sample_rate": int}, the format VideoHelperSuite and other audio packs use. So the natural Load β Crop chain doesn't actually type-match: the crop node's audio["waveform"] lookup will fail on a raw list. AudioSave/AudioPlay are on the Load side of the split; AudioCrop is on the dict side. Plan your chain accordingly - if you want to crop what you load, you'll need a converter or another audio source.
Installing
ComfyUI Manager β search ComfyUI_AceNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/hay86/ComfyUI_AceNodes
Then restart. This node needs soundfile from the pack's requirements.txt, and Manager installs the whole list anyway (transformers, rembg, insightface, openai, boto3, oss2, β¦). The heavy tax comes with the pack whether you use two nodes or twenty.
Where you'll use it
TTS pipelines (save the generated voice), music loops (play or slice them), or feeding audio alongside a video render. The upload-from-node button is genuinely convenient - it saves the file-explorer trip. Just keep the format caveat in mind, and if your workflow is mostly dict-based audio, weigh whether a VideoHelperSuite-style loader would be a smoother fit.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | COMBO | 0 options: |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| AUDIO | * | β |
| SAMPLE_RATE | INT | β |