Nodes/ComfyUI-AceStep_SFT/AceStep 1.5 SFT Generate
ComfyUI Node

AceStep 1.5 SFT Generate

The node that makes AceStep 1.5 SFT actually sound good in ComfyUI

By jeankassio·Created 6 months ago·Updated 4 months ago· 56
AceStep 1.5 SFT Generate
  • model
  • positive
  • negative
  • vae
  • latent_or_audio
  • model
  • vae
  • positive
  • negative
  • latent
  • audio
seed0
steps50
cfg7.0
sampler_nameeuler
schedulernormal
denoise1.00
duration60.0
infer_methodode
guidance_modeapg
batch_size1
latent_shift0.00
latent_rescale1.00
fade_in_duration0.0
fade_out_duration0.0
use_tiled_vaetrue
unload_models_after_generatefalse
voice_boost0.0
apg_eta0.00
apg_momentum-0.75
apg_norm_threshold2.5
guidance_interval0.50
guidance_interval_decay0.00
min_guidance_scale3.0
guidance_scale_text-1.0
guidance_scale_lyric-1.0
omega_scale0.00
erg_scale0.00
cfg_interval_start0.00
cfg_interval_end1.00
shift3.0

This is the payoff node - the one that turns a text prompt into actual music. If you've tried a stock AceStep 1.5 workflow in ComfyUI and felt the results were flat, this is the node the rest of the pack exists for. The author's pitch, from the announcement on r/comfyui, is basically "until now the SFT model in ComfyUI gave you not-very-good results; this replicates the official Gradio pipeline byte for byte." Community feedback backs it up: one early adopter called it a "huge improvement over the vanilla acestep 1.5 workflow."

What it actually does

AceStepSFTGenerate is the sampler plus the decoder in one node. Feed it the MODEL from the Model Loader (or a LoRA stack), the positive/negative conditioning from the TextEncode node, and optionally the VAE, and it runs flow-matching diffusion on a latent and hands you back an AUDIO output. Skip the VAE and you get the raw latent instead - useful if you want to inspect or post-process before decoding.

The one thing people miss: audio only appears when you connect the VAE. The node passes model, vae, positive, and negative straight through as outputs too, so you can chain Generate after Generate or tee the conditioning into a second render.

The guidance modes are the whole story

AceStep ships with three classifier-free guidance flavors, and the default apg (Adaptive Projected Guidance) is the reason this pack sounds different from the vanilla workflow. It smooths the conditional difference with a momentum buffer, clips it against a norm threshold, then projects out the collinear component that normally just amplifies noise. The result is cleaner, more stable audio at the same settings. adg is the angle-based variant for aggressive style distortion; standard_cfg is plain CFG, kept around as a comparison baseline. If you only ever change one thing, leave it on apg.

Inputs worth touching

  • model, positive, negative - the required wires from Model Loader / Lora Loader and TextEncode.
  • steps (default 50) and cfg (default 7.0) - the author's recommended starting point is euler / normal at 50 steps. Don't drag these toward Turbo-style low numbers; SFT is a full, non-distilled model.
  • denoise - 1.0 is a fresh generation. Set it below 1.0 and wire something into latent_or_audio (it accepts AUDIO or LATENT) and you're doing img2img-style refinement. Community experiments on AceStep 1.5 audio-to-audio tend to live in the 0.25–0.7 range; the README suggests 0.5–0.7 to keep the original character.
  • duration (seconds, 0 = derive from the input audio), infer_method (ode vs sde), and batch_size (1–16, start at 1–2 and check your VRAM).

The long tail of optional knobs - apg_momentum, apg_norm_threshold, split guidance_scale_text/guidance_scale_lyric, omega_scale, erg_scale, cfg_interval_start/end, shift - is for when you're chasing a specific sound. You will not need them on day one.

When things go wrong

The README has a genuinely useful troubleshooting section. Clipping/distortion → push latent_shift negative (e.g. −0.1) to cut amplitude before the VAE decodes. Results jumping all over the place between seeds → raise apg_norm_threshold toward 3.0–4.0 for more aggressive gradient clipping. Mild vocal hiss → the README says it's usually a generation artifact and that APG plus a few more steps beats cranking cfg. Slow generation → lower batch_size, drop to ~20 steps, or try the karras scheduler. And keep in mind the practical ceiling: the author recommends treating ~240 seconds as the max duration on consumer GPUs.

Installing it

Install once for the whole pack - every node here ships in the same repo:

cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/ComfyUI-AceStep_SFT.git

Or search "AceStep" in ComfyUI Manager and install ComfyUI-AceStep_SFT from there. Either way you still have to grab the model files: the diffusion model (the merged SFT+Turbo is recommended over the pure SFT), the two Qwen text encoders, and the audio VAE. They live in ComfyUI/models/diffusion_models, text_encoders, and vae, and the download links are in the README. Restart, and the whole family shows up under audio/AceStep SFT.

Categoryaudio/AceStep SFT

Inputs (35)

NameTypeDefaultDescription
modelMODELAceStep 1.5 diffusion model (from Load Diffusion Model or with LoRA applied).
positiveCONDITIONINGPositive conditioning from AceStep 1.5 SFT TextEncode.
negativeCONDITIONINGNegative conditioning from AceStep 1.5 SFT TextEncode.
seedINT00–18446744073709550000
stepsINT501–200Diffusion inference steps.
cfgFLOAT7.01–20Classifier-free guidance scale.
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOnormal9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1Denoise strength. 1.0 = full generation. < 1.0 requires latent_or_audio.
durationFLOAT60.00–600Duration in seconds. Set to 0 for auto from latent_or_audio.
infer_methodCOMBOodeode = deterministic diffusion. sde = stochastic (remaps sampler).
guidance_modeCOMBOapgAPG = Adaptive Projected Guidance. ADG = Angle-based Dynamic Guidance. standard_cfg = normal CFG.
vaeoptVAEVAE for decoding latents to audio. Audio output requires this.
latent_or_audiooptAUDIO,LATENTBase input for refinement (img2img). Use denoise < 1.0.
batch_sizeoptINT11–16Number of audios to generate in parallel.
latent_shiftoptFLOAT0.00-0.2–0.2Additive shift on latents before VAE decode.
latent_rescaleoptFLOAT1.000.5–1.5Multiplicative scale on latents before VAE decode.
fade_in_durationoptFLOAT0.00–10
fade_out_durationoptFLOAT0.00–10
use_tiled_vaeoptBOOLEANtrueUse tiled VAE for long audio / low VRAM.
unload_models_after_generateoptBOOLEANfalseUnload models from memory after generation.
voice_boostoptFLOAT0.0-12–12Voice boost in dB.
apg_etaoptFLOAT0.00-10–10APG eta: parallel component retention.
apg_momentumoptFLOAT-0.75-1–1APG momentum buffer coefficient.
apg_norm_thresholdoptFLOAT2.50–15APG norm threshold for gradient clipping.
guidance_intervaloptFLOAT0.50-1–1Guidance interval width. -1 = use legacy cfg_interval_start/end.
guidance_interval_decayoptFLOAT0.000–1
min_guidance_scaleoptFLOAT3.00–30
guidance_scale_textoptFLOAT-1.0-1–30Split text guidance. Active when both text and lyric > 1.0.
guidance_scale_lyricoptFLOAT-1.0-1–30Split lyric guidance. Active when both text and lyric > 1.0.
omega_scaleoptFLOAT0.00-8–8
erg_scaleoptFLOAT0.00-0.9–2
cfg_interval_startoptFLOAT0.000–1
cfg_interval_endoptFLOAT1.000–1
shiftoptFLOAT3.00–5Timestep schedule shift. ACEStep15 default is 3.0.

Outputs (6)

NameTypeDescription
modelMODEL
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
audioAUDIO