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

ACE-Step Captioner

Point it at a song, get back a full music description — ACE-Step Captioner is text-to-music in reverse

By kana112233·Created 7 months ago·Updated 6 months ago· 29
ACE-Step Captioner
  • audio
  • caption
  • style_tags
  • full_description
model_idACE-Step/acestep-captioner
deviceauto
dtypeauto
custom_prompt*Task* Describe this audio in detail
max_new_tokens1024
temperature0.3
top_p0.90
top_k50
repetition_penalty1.1
seed0
chunk_length_s30

If Text to Music turns words into audio, the Captioner turns audio back into words - and unusually well. Give it any track and it returns three things: a one-sentence caption, a comma-separated pile of style_tags (genre, instruments, vibe), and a full_description that reads like a producer's notes. The README claims it beats Gemini Pro 2.5 on music description tasks, which is the kind of claim you should treat skeptically, but the model is real: a Qwen2.5-Omni-7B variant trained specifically for music captioning.

Why would you want this? Three practical jobs. Reverse-engineering prompts for songs you like (feed the caption back into Text to Music). Building a dataset or tagging system for your own generated tracks. And auto-captioning a pile of audio you've accumulated - the chunked processing means it can handle long files, not just 30-second clips.

Like the Transcriber, it shares the same honest hardware caveat: Qwen2.5-Omni-7B is a heavy model, and the README's roadmap puts full-quality omni inference at 30GB+ VRAM with Flash Attention 2. This is a specialist node for machines with headroom, not a quick utility for a 6GB card.

How it works

It loads the captioner model through a transformers pipeline (the same trust_remote_code / Qwen-omni path as the Transcriber) and runs your audio through it with the ACE-Step recommended prompt baked in as default: *Task* Describe this audio in detail. Long audio gets cut into chunk_length_s windows. The three outputs are just structured ways of surfacing one generation: the short caption, the tag list, and the long-form description.

The inputs that matter

  • audio - what to describe.
  • model_id - ACE-Step/acestep-captioner by default, or a local path in models/Ace-Step1.5/acestep-captioner (the dropdown scans there).
  • custom_prompt - you can override the task prompt entirely; the default is a good starting point.
  • max_new_tokens - 1024 default; raise for longer descriptions.
  • temperature - the tooltip says it straight: lower (0.1-0.3) is more deterministic and accurate. Default 0.3.
  • chunk_length_s - 30 default, for long audio.

Install

Node pack plus a separate model download - the captioner is not bundled with the main ACE-Step 1.5 weights:

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/acestep-captioner --local-dir ComfyUI/models/Ace-Step1.5/acestep-captioner

Restart ComfyUI. You'll also want the base ACE-Step environment installed for the pack overall.

Where people get burned

VRAM is the whole story here. If the pipeline errors out or you watch memory climb past 30GB, it's not a bug in the node - it's the model. Lower dtype to float16, shrink chunk_length_s, and if it still won't fit, this is the point to decide the Captioner isn't worth your card. When it does run, the outputs are genuinely strong - the style_tags in particular are useful enough that you'll find yourself wiring them straight into Text to Music captions for style-cloning runs.

CategoryAudio/ACE-Step

Inputs (12)

NameTypeDefaultDescription
audioAUDIOInput audio to caption/describe.
model_idCOMBOACE-Step/acestep-captionerSelect the captioner model. Can be a local path or HuggingFace ID.
deviceCOMBOautoInference device. Use 'auto' or 'mps' for Mac.
dtypeCOMBOautoModel precision. 'auto' uses float16 for CUDA and float32 for CPU/MPS.
custom_promptoptSTRING*Task* Describe this audio in detailCustom prompt for captioning. Default is the recommended prompt from ACE-Step.
max_new_tokensoptINT102464–4096Maximum number of tokens to generate. Increase for longer descriptions.
temperatureoptFLOAT0.30–1Sampling temperature. Lower values (0.1-0.3) are more deterministic and accurate.
top_poptFLOAT0.900–1Nucleus sampling: cumulative probability threshold.
top_koptINT500–1000Top-K sampling. 0 = disabled. Lower values can improve accuracy.
repetition_penaltyoptFLOAT1.11–2Penalty for repeating tokens. Increase if output gets stuck in loops.
seedoptINT00–4294967295Random seed for reproducible results. 0 for random.
chunk_length_soptFLOAT300–300Audio chunk length in seconds for processing long audio.

Outputs (3)

NameTypeDescription
captionSTRING
style_tagsSTRING
full_descriptionSTRING