🎵 ACE-Step 1.5XL TTS-like Voice Prompt
Turn a plain script into ACE-Step lyrics without the formatting fight
- tags
- lyrics
- bpm
- duration
- timesignature
- language
- keyscale
If you've ever stared at ACE-Step's lyrics format - the [verse] / [chorus] section markers, the line-by-line structure - and wished you could just paste a paragraph of narration and be done, this node is for you. TTS-like Voice Prompt takes a plain script and a couple of musical settings, and outputs a fully-formed set of tags and lyrics plus all the musical parameters the text encoder wants. It's the "make this sound like someone talking/singing a script" workflow's brain.
The honest name matters here: this is TTS-like, not TTS. ACE-Step won't read your script back with a strict voice - it reinterprets timing, melody, pronunciation and phrasing, which is exactly what you want for voice-guided narration or spoken-word tracks, and exactly wrong if you need word-perfect speech. Pair it with a reference voice sample (Reference Audio) and it behaves like a loose, musical voice-clone pipeline.
How it works
The node formats, it doesn't generate. It splits your script into lines (on newlines; a single paragraph gets split on sentence-ending punctuation), groups them into blocks of lines_per_section, and wraps each block in a [section_label] marker - [verse], [chorus], [spoken] or [narration]. If your script already has [section] markers, it passes it through untouched, which is the polite thing to do. The default script is a Mandarin Chinese monologue, and the default voice_tags are tuned for "clean lead vocal, lyrics forward, minimal accompaniment" - the exact profile that works with a reference voice.
The inputs and outputs that matter
The few you actually touch:
- script - your raw text. No section markers needed; it formats them for you.
- voice_tags - the style prompt. Swap the Mandarin defaults if you're not doing Chinese.
- section_label and lines_per_section - how the script gets chunked.
- bpm, duration, timesignature, language, keyscale - the musical frame, passed through untouched.
Outputs are tags, lyrics, bpm, duration, timesignature, language, keyscale - and the whole point is that they plug directly into ACE-Step 1.5XL Text Encode's matching inputs. No retyping, no transcription errors between your plan and the encoder.
Install
ComfyUI Manager ("ComfyUI-ACEStep") or:
cd ComfyUI/custom_nodes
git clone https://github.com/starsFriday/ComfyUI-ACEStep.git
then restart. No pip deps of its own; the heavy lifting is the ACE-Step 1.5 XL models (acestep_v1.5_xl_turbo_bf16.safetensors, qwen_0.6b_ace15/qwen_4b_ace15 CLIP, ace_1.5_vae.safetensors) from the ACE-Step repo, and XL wants ~12GB+ VRAM.
Gotchas
Temper your expectations on the vocals themselves. The community consensus on ACE-Step is blunt: instrumentals are genuinely good, vocals and lyrics are the weak suit - so this node gets you a singable script, not a polished singer. Keep your reference clip to a clean vocal (10–30 seconds beats a full mix), keep generate_audio_codes off on the text encoder when the reference voice should lead, and expect to iterate. The other trap is forgetting that duration here just flows through - if it disagrees with the latent length in your sampler, you'll hear the mismatch as truncated output. Let this node's duration output be the single source of truth.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| script | STRING | 月色落在窗前 我把想念轻轻念给你听 风穿过安静的长街 像你的声音靠近我心里 请用温柔的声音唱出这些字 每一句都清楚 每一次停顿都像呼吸 让我听见熟悉的你 | — |
| voice_tags | STRING | Mandarin Chinese solo vocal, voice clone reference, clear lead vocal, intimate close-mic vocal, natural pronunciation, expressive singing, minimal accompaniment, soft piano bed, no instrumental intro, lyrics forward, clean vocal mix, gentle emotional delivery | — |
| section_label | COMBO | verse | 4 options: verse, chorus, spoken, narration |
| lines_per_section | INT | 41–16 | — |
| bpm | INT | 8010–300 | — |
| duration | FLOAT | 30.01–2000 | — |
| timesignature | COMBO | 4 | 4 options: 2, 3, 4, 6 |
| language | COMBO | zh | 23 options: en, ja, zh, es, de, fr, +17 |
| keyscale | COMBO | G minor | 34 options: C major, C# major, Db major, D major, D# major, Eb major, +28 |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| tags | STRING | — |
| lyrics | STRING | — |
| bpm | INT | — |
| duration | FLOAT | — |
| timesignature | 2,3,4,6 | — |
| language | en,ja,zh,es,de,fr,pt,ru,it,nl,pl,tr,vi,cs,fa,id,ko,uk,hu,ar,sv,ro,el | — |
| keyscale | C major,C# major,Db major,D major,D# major,Eb major,E major,F major,F# major,Gb major,G major,G# major,Ab major,A major,A# major,Bb major,B major,C minor,C# minor,Db minor,D minor,D# minor,Eb minor,E minor,F minor,F# minor,Gb minor,G minor,G# minor,Ab minor,A minor,A# minor,Bb minor,B minor | — |