Nodes/Stable Audio 3 Editing/Stable Audio 3 Audio-to-Audio
ComfyUI Node

Stable Audio 3 Audio-to-Audio

Remix any track with Stable Audio 3 — no API, just a denoise knob

By pavel-zinchenko·Created 21 days ago·Updated 21 days ago· 1
Stable Audio 3 Audio-to-Audio
  • positive
  • negative
  • vae
  • audio
  • positive
  • negative
  • latent
seconds_total30.0

ComfyUI's built-in Stable Audio 3 support is text-to-audio. You type "cinematic riser," it hands you thirty seconds of riser, done. That's great for making things from nothing - it's useless the moment you already have a track and want a version of it: a bossa nova drum loop turned into house, a sample re-orchestrated, a piece of foley restyled to fit a scene. That's the gap this node fills. It encodes an existing clip into the Stable Audio 3 latent space and lets the same sampler you already use rewrite it, with one denoise number controlling how much actually changes. No API, no Stability key, nothing remote. It's Stable Diffusion img2img, but for sound.

The workflow shape

Everything else in the chain is stock ComfyUI core. You load the SA3 checkpoint, you describe the new sound in text, and the path is:

LoadAudio → this node → KSamplerVAEDecodeAudioPreviewAudio

The only new piece is the box in the middle, which is exactly what makes the "to audio" direction possible.

How it works

The node takes your source clip and beats it into what the Stable Audio 3 VAE expects. It resamples whatever you fed it to 44.1 kHz, folds mono up to stereo (and truncates anything past two channels), then crops or zero-pads the result to land exactly on the model's 4096x temporal compression - roughly one latent step every 0.09 seconds. That aligned waveform gets VAE-encoded into a latent, and your positive/negative conditioning gets stamped with the output duration so the model knows how long the result should be.

Two honest notes on the mechanism. First, the source isn't injected as conditioning the way image img2img concats pixels - here the encoded latent is what you feed the sampler directly, so denoise is doing all the heavy lifting. Second, this pack rides ComfyUI's native Stable Audio 3 support end to end: checkpoint loader, the T5 text encoder, the VAE, the audio decoder. It adds no Python dependencies and downloads nothing, which for an audio pack is practically a miracle - most of them drag a transformers/torch conflict in with them.

The inputs that matter

The boring ones first: positive and negative are CONDITIONING from CLIPTextEncode (negative can just be an empty prompt - the example workflow does exactly that), vae comes off the SA3 checkpoint loader, and audio from LoadAudio.

The one you'll actually be fiddling with is seconds_total (default 30, range 1–384). It's the target length in seconds. Source longer than that gets cut; source shorter gets padded. Set it to what you want the output to be, not what the source currently is.

Outputs: positive, negative, and latent. The first two and the latent all wire into the KSampler. That's the whole thing.

Sampling that works

The README points at ComfyUI's own SA3 settings, and they're a fine starting place:

8 steps · CFG 1 · sampler: lcm · scheduler: simple · denoise: 0.8

denoise is your strength dial, img2img-style. 0.8 is a solid rewrite - clearly a new take on the material. Push toward 0.3–0.5 for a subtle variation that stays recognizably the same take. Start at 0.8 and adjust by feel, because "feel" is genuinely the metric here.

Installing it and the models it needs

ComfyUI Manager → Custom Nodes Manager → search "stable audio 3 edit" and install, or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/pavel-zinchenko/comfyui-stable-audio-3-edit

Restart ComfyUI after. Two things the README won't save you from:

  1. You need a recent ComfyUI. This pack is written against the new native node API (requires-comfyui >= 0.33.0), so on an older build the nodes simply won't register. If they're missing after install, update ComfyUI first.
  2. The models are on you. Nothing auto-downloads. Grab them from Comfy-Org/stable-audio-3 on Hugging Face: stable_audio_3_medium.safetensors into models/checkpoints/ and t5gemma_b_b_ul2.safetensors into models/text_encoders/.

Where people get burned

The node validates the VAE hard: it needs the SA3 VAE's signature (44.1 kHz, 256 latent channels, 4096x compression), and it'll throw a clear error if you hook up anything else. The old Stable Audio 1 model is a no-go, and seconds_total past 384 is rejected outright. If you're staring at an error mentioning "Stable Audio 3 VAE," that's the tell - you've got the wrong checkpoint loaded, or an old one.

Categorymodel/conditioning/stable audio 3

Inputs (5)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
audioAUDIO
seconds_totalFLOAT30.01–384

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT