Nodes/ComfyUI-ACEStep/🎡 ACE-Step 1.5XL Edit Audio
ComfyUI Node

🎡 ACE-Step 1.5XL Edit Audio

Change one section of a song and keep the rest identical

By starsFridayΒ·Created 4 months agoΒ·Updated 4 months agoΒ· 4
🎡 ACE-Step 1.5XL Edit Audio
  • audio
  • vae
  • latent
  • source_latent
  • seconds
  • summary
β—„edit_start_seconds0.00β–Ί
β—„edit_end_seconds0.00β–Ί
β—„edit_strength1.00β–Ί

The track is 90% there, but the second verse has the wrong words. Edit Audio is the node for that moment: mask a time range, change your lyrics or tags on the text encoder, and regenerate only that window - everything before and after comes back untouched. Where Repaint is "fix this section as-is," Edit is "fix this section with new instructions." Same mask mechanics, different intent, and that intent is why it exists as its own node.

In practice the two are nearly interchangeable in the graph - Edit takes the same inputs and the source even shows it delegating to the same masking routine. The distinction is workflow shape: with Edit, the prompt you set on the text encoder changes for the same run, so the masked region gets regenerated to match the new lyrics or style. The pack's README calls it out plainly: "masks a time range for regeneration with changed tags or lyrics." Keep that pairing in your head - change the prompt, then run.

How it works

It encodes your audio with the ACE 1.5 VAE, converts edit_start_seconds/edit_end_seconds into latent frames (25 fps), and writes a noise_mask over that range with intensity edit_strength. The sampler regenerates only the masked frames. edit_strength is the dial that separates "total rewrite of the section" (1.0) from "keep the section's bones, adapt them" (lower values) - and it's the lever you'll actually tune, because at full strength the seams get obvious.

The inputs and outputs

  • audio - your source clip.
  • vae - the ACE 1.5 VAE.
  • edit_start_seconds / edit_end_seconds - the window to rewrite.
  • edit_strength - 0–1, how thoroughly the region is redrawn (default 1).

Outputs: latent (masked latent β†’ KSampler), source_latent (the unchanged encode for A/B comparison), seconds (full clip length - keep the text encoder's duration in step with it), and summary (the masked range + strength).

Install

ComfyUI Manager ("ComfyUI-ACEStep") or:

cd ComfyUI/custom_nodes
git clone https://github.com/starsFriday/ComfyUI-ACEStep.git

then restart. No pip deps of its own. Models come from the ACE-Step 1.5 repo (acestep_v1.5_xl_turbo_bf16.safetensors, a Qwen ACE CLIP, ace_1.5_vae.safetensors); this is the XL tier at ~12GB+ VRAM.

Gotchas

The "change the prompt" half is easy to forget - the node masks a region, but it's your text encoder that supplies the new instructions, so Edit without a prompt change is just Repaint with extra steps. The other real-world trap is expectations on vocals: ACE-Step's vocals are its weak suit across the board, so rewriting a vocal line to new lyrics often lands closer to "new melody, approximate words" than a clean re-sing. Tune edit_strength down toward 0.6–0.8 and pair it with a lower sampler denoise to keep the section recognizably part of the same song. And set end_seconds to 0 when you want to edit through to the end of the clip - the backward-range error is the node's way of stopping you from a nonsense mask.

Categoryaudio/ACE-Step 1.5 XL

Inputs (5)

NameTypeDefaultDescription
audioAUDIOβ€”
vaeVAEβ€”
edit_start_secondsFLOAT0.000–10000β€”
edit_end_secondsFLOAT0.000–10000β€”
edit_strengthFLOAT1.000–1β€”

Outputs (4)

NameTypeDescription
latentLATENTβ€”
source_latentLATENTβ€”
secondsFLOATβ€”
summarySTRINGβ€”