Nodes/Kaola ACE-Step Music/ACE-Step Understand
ComfyUI Node

ACE-Step Understand

Reverse-engineer any song into a generation spec — ACE-Step Understand reads your audio

By kana112233·Created 7 months ago·Updated 6 months ago· 29
ACE-Step Understand
  • audio
  • analysis_text
  • caption
  • duration
  • bpm
  • keyscale
  • lyrics
checkpoint_dirAce-Step1.5
config_pathacestep-v15-turbo
lm_model_pathacestep-5Hz-lm-1.7B
target_duration30.00
deviceauto
languageauto
temperature0.3
top_k0
top_p0.90
repetition_penalty1.0
thinkingtrue

Understand is the "what am I actually listening to?" node. You feed it an audio file and it hands back a full breakdown: a caption describing the style, the lyrics, bpm, keyscale, duration, and a formatted analysis_text. In one pass it answers the questions you'd normally spend an evening trying to pin down by ear, and - here's the practical payoff - the outputs wire directly into the generation nodes as a spec. It's the analysis half of a clone loop: Understand a song you like, feed its caption/BPM/key into Text to Music, and generate in that same direction.

The interesting mechanic is that it doesn't just listen with a classifier. The node encodes your audio into ACE-Step's semantic "codes" using the DiT's audio encoder, then runs the language model's understand_music over those codes. That's why config_path is in the required inputs even though no music is being generated - the encoder needs a real model to produce the codes. The target_duration input tells the model what length to reference while analyzing.

The inputs that matter

  • audio - the track to analyze.
  • config_path - the model config used for encoding (acestep-v15-turbo default).
  • target_duration - reference length for analysis, 30s default.
  • language - a hint about the vocal language if you know it; helps the LLM transcribe.
  • temperature - the tooltip's advice is worth quoting: lower (0.0-0.3) is more precise, "try 0.1 for better accuracy." Default 0.3.
  • top_k / top_p / repetition_penalty - the usual sampling controls; the defaults already lean toward faithfulness.

Outputs: analysis_text (a formatted summary string), caption, duration (FLOAT), bpm (STRING), keyscale, lyrics.

Install

Shared pack install - nothing extra for this node beyond the standard model stack:

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

Restart ComfyUI after installing.

Where people get burned

Two realistic frustrations. First, the output is only as good as the encoder and LLM's judgment - BPM and key on a complex, tempo-shifting track can be off, and the README itself positions Understand as a starting analysis, not sheet music. Second, note that bpm comes back as a STRING here (unlike Create Sample's INT), so if you're wiring it into a node that expects a number, you'll need a conversion or a text node in between. For quickly capturing the direction of a track - the caption and tags - it's excellent, and that's the workflow worth building around it.

CategoryAudio/ACE-Step

Inputs (12)

NameTypeDefaultDescription
audioAUDIOThe audio signal to be analyzed.
checkpoint_dirCOMBOAce-Step1.5Directory containing ACE-Step model weights (DiT model).
config_pathCOMBOacestep-v15-turboSpecific model configuration to use (e.g., v1.5 turbo).
lm_model_pathCOMBOacestep-5Hz-lm-1.7BPath to the language model used for audio analysis and understanding.
target_durationFLOAT30.0010–600Target duration to reference during analysis.
deviceCOMBOautoComputing platform to run the model on.
languageoptCOMBOautoHint the model about the vocal language in the audio.
temperatureoptFLOAT0.30–2Sampling temperature. Lower (0.0-0.3) = more precise/faithful, Higher (0.5+) = more creative. Try 0.1 for better accuracy.
top_koptINT00–100Top-K sampling. 0 = disabled. Lower values (e.g., 20-50) can improve accuracy by limiting token choices.
top_poptFLOAT0.900–1Top-P (nucleus) sampling. 1.0 = disabled. Lower values (e.g., 0.8-0.9) can improve accuracy.
repetition_penaltyoptFLOAT1.00.5–2Repetition penalty. 1.0 = no penalty. Higher values (1.1-1.3) reduce repetitive lyrics.
thinkingoptBOOLEANtrueWhether to show the language model's Chain-of-Thought reasoning.

Outputs (6)

NameTypeDescription
analysis_textSTRING
captionSTRING
durationFLOAT
bpmSTRING
keyscaleSTRING
lyricsSTRING