ACE-Step Extract (Base Only)
Pull vocals, drums, or bass out of a mixed track — ACE-Step Extract is stem separation by diffusion
- src_audio
- audio
- audio_path
- metadata
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 toacestep-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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| src_audio | AUDIO | Source audio to extract track from. | |
| track_name | COMBO | vocals | Track to extract. |
| seedopt | INT | -1-1–18446744073709550000 | Random seed. -1 for random. |
| inference_stepsopt | INT | 5020–100 | Diffusion steps. Higher = better quality. |
| guidance_scaleopt | FLOAT | 7.001–15 | CFG scale. Higher = more prompt adherence. |
| use_adgopt | BOOLEAN | false | Adaptive Dual Guidance. May improve quality. |
| cfg_interval_startopt | FLOAT | 0.000–1 | CFG start ratio. |
| cfg_interval_endopt | FLOAT | 1.000–1 | CFG end ratio. |
| audio_formatopt | COMBO | flac | Output audio format. |
| checkpoint_diropt | COMBO | acestep-v15-base | Model directory. |
| lm_model_pathopt | COMBO | acestep-5Hz-lm-1.7B | Language model. |
| deviceopt | COMBO | auto | Compute device. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_path | STRING | — |
| metadata | STRING | — |