TextEncodeAceStepAudio
Prompting ACE-Step for music
- clip
- CONDITIONING
If you've ever stared at a music-generation node and only known what to put in "tags," this is the node that explains the rest. TextEncodeAceStepAudio is the text front-end for ACE-Step, Alibaba's music and audio generation model, and it splits your prompt into the two things the model actually listens to: tags (genre, mood, instrumentation - "synthwave, driving beat, 110 BPM") and lyrics (the actual sung words). That split is the whole trick, because ACE-Step is trained to treat them as separate streams, and getting that right is the difference between "instrumental in the ballpark of the genre" and "a track with a singer doing the thing you asked for."
How it works
Under the hood it's a normal CLIP encode with one extra knob. The node calls clip.tokenize(tags, lyrics=lyrics) - the ACE-Step text encoder sees both strings, with lyrics handled as their own token stream - then encodes to conditioning and stamps a lyrics_strength value into the conditioning dict. That value rides along to the sampler, which uses it to scale how hard the lyrics pull on the generated audio.
The one input beyond the obvious that you'll actually reach for is lyrics_strength (default 1.0, range 0–10). At 0, the lyrics are effectively ignored and you get instrumental - handy when the model keeps mangling a word. Crank it past 1 and the vocals clamp harder to the text, at the cost of sometimes getting stiffer. Start at 1 and only move it when something's off.
The inputs that matter
- tags - your genre/descriptor prompt. Multiline. This is the "text to music" prompt.
- lyrics - the sung text, line by line. Multiline, optional in practice.
- lyrics_strength - how much the lyrics matter (0–10, default 1).
- clip - the ACE-Step CLIP from your checkpoint/CLIP loader.
The output is a single CONDITIONING that feeds directly into the ACE-Step sampler nodes. That's it - this node doesn't generate audio itself, it just makes the condition the sampler needs.
Where it fits
It ships with ComfyUI core (ACE-Step support landed in 2026, with the 1.5 line following shortly after). The model weights - the ACE-Step checkpoint and its VAE - go in the usual ComfyUI model folders, and the node appears under model/conditioning/ace in the node menu. Nothing to install.
One honest caveat: this node is built for ACE-Step 1.0 text-to-music. The 1.5 model has its own encoder (TextEncodeAceStepAudio1.5) with BPM, time signature, key scale and a seed - so if you're on 1.5 and reaching for this node, you're on the older path. People do still run 1.0; it's lighter and fine for instrumental sketches.
Common issues
The classic beginner move is putting the whole thing - genre and lyrics - into tags and leaving lyrics empty. You get music, but the words never appear. Put sung text in lyrics, period. If the vocals sound weak at the default strength, nudge lyrics_strength to 1.5–2 rather than rewriting the prompt. And if the model keeps inventing vocal parts you didn't ask for, set lyrics_strength to 0 for a clean instrumental. The text encoder is also picky about languages - write lyrics in the language you actually want sung.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| tags | STRING | — | |
| lyrics | STRING | — | |
| lyrics_strength | FLOAT | 1.000–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |