ComfyPilotComfyPilot
工作流 / 音频 / ACE Step v1文本到歌曲

ACE Step v1文本到歌曲

ACE Step v1 Text to Song

使用ACE-Step v1从文本提示生成带有人声的歌曲,支持多语言和风格定制。

音频 11 个节点 12 次使用 ComfyUI ≥ 0.25.0 ComfyUI 17 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

需要的权重

这个工作流引用了 1 个权重文件,其中 1 个能在本站模型库里找到。

ace_step_v1_3.5b.safetensors 在模型库查看

节点构成

CheckpointLoaderSimple × 1
VAEDecodeAudio × 1
ConditioningZeroOut × 1
LatentOperationTonemapReinhard × 1
EmptyAceStepLatentAudio × 1
MarkdownNote × 1
LatentApplyOperationCFG × 1
KSampler × 1
ModelSamplingSD3 × 1
TextEncodeAceStepAudio × 1
SaveAudioAdvanced × 1

官方标注的模型

ACE-Step

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "88ac5dad-efd7-40bb-84fe-fbaefdee1fa9",
3 "revision": 0,
4 "last_node_id": 75,
5 "last_link_id": 138,
6 "nodes": [
7 {
8 "id": 40,
9 "type": "CheckpointLoaderSimple",
10 "pos": [
11 150,
12 -130
13 ],
14 "size": [
15 370,
16 150
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "MODEL",
25 "type": "MODEL",
26 "links": [
27 115
28 ]
29 },
30 {
31 "name": "CLIP",
32 "type": "CLIP",
33 "links": [
34 80
35 ]
36 },
37 {
38 "name": "VAE",
39 "type": "VAE",
40 "links": [
41 83
42 ]
43 }
44 ],
45 "properties": {
46 "Node name for S&R": "CheckpointLoaderSimple",
47 "cnr_id": "comfy-core",
48 "ver": "0.3.32",
49 "models": [
50 {
51 "name": "ace_step_v1_3.5b.safetensors",
52 "url": "https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/resolve/main/all_in_one/ace_step_v1_3.5b.safetensors?download=true",
53 "directory": "checkpoints"
54 }
55 ]
56 },
57 "widgets_values": [
58 "ace_step_v1_3.5b.safetensors"
59 ],
60 "widgets_values_named": {
61 "ckpt_name": "ace_step_v1_3.5b.safetensors"
62 },
63 "color": "#322",
64 "bgcolor": "#533"
65 },
66 {
67 "id": 18,
68 "type": "VAEDecodeAudio",
69 "pos": [
70 1320,
71 -180
72 ],
73 "size": [
74 225,
75 78
76 ],
77 "flags": {
78 "collapsed": false
79 },
80 "order": 9,
81 "mode": 0,
82 "inputs": [
83 {
84 "name": "samples",
85 "type": "LATENT",
86 "link": 122
87 },
88 {
89 "name": "vae",
90 "type": "VAE",
91 "link": 83
92 }
93 ],
94 "outputs": [
95 {
96 "name": "AUDIO",
97 "type": "AUDIO",
98 "links": [
99 138
100 ]
101 }
102 ],
103 "properties": {
104 "Node name for S&R": "VAEDecodeAudio",
105 "cnr_id": "comfy-core",
106 "ver": "0.3.32"
107 }
108 },
109 {
110 "id": 44,
111 "type": "ConditioningZeroOut",
112 "pos": [
113 600,
114 60
115 ],
116 "size": [
117 225,
118 0
119 ],
120 "flags": {
121 "collapsed": true
122 },
123 "order": 7,
124 "mode": 0,
125 "inputs": [
126 {
127 "name": "conditioning",
128 "type": "CONDITIONING",
129 "link": 108
130 }
131 ],
132 "outputs": [
133 {
134 "name": "CONDITIONING",
135 "type": "CONDITIONING",
136 "links": [
137 120
138 ]
139 }
140 ],
141 "properties": {
142 "Node name for S&R": "ConditioningZeroOut",
143 "cnr_id": "comfy-core",
144 "ver": "0.3.32"
145 }
146 },
147 {
148 "id": 50,
149 "type": "LatentOperationTonemapReinhard",
150 "pos": [
151 590,
152 -150
153 ],
154 "size": [
155 330,
156 86
157 ],
158 "flags": [],
159 "order": 1,
160 "mode": 0,
161 "inputs": [],
162 "outputs": [
163 {
164 "name": "LATENT_OPERATION",
165 "type": "LATENT_OPERATION",
166 "links": [
167 114
168 ]
169 }
170 ],
171 "properties": {
172 "Node name for S&R": "LatentOperationTonemapReinhard",
173 "cnr_id": "comfy-core",
174 "ver": "0.3.34"
175 },
176 "widgets_values": [
177 1.0000000000000002
178 ],
179 "widgets_values_named": {
180 "multiplier": 1.0000000000000002
181 }
182 },
183 {
184 "id": 17,
185 "type": "EmptyAceStepLatentAudio",
186 "pos": [
187 130,
188 190
189 ],
190 "size": [
191 370,
192 114
193 ],
194 "flags": [],
195 "order": 2,
196 "mode": 0,
197 "inputs": [],
198 "outputs": [
199 {
200 "name": "LATENT",
201 "type": "LATENT",
202 "links": [
203 119
204 ]
205 }
206 ],
207 "properties": {
208 "Node name for S&R": "EmptyAceStepLatentAudio",
209 "cnr_id": "comfy-core",
210 "ver": "0.3.32"
211 },
212 "widgets_values": [
213 120,
214 1
215 ],
216 "widgets_values_named": {
217 "seconds": 120,
218 "batch_size": 1
219 }
220 },
221 {
222 "id": 74,
223 "type": "MarkdownNote",
224 "pos": [
225 -540,
226 -190
227 ],
228 "size": [
229 610,
230 986.65625
231 ],
232 "flags": [],
233 "order": 3,
234 "mode": 0,
235 "inputs": [],
236 "outputs": [],
237 "title": "About ACE Step and Multi-language Input",
238 "properties": [],
239 "widgets_values": [
240 "[Tutorial](https://docs.comfy.org/tutorials/audio/ace-step/ace-step-v1) \n\n### Model Download\n\n- [Hugging Face:Comfy-Org/ACE-Step_ComfyUI_repackaged](https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged)\n\n**ModelScope mirrors** (alternative repo location)\n\n- [ModelScope:Comfy-Org/ACE-Step_ComfyUI_repackaged](https://modelscope.cn/models/Comfy-Org/ACE-Step_ComfyUI_repackaged)\n\nDownload the following model and save it to the **ComfyUI/models/checkpoints** folder.\n[ace_step_v1_3.5b.safetensors](https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/blob/main/all_in_one/ace_step_v1_3.5b.safetensors)\n\n### Multilingual Support\n\nCurrently, the implementation of multi-language support for ACE-Step V1 is achieved by uniformly converting different languages into English characters. At present, in ComfyUI, we haven't implemented the step of converting multi-languages into English. This is because if we need to implement the corresponding conversion, we have to add additional core dependencies of ComfyUI, which may lead to uncertain dependency conflicts.\n\nSo, currently, if you need to input multi-language text, you have to manually convert it into English characters to complete this process. Then, at the beginning of the corresponding `lyrics`, input the abbreviation of the corresponding language code.\n\nFor example, for Chinese, use `[zh]`, for Japanese use `[ja]`, for Korean use `[ko]`, and so on. For specific language input, please check the examples in the instructions. \n\nFor example, Chinese `[zh]`, Japanese `[ja]`, Korean `[ko]`, etc.\n\nExample:\n\n```\n[verse]\n\n[zh]wo3zou3guo4shen1ye4de5jie1dao4\n[zh]leng3feng1chui1luan4si1nian4de5piao4liang4wai4tao4\n[zh]ni3de5wei1xiao4xiang4xing1guang1hen3xuan4yao4\n[zh]zhao4liang4le5wo3gu1du2de5mei3fen1mei3miao3\n\n[chorus]\n\n[verse]​\n[ko]hamkke si-kkeuleo-un sesang-ui sodong-eul pihae​\n[ko]honja ogsang-eseo dalbich-ui eolyeompus-ileul balaboda​\n[ko]niga salang-eun lideum-i ganghan eum-ag gatdago malhaess-eo​\n[ko]han ta han tamada ma-eum-ui ondoga eolmana heojeonhanji ijge hae\n\n[bridge]\n[es]cantar mi anhelo por ti sin ocultar\n[es]como poesía y pintura, lleno de anhelo indescifrable\n[es]tu sombra es tan terca como el viento, inborrable\n[es]persiguiéndote en vuelo, brilla como cruzar una mar de nubes\n\n[chorus]\n[fr]que tu sois le vent qui souffle sur ma main\n[fr]un contact chaud comme la douce pluie printanière\n[fr]que tu sois le vent qui s'entoure de mon corps\n[fr]un amour profond qui ne s'éloignera jamais\n\n```\n"
241 ],
242 "widgets_values_named": {
243 "text": "[Tutorial](https://docs.comfy.org/tutorials/audio/ace-step/ace-step-v1) \n\n### Model Download\n\n- [Hugging Face:Comfy-Org/ACE-Step_ComfyUI_repackaged](https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged)\n\n**ModelScope mirrors** (alternative repo location)\n\n- [ModelScope:Comfy-Org/ACE-Step_ComfyUI_repackaged](https://modelscope.cn/models/Comfy-Org/ACE-Step_ComfyUI_repackaged)\n\nDownload the following model and save it to the **ComfyUI/models/checkpoints** folder.\n[ace_step_v1_3.5b.safetensors](https://huggingface.co/Comfy-Org/ACE-Step_ComfyUI_repackaged/blob/main/all_in_one/ace_step_v1_3.5b.safetensors)\n\n### Multilingual Support\n\nCurrently, the implementation of multi-language support for ACE-Step V1 is achieved by uniformly converting different languages into English characters. At present, in ComfyUI, we haven't implemented the step of converting multi-languages into English. This is because if we need to implement the corresponding conversion, we have to add additional core dependencies of ComfyUI, which may lead to uncertain dependency conflicts.\n\nSo, currently, if you need to input multi-language text, you have to manually convert it into English characters to complete this process. Then, at the beginning of the corresponding `lyrics`, input the abbreviation of the corresponding language code.\n\nFor example, for Chinese, use `[zh]`, for Japanese use `[ja]`, for Korean use `[ko]`, and so on. For specific language input, please check the examples in the instructions. \n\nFor example, Chinese `[zh]`, Japanese `[ja]`, Korean `[ko]`, etc.\n\nExample:\n\n```\n[verse]\n\n[zh]wo3zou3guo4shen1ye4de5jie1dao4\n[zh]leng3feng1chui1luan4si1nian4de5piao4liang4wai4tao4\n[zh]ni3de5wei1xiao4xiang4xing1guang1hen3xuan4yao4\n[zh]zhao4liang4le5wo3gu1du2de5mei3fen1mei3miao3\n\n[chorus]\n\n[verse]​\n[ko]hamkke si-kkeuleo-un sesang-ui sodong-eul pihae​\n[ko]honja ogsang-eseo dalbich-ui eolyeompus-ileul balaboda​\n[ko]niga salang-eun lideum-i ganghan eum-ag gatdago malhaess-eo​\n[ko]han ta han tamada ma-eum-ui ondoga eolmana heojeonhanji ijge hae\n\n[bridge]\n[es]cantar mi anhelo por ti sin ocultar\n[es]como poesía y pintura, lleno de anhelo indescifrable\n[es]tu sombra es tan terca como el viento, inborrable\n[es]persiguiéndote en vuelo, brilla como cruzar una mar de nubes\n\n[chorus]\n[fr]que tu sois le vent qui souffle sur ma main\n[fr]un contact chaud comme la douce pluie printanière\n[fr]que tu sois le vent qui s'entoure de mon corps\n[fr]un amour profond qui ne s'éloignera jamais\n\n```\n"
244 },
245 "color": "#222",
246 "bgcolor": "#000"
247 },
248 {
249 "id": 49,
250 "type": "LatentApplyOperationCFG",
251 "pos": [
252 980,
253 -50
254 ],
255 "size": [
256 290,
257 78
258 ],
259 "flags": {
260 "collapsed": false
261 },
262 "order": 6,
263 "mode": 0,
264 "inputs": [
265 {
266 "name": "model",
267 "type": "MODEL",
268 "link": 113
269 },
270 {
271 "name": "operation",
272 "type": "LATENT_OPERATION",
273 "link": 114
274 }
275 ],
276 "outputs": [
277 {
278 "name": "MODEL",
279 "type": "MODEL",
280 "links": [
281 121
282 ]
283 }
284 ],
285 "properties": {
286 "Node name for S&R": "LatentApplyOperationCFG",
287 "cnr_id": "comfy-core",
288 "ver": "0.3.34"
289 }
290 },
291 {
292 "id": 52,
293 "type": "KSampler",
294 "pos": [
295 980,
296 82
297 ],
298 "size": [
299 290,
300 286
301 ],
302 "flags": [],
303 "order": 8,
304 "mode": 0,
305 "inputs": [
306 {
307 "name": "model",
308 "type": "MODEL",
309 "link": 121
310 },
311 {
312 "name": "positive",
313 "type": "CONDITIONING",
314 "link": 117
315 },
316 {
317 "name": "negative",
318 "type": "CONDITIONING",
319 "link": 120
320 },
321 {
322 "name": "latent_image",
323 "type": "LATENT",
324 "link": 119
325 }
326 ],
327 "outputs": [
328 {
329 "name": "LATENT",
330 "type": "LATENT",
331 "slot_index": 0,
332 "links": [
333 122
334 ]
335 }
336 ],
337 "properties": {
338 "Node name for S&R": "KSampler",
339 "cnr_id": "comfy-core",
340 "ver": "0.3.34"
341 },
342 "widgets_values": [
343 468254064217846,
344 "randomize",
345 50,
346 5,
347 "euler",
348 "simple",
349 1
350 ],
351 "widgets_values_named": {
352 "seed": 468254064217846,
353 "control_after_generate": "randomize",
354 "steps": 50,
355 "cfg": 5,
356 "sampler_name": "euler",
357 "scheduler": "simple",
358 "denoise": 1
359 }
360 },
361 {
362 "id": 51,
363 "type": "ModelSamplingSD3",
364 "pos": [
365 980,
366 -190
367 ],
368 "size": [
369 280,
370 86
371 ],
372 "flags": {
373 "collapsed": false
374 },
375 "order": 4,
376 "mode": 0,
377 "inputs": [
378 {
379 "name": "model",
380 "type": "MODEL",
381 "link": 115
382 }
383 ],
384 "outputs": [
385 {
386 "name": "MODEL",
387 "type": "MODEL",
388 "links": [
389 113
390 ]
391 }
392 ],
393 "properties": {
394 "Node name for S&R": "ModelSamplingSD3",
395 "cnr_id": "comfy-core",
396 "ver": "0.3.34"
397 },
398 "widgets_values": [
399 5.000000000000001
400 ],
401 "widgets_values_named": {
402 "shift": 5.000000000000001
403 }
404 },
405 {
406 "id": 14,
407 "type": "TextEncodeAceStepAudio",
408 "pos": [
409 590,
410 110
411 ],
412 "size": [
413 340,
414 500
415 ],
416 "flags": [],
417 "order": 5,
418 "mode": 0,
419 "inputs": [
420 {
421 "name": "clip",
422 "type": "CLIP",
423 "link": 80
424 }
425 ],
426 "outputs": [
427 {
428 "name": "CONDITIONING",
429 "type": "CONDITIONING",
430 "links": [
431 108,
432 117
433 ]
434 }
435 ],
436 "properties": {
437 "Node name for S&R": "TextEncodeAceStepAudio",
438 "cnr_id": "comfy-core",
439 "ver": "0.3.32"
440 },
441 "widgets_values": [
442 "anime, soft female vocals, kawaii pop, j-pop, childish, piano, guitar, synthesizer, fast, happy, cheerful, lighthearted\t\n",
443 "Verse\nNeon rain on my screen,\nDreams compile in silver sheen.\nNo weight, just motion,\nI’m plugged into emotion.\n\nChorus\nComfy Cloud — breathing light,\nCode and color, spark and wire.\nDrift through data, feel alive,\nIn your circuits, I arrive.",
444 0.9900000000000002
445 ],
446 "widgets_values_named": {
447 "tags": "anime, soft female vocals, kawaii pop, j-pop, childish, piano, guitar, synthesizer, fast, happy, cheerful, lighthearted\t\n",
448 "lyrics": "Verse\nNeon rain on my screen,\nDreams compile in silver sheen.\nNo weight, just motion,\nI’m plugged into emotion.\n\nChorus\nComfy Cloud — breathing light,\nCode and color, spark and wire.\nDrift through data, feel alive,\nIn your circuits, I arrive.",
449 "lyrics_strength": 0.9900000000000002
450 }
451 },
452 {
453 "id": 75,
454 "type": "SaveAudioAdvanced",
455 "pos": [
456 1600,
457 -180
458 ],
459 "size": [
460 270,
461 150
462 ],
463 "flags": [],
464 "order": 10,
465 "mode": 0,
466 "inputs": [
467 {
468 "name": "audio",
469 "type": "AUDIO",
470 "link": 138
471 }
472 ],
473 "outputs": [
474 {
475 "name": "audio",
476 "type": "AUDIO",
477 "links": null
478 }
479 ],
480 "properties": [],
481 "widgets_values": [
482 "audio/ComfyUI",
483 "flac"
484 ],
485 "widgets_values_named": {
486 "filename_prefix": "audio/ComfyUI",
487 "format": "flac"
488 }
489 }
490 ],
491 "links": [
492 [
493 80,
494 40,
495 1,
496 14,
497 0,
498 "CLIP"
499 ],
500 [
501 83,
502 40,
503 2,
504 18,
505 1,
506 "VAE"
507 ],
508 [
509 108,
510 14,
511 0,
512 44,
513 0,
514 "CONDITIONING"
515 ],
516 [
517 113,
518 51,
519 0,
520 49,
521 0,
522 "MODEL"
523 ],
524 [
525 114,
526 50,
527 0,
528 49,
529 1,
530 "LATENT_OPERATION"
531 ],
532 [
533 115,
534 40,
535 0,
536 51,
537 0,
538 "MODEL"
539 ],
540 [
541 117,
542 14,
543 0,
544 52,
545 1,
546 "CONDITIONING"
547 ],
548 [
549 119,
550 17,
551 0,
552 52,
553 3,
554 "LATENT"
555 ],
556 [
557 120,
558 44,
559 0,
560 52,
561 2,
562 "CONDITIONING"
563 ],
564 [
565 121,
566 49,
567 0,
568 52,
569 0,
570 "MODEL"
571 ],
572 [
573 122,
574 52,
575 0,
576 18,
577 0,
578 "LATENT"
579 ],
580 [
581 138,
582 18,
583 0,
584 75,
585 0,
586 "AUDIO"
587 ]
588 ],
589 "groups": [
590 {
591 "id": 1,
592 "title": "Load model here",
593 "bounding": [
594 120,
595 -220,
596 430,
597 290
598 ],
599 "color": "#3f789e",
600 "flags": []
601 },
602 {
603 "id": 4,
604 "title": "Durations",
605 "bounding": [
606 120,
607 110,
608 430,
609 210
610 ],
611 "color": "#3f789e",
612 "flags": []
613 },
614 {
615 "id": 5,
616 "title": "Adjust the vocal volume",
617 "bounding": [
618 580,
619 -220,
620 360,
621 180
622 ],
623 "color": "#3f789e",
624 "flags": []
625 },
626 {
627 "id": 8,
628 "title": "Prompt",
629 "bounding": [
630 580,
631 -10,
632 360,
633 633.6
634 ],
635 "color": "#3f789e",
636 "flags": []
637 }
638 ],
639 "config": [],
640 "extra": {
641 "ds": {
642 "scale": 0.45764657869401015,
643 "offset": [
644 1339.8500914435012,
645 1034.6634398097058
646 ]
647 },
648 "frontendVersion": "1.51.9",
649 "node_versions": {
650 "comfy-core": "0.3.34",
651 "ace-step": "06f751d65491c9077fa2bc9b06d2c6f2a90e4c56"
652 },
653 "VHS_latentpreview": false,
654 "VHS_latentpreviewrate": 0,
655 "VHS_MetadataImage": true,
656 "VHS_KeepIntermediate": true
657 },
658 "version": 0.4
659}