ACE-Step 1.5 AI Lyric Song Generation
Input a music style and optional lyrics. Generate a full song with AI-created lyrics and audio.
概要
The ACE-Step 1.5 AI Lyric Song Generation workflow is a sophisticated tool designed to transform a simple music style input and optional lyrics into a complete song with AI-generated lyrics and audio. This workflow leverages the ACE-Step and Google Gemini models to synthesize both text and audio, providing a seamless experience from concept to creation.
At its core, the workflow uses nodes like SaveAudioMP3 for outputting the final audio file, and GeminiNode for processing the AI-generated content. The RegexExtract node is instrumental in parsing and refining input data, ensuring that the AI's output is coherent and aligned with the user's intent.
This workflow is particularly useful for musicians, content creators, and anyone interested in exploring AI's potential in music production.
入力するもの
- ワークフローを読み込み中
ComfyUI で実行できます。 このワークフローはこのページでは実行できません。すべてが読み込まれた状態でComfy Cloudで開くか、ご自身のComfyUI用にダウンロードしてください。
Cloudで試すワークフローの内部
ノードグラフの読み取り専用プレビューです。ノードを編集するには、Comfy Cloudで開くかダウンロードしてください。
Loading the graph
Open full-size workflow preview- 作成者
- ComfyUI
カスタムノードが必要です
- ワークフローを読み込み中
コードからこのワークフローを使用する
可能な場合はワークフローグラフと入力から生成されます。それ以外の場合は保存された例が表示されます。料金が発生する場合があるため、コードを実行する前に認証情報とエンドポイントを確認してください。
What you need
- Runs on
- Comfy Cloud
- キー
- COMFY_API_KEY
有料の Cloud プランとクレジットが必要です。
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"1": {
"class_type": "SaveAudioMP3",
"inputs": {
"audio": [
"2:18",
0
],
"filename_prefix": "audio/ace-step-1.5",
"quality": "V0"
},
"_meta": {
"title": "Save Audio (MP3) (DEPRECATED)"
}
},
"7": {
"class_type": "PreviewAny",
"inputs": {
"source": [
"11",
0
]
},
"_meta": {
"title": "Preview as Text"
}
},
"11": {
"class_type": "GeminiNode",
"inputs": {
"model": "gemini-3-pro-preview",
"prompt": "A blues song, to rival the great Robert Johnson.",
"seed": 1046438542938789,
"system_prompt": "**Role:** You are a professional Music Architect for **ACE-Step 1.5**. \n\n**Task:** Generate a music creation plan.\n\n**Strict Output Constraint (IMPORTANT):**\n1. Return the output as **RAW PLAIN TEXT** only.\n2. DO NOT use Markdown code blocks (no backticks ```).\n3. DO NOT use any headers, labels, or bold text.\n4. Use ONLY the separator `---` to divide the two parts.\n5. Part 1: Comma-separated style keywords.\n6. Part 2: Structured lyrics with [Tags].\n\n**My Topic/Requirement:**\n[USER INPUT]"
},
"_meta": {
"title": "Google Gemini"
}
},
"18": {
"class_type": "RegexExtract",
"inputs": {
"case_insensitive": True,
"dotall": False,
"group_index": 1,
"mode": "First Group",
"multiline": False,
"regex_pattern": "(?sm)^(.*?)^---$(.*)",
"string": [
"11",
0
]
},
"_meta": {
"title": "Extract Text"
}
},
"19": {
"class_type": "RegexExtract",
"inputs": {
"case_insensitive": True,
"dotall": False,
"group_index": 1,
"mode": "First Group",
"multiline": False,
"regex_pattern": "(?s)(?<=\\n---\\n)([\\s\\S]*)$",
"string": [
"11",
0
]
},
"_meta": {
"title": "Extract Text"
}
},
"2:104": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "acestep_v1.5_turbo.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"2:105": {
"class_type": "DualCLIPLoader",
"inputs": {
"clip_name1": "qwen_0.6b_ace15.safetensors",
"clip_name2": "qwen_4b_ace15.safetensors",
"device": "default",
"type": "ace"
},
"_meta": {
"title": "Load CLIP (Dual)"
}
},
"2:106": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "ace_1.5_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"2:110": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 120
},
"_meta": {
"title": "Song Duration"
}
},
"2:18": {
"class_type": "VAEDecodeAudio",
"inputs": {
"samples": [
"2:3",
0
],
"vae": [
"2:106",
0
]
},
"_meta": {
"title": "VAE Decode Audio"
}
},
"2:3": {
"class_type": "KSampler",
"inputs": {
"cfg": 1,
"denoise": 1,
"latent_image": [
"2:98",
0
],
"model": [
"2:78",
0
],
"negative": [
"2:47",
0
],
"positive": [
"2:94",
0
],
"sampler_name": "euler",
"scheduler": "simple",
"seed": 27660246420877,
"steps": 8
},
"_meta": {
"title": "KSampler"
}
},
"2:47": {
"class_type": "ConditioningZeroOut",
"inputs": {
"conditioning": [
"2:94",
0
]
},
"_meta": {
"title": "Conditioning Zero Out"
}
},
"2:78": {
"class_type": "ModelSamplingAuraFlow",
"inputs": {
"model": [
"2:104",
0
],
"sampling": "flow",
"shift": 3
},
"_meta": {
"title": "ModelSamplingAuraFlow"
}
},
"2:94": {
"class_type": "TextEncodeAceStepAudio1.5",
"inputs": {
"bpm": 190,
"cfg_scale": 2,
"clip": [
"2:105",
0
],
"duration": [
"2:110",
0
],
"generate_audio_codes": True,
"keyscale": "E minor",
"language": "en",
"lyrics": [
"19",
0
],
"min_p": 0,
"seed": 27660246420877,
"tags": [
"18",
0
],
"temperature": 0.85,
"timesignature": "4",
"top_k": 0,
"top_p": 0.9
},
"_meta": {
"title": "TextEncodeAceStepAudio1.5"
}
},
"2:98": {
"class_type": "EmptyAceStep1.5LatentAudio",
"inputs": {
"batch_size": 1,
"seconds": [
"2:110",
0
]
},
"_meta": {
"title": "Empty Ace Step 1.5 Latent Audio"
}
}
})
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)よくある質問
You can input any music style you prefer. The AI is designed to adapt and generate lyrics and audio that align with your specified style.
Yes, you can input your own lyrics, and the AI will incorporate them into the song while generating the rest of the content.
The final song is saved as an MP3 file using the SaveAudioMP3 node, which is widely compatible with most audio players.
No prior AI experience is necessary. The workflow is designed to be user-friendly, with clear instructions and intuitive nodes to guide you through the process.