ACE-Step Text to Music
Type 'cinematic trailer music' and get a real track — ACE-Step Text to Music
- lora_info
- audio
- audio_path
- metadata
This is the flagship node of the Kaola ACE-Step pack and the one you'll reach for first. You type a description, it generates a full song - vocals, instruments, structure - as an audio file on your disk. No API, no key, no cloud round-trip: the whole thing runs on your GPU. People are already posting 10-song test runs of ACE-Step 1.5 on r/StableDiffusion and it holds up for a local generator. If you've been waiting for a serious local alternative to the hosted music services, this is it.
ACE-Step 1.5 is a diffusion-transformer music model with an attached language model. The DiT renders the audio; the language model (lm_model_path) writes the lyrics and metadata. Keep thinking on and the LLM invents the lyrics for you; turn it off when you're supplying your own and want a faster, more deterministic pass. On the default acestep-v15-turbo config it runs in about 8 diffusion steps - that's the distilled/few-step variant, and it's the same "turbo = fast but slightly less refined than the 50-step base" tradeoff you already know from image models.
The inputs that matter
The only thing you actually must type is caption - and specificity is the whole game. "Upbeat electronic dance music with heavy bass and synthesizer leads" gets you somewhere; "good music" gets you a generic blob. Then the useful knobs:
duration- seconds, 10 to 600. Start at 30.inference_steps- 8 for turbo. That's the sweet spot, not a suggestion.lyrics- leave empty for auto-generation, or paste your own (use[Verse 1]/[Chorus]style section markers).bpm,keyscale,timesignature- 0/empty means auto-detect.vocal_language-auto/unknownfor the model to guess, or forceen,zh,ja,ko, etc.instrumental- true for no vocals.batch_size- generate 2-8 variations in one go; each comes back with its real seed in metadata.guidance_scaleandshift- prompt adherence and sequence-length scaling. Defaults are fine until you're tuning.
Outputs: audio (into ComfyUI's Save Audio), audio_path, and metadata - a JSON string showing what was actually used (caption, bpm, duration, seed). Read it once; it teaches you how the model interpreted your prompt.
Install
The pack wraps ACE-Step 1.5, so there are two installs plus a model download:
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
ComfyUI Manager installs just the node pack ("ComfyUI-kaola-ace-step"); the ACE-Step package and the ~8GB of models are manual. The checkpoint_dir dropdown lists folders under ComfyUI/models/, so keep the acestep-v15-turbo/ and acestep-5Hz-lm-1.7B/ subfolders inside Ace-Step1.5/. Then restart ComfyUI.
Where people get burned
- "Model path not found" - the models aren't in
ComfyUI/models/Ace-Step1.5/with the right subfolder names. That error is almost always a download/layout problem, not a code problem. - OOM - drop
batch_sizeto 1 and use the smalleracestep-5Hz-lm-0.6Blanguage model. README's own advice for <8GB VRAM: batch 1, small LM,thinkingoff. - Doesn't match your prompt - get more specific, and remember the turbo model is a fast impression, not a faithful rendering. Switch to
acestep-v15-basewith 32-64 steps when a track matters.
A last note on quantization/compile_model: int8_weight_only cuts VRAM but needs torchao installed, compile_model on, and it won't work with LoRA. Only reach for it when you're actually bumping the VRAM ceiling.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| caption | STRING | Text prompt or natural language description for music generation. | |
| checkpoint_dir | COMBO | Ace-Step1.5 | Directory containing ACE-Step model weights (DiT model). |
| config_path | COMBO | acestep-v15-turbo | Specific model configuration to use (e.g., v1.5 turbo). |
| lm_model_path | COMBO | acestep-5Hz-lm-1.7B | Path to the language model used for generating lyrics and metadata. |
| duration | FLOAT | 30.0010–600 | Target duration of the generated music in seconds. |
| batch_size | INT | 21–8 | Number of audio samples to generate in a single batch. |
| seed | INT | -1-1–18446744073709550000 | Random seed for reproducibility. Set to -1 for random generation. |
| inference_steps | INT | 81–64 | Number of diffusion steps. Higher values (e.g., 25-50) improve quality but are slower. |
| device | COMBO | auto | Computing platform to run the model on. |
| lora_infoopt | ACE_STEP_LORA_INFO | Optional LoRA model information for style fine-tuning. | |
| lyricsopt | STRING | Song lyrics. Leave empty for automatic generation by the language model. | |
| bpmopt | INT | 00–300 | Beats per minute. 0 for automatic detection. |
| keyscaleopt | STRING | Musical key and scale (e.g., C Major). | |
| timesignatureopt | STRING | Musical time signature (e.g., 4/4). | |
| vocal_languageopt | STRING | unknown | Vocal language (e.g., zh, en, ja, auto, unknown). Accepts string input from CreateSample node. |
| instrumentalopt | BOOLEAN | false | Whether to generate instrumental music only (no vocals). |
| guidance_scaleopt | FLOAT | 7.001–15 | Strength of prompt following. |
| shiftopt | FLOAT | 1.001–5 | Sequence length scaling factor, default is 1.0. |
| thinkingopt | BOOLEAN | true | Whether to show the language model's Chain-of-Thought reasoning. |
| lm_temperatureopt | FLOAT | 0.000–2 | Sampling temperature for the language model. 0.0 is most stable (recommended). |
| quantizationopt | COMBO | None | Model quantization (e.g., int8). Reduces VRAM usage but requires torchao and compile_model=True. Incompatible with LoRA. |
| compile_modelopt | BOOLEAN | false | Whether to use torch.compile to optimize the model. Required for quantization. Slow on first run but faster afterwards. |
| audio_formatopt | COMBO | flac | Output audio file format. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_path | STRING | — |
| metadata | STRING | — |