Nodes/Kaola ACE-Step Music/ACE-Step Extract (Base Only)
ComfyUI Node

ACE-Step Extract (Base Only)

Pull vocals, drums, or bass out of a mixed track — ACE-Step Extract is stem separation by diffusion

By kana112233·Created 7 months ago·Updated 6 months ago· 29
ACE-Step Extract (Base Only)
  • src_audio
  • audio
  • audio_path
  • metadata
track_namevocals
seed-1
inference_steps50
guidance_scale7.00
use_adgfalse
cfg_interval_start0.00
cfg_interval_end1.00
audio_formatflac
checkpoint_diracestep-v15-base
lm_model_pathacestep-5Hz-lm-1.7B
deviceauto

Most stem separators (the "remove vocals" tools you've seen) run a dedicated network trained for one job. ACE-Step Extract is different: it uses the base ACE-Step diffusion model to reconstruct a single instrument track from a mixed song. You pick a stem - vocals, bass, drums, guitar, keyboard, strings, synth, percussion, brass, woodwinds, backing vocals, or FX - and it generates that track as if it were the original audio being re-rendered with only that instrument. The "(Base Only)" in the name is the whole game: this requires the acestep-v15-base model and refuses to behave on turbo.

Why diffusion-based extraction instead of the classic approach? Because the base model has enough musical understanding to separate by semantic identity, not just frequency masking. Practically, that means cleaner, more musically coherent stems on dense mixes - and it means you're paying diffusion costs for the privilege. Each extraction runs 50-ish steps, so this is a batch-it-and-walk-away node, not a live-tool node.

How it works

The node saves your input audio to a temp WAV, then calls ACE-Step's generation with a task_type of extract, an instruction like "Extract the VOCALS track from the audio," and thinking=False - deliberately skipping the language model so the source audio feeds the sampler directly as context. The DiT denoises the requested stem. Outputs are the standard trio: audio (→ Save Audio), audio_path, and metadata.

The inputs that matter

  • src_audio - the mixed track, from Load Audio.
  • track_name - the stem to extract. The 12 options above.
  • inference_steps - default 50, range 20-100. This is the quality lever and the cost lever.
  • guidance_scale - CFG, default 7. Higher = more aggressive separation.
  • use_adg - Adaptive Dual Guidance; "may improve quality," costs more time.
  • cfg_interval_start / cfg_interval_end - the fraction of the denoise schedule CFG applies over. Leave at 0→1 unless you know why you're changing it.
  • checkpoint_dir - here it's forced to acestep-v15-base; that's the only choice, and it's a hint: turbo won't do this.

Install

Same pack-wide setup, with one important addition - you need the base model downloaded, not just turbo:

git clone https://github.com/ACE-Step/ACE-Step-1.5.git
cd ACE-Step-1.5 && pip install -e .
cd ComfyUI/custom_nodes
git clone https://github.com/kana112233/ComfyUI-kaola-ace-step.git
cd ComfyUI-kaola-ace-step && pip install -r requirements.txt
huggingface-cli download ACE-Step/Ace-Step1.5 --local-dir ComfyUI/models/Ace-Step1.5

The full ACE-Step 1.5 model set includes the base DiT; if you only grabbed the turbo weights to save disk, Extract (and Lego and Complete) will fail to find their model.

Where people get burned

The #1 mistake is running it with the turbo model selected elsewhere in the workflow and wondering why Extract errors or half-works - the code comment is blunt: only works with acestep-v15-base, NOT turbo. The #2 gotcha is expecting studio-perfect separation. Diffusion-based extraction is good, not magic; on dense, loud mixes stems can come back with artifacts, and each stem costs a full base-model diffusion run. If you're doing bulk stem work, the classic dedicated separators are faster. If you want stems that a generative model considers "real music," this is the tool.

CategoryAudio/ACE-Step

Inputs (12)

NameTypeDefaultDescription
src_audioAUDIOSource audio to extract track from.
track_nameCOMBOvocalsTrack to extract.
seedoptINT-1-1–18446744073709550000Random seed. -1 for random.
inference_stepsoptINT5020–100Diffusion steps. Higher = better quality.
guidance_scaleoptFLOAT7.001–15CFG scale. Higher = more prompt adherence.
use_adgoptBOOLEANfalseAdaptive Dual Guidance. May improve quality.
cfg_interval_startoptFLOAT0.000–1CFG start ratio.
cfg_interval_endoptFLOAT1.000–1CFG end ratio.
audio_formatoptCOMBOflacOutput audio format.
checkpoint_diroptCOMBOacestep-v15-baseModel directory.
lm_model_pathoptCOMBOacestep-5Hz-lm-1.7BLanguage model.
deviceoptCOMBOautoCompute device.

Outputs (3)

NameTypeDescription
audioAUDIO
audio_pathSTRING
metadataSTRING