Save Audio (High Quality)
24-bit WAV Out of ComfyUI
- audio
ComfyUI will happily generate you a song with ACE-Step, a foley track with MMAudio, or a voice with any of the TTS packs - and then hand you a file. The question nobody's default save node answers well is what kind of file. Comfy's built-in Save Audio takes an audio tensor and a filename and dumps a float WAV with no say in the encoding details. That's fine for previewing. It's not fine when the track is heading to a DAW for mastering, a video edit, or a client.
HighQualityAudioSaver - displayed as "Save Audio (High Quality)" - is the version that lets you pick a real delivery format: WAV or AIFF, 16/24/32-bit float, and a sample rate up to 192kHz. It's the one you reach for when the audio leaving ComfyUI is a finished artifact, not a draft.
How it works
The pack is a single file (__init__.py) and a single node. It takes a standard ComfyUI AUDIO tensor - the same waveform + sample_rate dict every audio node emits, whether it came from a VAE Decode Audio or a TTS pack - and does three things:
- Normalizes the tensor to
[batch, channels, samples], so mono, stereo, and batched audio all write correctly. - Resamples if needed. If the incoming rate doesn't match your
sample_ratechoice, it interpolates the samples with PyTorch (torch.nn.functional.interpolate, linear mode). Upsampling is safe; this is not a proper studio resampler, so don't use it to downsample 192k material to 44.1k - do that in your DAW or it'll alias. - Writes to disk with libsndfile via the
soundfilePython binding, mapping your bit-depth choice to real encoding subtypes (PCM_16, PCM_24, FLOAT).
Files land in ComfyUI/output using the standard counter-suffixed naming, and the node is is_output_node: true, so the finished file also shows up as a playable preview in the UI. There's no output socket - it's a terminal node, not something you wire onward.
The inputs that matter
Only five inputs, and honestly three of them are the whole point:
audio- the AUDIO tensor from your generation node.bit_depth- 16-bit, 24-bit (default), or 32-bit float. 24-bit is the mastering standard for delivery; 32-bit float is what DAWs internally use if you plan more processing.sample_rate- Input Native, 44.1k, 48k, 88.2k, 96k, 192k. Pick Input Native unless you have a reason to convert - see the trap below.format- WAV or AIFF. WAV unless some legacy workflow demands AIFF.filename_prefix- defaulthq_audio, prepended to the counter suffix.
Installing it
The usual two paths:
# ComfyUI Manager: search "ComfyUI-HQ-Audio" and hit Install, then restart
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/yanivkarta/ComfyUI-HQ-Audio
# restart ComfyUI
No model files to download - there's nothing to fetch. Its only dependency, soundfile, is already a core ComfyUI requirement, so on a normal install it just works.
Where people get burned
- The default is 192kHz. If you just drag the node in and hit go, everything gets resampled up to 192kHz - which multiplies file size with zero audible benefit for anything headed to an MP3, a video, or even most streaming. If you don't have a real reason to be at 192k, set
sample_rateto Input Native. The README's talk of "192Khz or higher" and "DSP support" is more marketing than hardware requirement - the dropdown tops out at 192k and no special device is involved. - Downsampling aliases. Linear interpolation on the way down is a shortcut, not a resampler. Leave the rate alone in ComfyUI and downsample properly later.
- Stripped Comfy installs. If you've pruned core requirements,
soundfilemight be missing - the pack has norequirements.txtof its own, so the fix ispip install soundfile.
For a one-node pack with zero GSC traffic and no community chatter behind it, this is refreshingly unpretentious: it does one job, writes real files, and gets out of the way. If you deliver audio out of ComfyUI, it's the sane default.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| filename_prefix | STRING | hq_audio | — |
| format | COMBO | WAV | 2 options: WAV, AIFF |
| sample_rate | COMBO | 192000 | 6 options: Input Native, 44100, 48000, 88200, 96000, 192000 |
| bit_depth | COMBO | 24-bit | 3 options: 16-bit, 24-bit, 32-bit float |
Outputs (0)
No outputs