Nodes/comfyui-acemusic/AceMusic Generator (Text2Music)
ComfyUI Node

AceMusic Generator (Text2Music)

Caption plus lyrics in, a full song out

By hiroki-abe-58·Created 7 months ago·Updated 7 months ago· 42
AceMusic Generator (Text2Music)
  • model
  • settings
  • audio
caption
lyrics

AceMusic Generator (Text2Music) is the centerpiece of this pack - the node that turns your caption, your lyrics, and a bag of settings into an actual song. If you've been fighting Suno's queue times or its refusal to let you sing in Esperanto, this is the "run it yourself" answer. It's not magic and it's not a one-click Suno replacement; it's a diffusion model that needs you to actually describe the song. But once you've done the (admittedly fiddly) install, this node is where the fun starts.

It has exactly four inputs and one job:

  • model - from AceMusic Model Loader. Required, obviously.
  • caption - the style description. "j-pop, female vocal, energetic, bright synthesizer, catchy melody" does a lot more than "a song".
  • lyrics - the actual words, ideally split with section markers like [Verse] and [Chorus]. Leave it empty for pure instrumental fills, though the instrumental flag in Settings is the cleaner way to do that.
  • settings - an ACEMUSIC_SETTINGS object from the AceMusic Settings node. All the dials - duration, language, BPM, key, steps, guidance, seed - live there, not here.

Note that caption and lyrics are force-input sockets: you wire them from the pack's dedicated input nodes (or any STRING source) rather than typing into this node. That's deliberate. The pack split Lyrics, Caption, and Settings into separate nodes specifically to dodge the widget-ordering hell that plagues giant single-node audio UIs, and it keeps the graph readable. The output is a single audio of type AUDIO, which you feed into a core ComfyUI Preview Audio or Save Audio node (or into another AceMusic node like Cover or Extend for round-tripping).

How it works

Under the hood the node assembles a text prompt from your caption plus the metadata baked into your settings - it appends things like BPM: 120, Key: C Major, Time Signature: 4/4, Language: en, and Instrumental when set. That prompt and your lyrics go into the ACE-Step pipeline with your inference_steps and guidance_scale, and out comes a WAV at the duration you asked for. It's classic classifier-free guidance territory (the pack uses the "apg" CFG variant with a guidance interval), so the two knobs that actually change results are steps and guidance - more steps for polish, more guidance for prompt adherence.

The README claims up to 240 seconds of continuous audio, but keep expectations honest: the sweet spot for quality is shorter. Long generations are also where the Model Loader's overlapped_decode option starts paying for itself.

The quickest working wiring

  1. AceMusic Model Loader (device cuda)
  2. AceMusic Settings - set duration, language, BPM, etc.
  3. AceMusic Caption Input - pop, female vocal, energetic
  4. AceMusic Lyrics Input - lyrics with [Verse] / [Chorus] markers
  5. AceMusic Generator - wire model + settings + both strings into it
  6. Preview Audio (core) - output of the generator

You can load the pack's example workflow from workflow/AceMusic_Lyrics_v3.json to see it pre-built.

Installing it

Via ComfyUI Manager, search "ComfyUI-AceMusic", or:

cd ComfyUI/custom_nodes
git clone https://github.com/hiroki-abe-58/ComfyUI-AceMusic.git
cd ComfyUI-AceMusic
pip install -r requirements.txt
pip install git+https://github.com/ace-step/ACE-Step.git

The pack's own deps are light and it deliberately avoids torchaudio's backend mess by using soundfile/scipy. The real installation hazard is ACE-Step, whose pinned == version requirements frequently fail to resolve - the README's workaround is to clone it, loosen the pins to >=, and pip install -e ., or install the deps by hand and --no-deps the git install.

Common issues

  • ImportError from the generator - ACE-Step isn't installed. See above; it's a separate install from the pack.
  • "No audio generated" / empty output - check that Settings' duration is between 5 and 240, and that you actually connected everything to Preview Audio. The pack validates and falls back to defaults rather than crashing, which is nice, but it means a wrong value can silently become a default instead of telling you.
  • Wonky or garbled vocals - raise inference_steps toward 50–100, nudge guidance_scale, and give the caption more detail. This is a diffusion model: garbage prompt, garbage song.
  • Out of VRAM - shorter duration, or cpu_offload on the loader.

This is the node you'll come back to for 90% of your song generation. The rest of the pack exists to mess with what it made.

CategoryAceMusic/Generation

Inputs (4)

NameTypeDefaultDescription
modelACEMUSIC_MODEL
captionSTRING
lyricsSTRING
settingsACEMUSIC_SETTINGS

Outputs (1)

NameTypeDescription
audioAUDIO