File size: 43,497 Bytes
bc9c638
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
# ACE-Step 1.5 终极指南(必读)

大家好,我是ACE-Step 的开发者,龚俊民。我将通过这篇教程,带你了解 ACE-Step 1.5 的设计哲学与使用方法。

## 心智模型

在开始之前,我们需要先建立正确的心智模型,以便做好预期管理。

### 以人为中心的设计

这个模型不是为**一键生成**而设计的,而是为**以人为中心的生成**而设计的。

理解这个区别至关重要。

### 什么是一键生成?

你输入提示词,点击生成,听几个版本,选一个听起来不错的,拿来用。换一个人输入同样的提示词,大概率得到相似的结果。

这种模式下,你和 AI 是**甲方与乙方**的关系。你带着明确的目的而来,脑海中已有一个模糊的预期,希望 AI 交付一个接近那个预期的成品。本质上,它和去 Google 搜索、去 Spotify 找歌没有太大区别——只是多了一点定制化。

AI 是一种服务,而不是创意的启发者。

Suno、Udio、MiniMax、Mureka——这些平台都是这样的设计初衷。它们可以把模型堆大,作为服务保障交付即可。你生成的音乐受他们的协议约束;你无法在本地运行,无法微调做个性化的探索;如果他们暗中改变模型或条款,你只能接受。

### 什么是以人为中心的生成?

如果我们弱化 AI 那一层,强化人那一层——让更多的人的意志、创意、灵感赋予 AI 生命——这就是以人为中心的生成。

不同于一键生成的强目的性,以人为中心的生成更具备**玩**的性质。它更像一场交互的游戏,你和模型是**合作者**的关系。

工作流是这样的:你先抛出一些灵感种子,得到几首歌,从中选择感兴趣的方向继续迭代——
- 调整 prompt 重新生成
-**Cover** 保持结构、调整细节
-**Repaint** 做局部修改
-**Add Layer** 增减乐器层次

这时,AI 对你而言不是服务者,而是**启发者**### 这种设计需要满足什么条件?

要让以人为中心的生成真正成立,模型必须满足几个关键条件:

**首先,必须开源、本地可运行、可训练。**

这不是技术洁癖,而是所有权的问题。当你使用闭源平台,你不拥有模型,你生成的作品也受制于他们的协议。版本更新、条款变更、服务下线——这些都不在你的掌控之中。

而当模型开源且可本地运行,一切都不同了:**你永远拥有这个模型,你也永远拥有你和模型一起创造的所有产物。** 没有第三方协议的困扰,没有平台风险,你可以微调、可以魔改、可以基于它构建属于自己的创作系统,你的作品将永远属于你。他就像是你买的一个乐器,你可以随时随地使用它,也可以随时随地调整它。

**其次,必须快。**

人的时间是宝贵的,但更重要的是——**慢的生成会破坏心流**。

以人为中心的工作流的核心是「试一试、听一听、再调整」的快速循环。如果每次生成都要等几分钟,你的灵感会在等待中消散,「玩」的体验会退化成「等」的煎熬。

因此,我们专门为此优化了 ACE-Step:在保证质量的前提下,让生成速度足够快,快到能够承载一个流畅的人机对话节奏。

### 有限游戏 vs 无限游戏

一键生成是一场**有限游戏**——目标明确,结果导向,结束即终点。某种程度上,它冷酷地掏空了音乐产业,取代了许多人的工作。

以人为中心的生成是一场**无限游戏**——因为乐趣藏在过程之中,而过程永无止境。

我们的愿景是民主化 AI 音乐生成。让 ACE-Step 成为你口袋里的一个大玩具,让音乐回归 **Play** 本身——是融入创意的「玩」,而不只是点击播放的「Play」。

---

## 骑象人的隐喻

> 推荐阅读:[The Complete Guide to Mastering Suno](https://www.notion.so/The-Complete-Guide-to-Mastering-Suno-Advanced-Strategies-for-Professional-Music-Generation-2d6ae744ebdf8024be42f6645f884221)——这篇博文教程能帮助你建立理解 AI 音乐的基础认知。

AI 音乐生成,就像心理学中那个著名的**骑象人隐喻**。

意识骑在潜意识上,人骑在大象上。你可以给出方向,但你无法让大象精准地、即时地执行你的每一个指令。它有自己的惯性,自己的脾气,自己的意志。

这只大象,就是音乐生成模型。

### 冰山模型

音频和语义之间的联系,隐藏着一座冰山。

我们能用语言描述的东西——风格、乐器、音色、情绪、场景、起承转合、歌词内容、演唱方式——这些都是我们熟悉的词汇,是我们能触及的部分。但它们加在一起,仍然只是音频这座冰山浮出海面的很小一角。

最精准的控制是什么?是你拿着预期的音频输入,模型原封不动地返回输出。

而只要你用的是文字描述、是参考、是提示——模型就一定有自己的发挥空间。这不是 bug,这是本质。

### 大象是什么?

这只大象是无数元素的融合体:数据的分布、模型的规模、算法的设计、标注的偏差、评估的偏差——**它是人类音乐历史与工程权衡的抽象结晶。**

其中任意一个要素的偏差,都会导致它无法精准地反映你的品味和预期。

当然,我们可以扩大数据规模、提升算法效率、提高标注精度、扩大模型容量、引入更专业的评估体系——这些都是作为模型开发者可以优化的方向。

但即使有一天,技术上我们做到了「完美」,还有一个根本问题无法回避:**品味。**

### 品味与期望

品味因人而异。

如果一个音乐生成模型试图取悦所有听众,它的输出将趋向于人类音乐历史的流行平均值——**这将平庸至极。**

是人赋予声音以意义以情感以经历以生命,赋予它们文化符号的价值。是少数艺术家群体创造了独特的品味,然后带动普通人去消费、去追随,小众才变成了大众流行。这些少数派的先锋艺术家,便成为了传奇。

所以,当你发现模型的输出「不对味」时,这有时可能不是模型的问题——**而是你的品味恰好不在那个「平均」上。** 这是好事。

这意味着:**你需要学会引导这只大象,而不是期待它自动懂你。**

---

## 认识象群:模型架构与选择

现在你已经理解了「大象」这个隐喻。但实际上——

**这不是一只大象,而是一整个象群——大大小小的象,组成了一个家族。** 🐘🐘🐘🐘

### 架构原理:两个大脑

ACE-Step 1.5 采用**混合架构**,有两个核心组件协同工作:

```
用户输入 → [5Hz LM] → 语义蓝图 → [DiT] → 音频

         元数据推理
         Caption 优化
         结构规划
```

**5Hz LM(语言模型)—— 规划者(可选)**

LM 是「全能规划器」,负责理解你的意图并制定计划:
- 通过 **Chain-of-Thought** 推理音乐元数据(BPM、调性、时长等)
- 优化和扩展你的 caption——这是对你意图的理解和补充
- 生成**语义 codes**——隐式包含作曲旋律、配器编排、以及少许音色信息

LM 学到的是训练数据中的**世界知识**。它是一个提升可用性、帮你快速生成原型的规划者。

**但 LM 不是必须的。**

如果你非常清楚自己想要什么,或者已经有了明确的规划目标——你完全可以不用 `thinking` 模式,跳过 LM 的规划步骤。

比如在 **Cover 模式**中,你用参考音频来约束作曲、和弦、结构,直接让 DiT 去生成。这时,**你取代了 LM 的工作**——你自己成为了规划者。
再比如,在 **Repaint 模式**中,你将参考音频作为上下文,限定音色、混音和细节,让 DiT 直接对局部进行调整。此时,DiT 更像是你的灵感激发伙伴,既可以帮助你进行创意脑暴,也可以用于修复局部的不和谐。

**DiT(Diffusion Transformer)—— 执行者**

DiT 是「音频工匠」,负责将规划变为现实:
- 接收 LM 生成的语义 codes 和条件
- 通过**扩散过程**从噪声中逐步「雕刻」出音频
- 决定最终的音色、混音、细节

**为什么这样设计?**

传统方法让扩散模型直接从文本生成音频,但文本到音频的映射太模糊。ACE-Step 引入 LM 作为中间层:
- LM 擅长理解语义、做规划
- DiT 擅长生成高保真音频
- 两者配合,各司其职

### 选择规划者:LM 模型

LM 有四种选择:**无 LM**(关闭 thinking 模式)、**0.6B****1.7B****4B**。

它们的训练数据完全一致,区别纯粹在于**知识容量**- 模型越大,世界知识越丰富
- 模型越大,记忆能力越强(比如记住参考音频的旋律)
- 模型越大,在长尾的风格或乐器中表现也相对更好

| 选择 | 速度 | 世界知识 | 记忆能力 | 适用场景 |
|------|:----:|:--------:|:--------:|----------|
| 无 LM | ⚡⚡⚡⚡ | — | — | 你自己做规划(如 Cover 模式) |
| `0.6B` | ⚡⚡⚡ | 基础 | 弱 | 低显存(< 8GB)、快速原型 |
| `1.7B` | ⚡⚡ | 中等 | 中等 | **默认推荐** |
| `4B` | ⚡ | 丰富 | 强 | 复杂任务、高质量生成 |

**如何选择?**

根据你的硬件条件:
- **显存 < 8GB** → 无 LM 或 `0.6B`
- **显存 8–16GB**`1.7B`(默认)
- **显存 > 16GB**`1.7B``4B`

### 选择执行者:DiT 模型

有了规划方案,还需要选择执行者。DiT 是 ACE-Step 1.5 最核心的部分——它承载各种任务,决定如何解读 LM 生成的 codes。

我们开源了 **4 个 Turbo 模型****1 个 SFT 模型****1 个 Base 模型**#### Turbo 系列(推荐日常使用)

Turbo 模型经过蒸馏训练,只需 8 步即可生成高质量音频。四个变体的核心差别在于**蒸馏时的 shift 超参配置****什么是 shift?**

shift 决定了 DiT 去噪时的「注意力分配」:
- **shift 越大** → 更多精力花在早期去噪(从纯噪声中建立大结构),**语义更强**,整体框架更清晰
- **shift 越小** → 去噪步数分配更均匀,**细节更多**,但细节也可能是噪音

简单理解:高 shift 像「先画轮廓再填细节」,低 shift 像「边画边修」。

| 模型 | 蒸馏配置 | 特点 |
|------|----------|------|
| `turbo`(默认) | 在 shift 1, 2, 3 上联合蒸馏 | **创造性与语义兼顾最佳**,经过充分测试,推荐首选 |
| `turbo-shift1` | 仅在 shift=1 上蒸馏 | 细节更丰富,但语义会弱一些 |
| `turbo-shift3` | 仅在 shift=3 上蒸馏 | 音色更清晰丰富,但会显得「干」,配器偏极简 |
| `turbo-continuous` | 实验性,支持 shift 1–5 连续调节 | 调参最灵活,但未经充分测试 |

你可以根据目标音乐风格选择,也许你会发现自己对某个变体有偏好。**我们推荐从默认 turbo 开始**——它是最平衡、最经得起考验的选择。

#### SFT 模型

与 Turbo 相比,SFT 模型有两个显著特点:
- **支持 CFG**(Classifier-Free Guidance),可以精细调节 prompt 遵循程度
- **步数更多**(50 步),给模型更多时间「思考」

代价是:步数多意味着误差累积,音质清晰度可能略逊于 Turbo。但它的**细节表现和语义解析会更好**。

如果你不在乎推理时间,喜欢调 CFG 和步数,且偏好那种丰富的细节感——SFT 是一个好选择。LM 生成的 codes 同样可以作用于 SFT 模型。

#### Base 模型

Base 是**任务的集大成者**,比 SFT 和 Turbo 多出三个独占任务:

| 任务 | 说明 |
|------|------|
| `extract` | 从混合轨道中抽取单个音轨(如分离人声) |
| `lego` | 给已有轨道添加新轨道(如给吉他加鼓) |
| `complete` | 给单轨添加混合伴奏(如给人声加吉他+鼓的伴奏) |

此外,Base 的**可塑性最强**。如果你有大规模数据微调的需求,推荐从 Base 开始实验,训练专属你的 SFT 模型。

#### 创建专属你的自定义模型

除了官方模型,你还可以用 **LoRA 微调**创建专属你的自定义模型。

我们会发布一个示例 LoRA 模型——用 20 多首「新年快乐」主题的歌曲训练,专门适合表达节日氛围。这只是一个起点。

**自定义模型意味着什么?**

你可以用专属的数据配方,重塑 DiT 的能力和偏好:
- 喜欢某种特定的音色风格?用那类歌曲训练
- 想让模型更擅长某种曲风?收集相关数据微调
- 有自己独特的审美品味?把它「教」给模型

这极大拓展了**定制化和可玩性**——用你的审美品味,训练出专属你的模型。

> 关于 LoRA 训练的详细指南,请参阅 [LoRA 训练教程](./LoRA_Training_Tutorial.md)。你也可以使用 Gradio UI 中的「LoRA Training」标签页进行一键训练。

#### DiT 选择总结

| 模型 | 步数 | CFG | 速度 | 独占任务 | 推荐场景 |
|------|:----:|:---:|:----:|----------|----------|
| `turbo`(默认) | 8 | ❌ | ⚡⚡⚡ | — | 日常使用,快速迭代 |
| `sft` | 50 | ✅ | ⚡ | — | 追求细节,喜欢调参 |
| `base` | 50 | ✅ | ⚡ | extract, lego, complete | 特殊任务,大规模微调 |

### 组合搭配

默认配置是 **turbo + 1.7B LM**,适合大多数场景。

| 需求 | 推荐组合 |
|------|----------|
| 最快速度 | `turbo` + 无 LM 或 `0.6B` |
| 日常使用 | `turbo` + `1.7B`(默认) |
| 追求细节 | `sft` + `1.7B``4B` |
| 特殊任务 | `base`|
| 大规模微调 | `base`|
| 低显存(< 4GB) | `turbo` + 无 LM + CPU offload |

### 下载模型

```bash
# 下载默认模型(turbo + 1.7B LM)
uv run acestep-download

# 下载全部模型
uv run acestep-download --all

# 下载特定模型
uv run acestep-download --model acestep-v15-base
uv run acestep-download --model acestep-5Hz-lm-0.6B

# 查看可用模型
uv run acestep-download --list
```

你需要把模型下载在一个`checkpoints`的文件夹中,方便识别。

---

## 引导大象:你能控制什么?

现在你已经认识了这群大象,接下来让我们学习如何与它们沟通。

每一次生成,结果都由三类因素共同决定:**输入控制****推理超参****随机因素**### 一、输入控制:你想要什么?

这是你与模型沟通「创意意图」的部分——你想生成什么样的音乐。

| 类别 | 参数 | 作用 |
|------|------|------|
| **任务类型** | `task_type` | 决定生成模式:text2music、cover、repaint、lego、extract、complete |
| **文本输入** | `caption` | 对音乐整体要素的描述:风格、乐器、情绪、氛围、音色、演唱者性别、起承转合等 |
| | `lyrics` | 时序要素的描述:歌词内容、音乐结构演进、演唱者变化、人声/乐器演奏方式、开始/结束方式、发声方式等(纯音乐填 `[Instrumental]`) |
| **音乐元数据** | `bpm` | 速度(30–300) |
| | `keyscale` | 调性(如 C Major、Am) |
| | `timesignature` | 拍号(4/4、3/4、6/8) |
| | `vocal_language` | 人声语言 |
| | `duration` | 目标时长(秒) |
| **音频参考** | `reference_audio` | 音色或风格的全局参考(用于 cover、风格迁移) |
| | `src_audio` | 源音频,用于非 text2music 任务(text2music 默认静音,无需输入) |
| | `audio_codes` | Cover模式下输入模型的语义 codes(高级用法:复用 codes 生成变体、将歌曲转 codes 拓展衍生、拼接组合像 DJ 一样混搭) |
| **区间控制** | `repainting_start/end` | 操作的时间区间(repaint 重绘区域 / lego 新增分轨区域) |

---

#### 关于 Caption:最重要的输入

**Caption 是影响生成音乐最重要的因素。**

它支持多种输入形式:简单的风格词、逗号分隔的 tags、复杂的自然语言描述。我们在训练中兼容了各种各样的格式,确保文本形式不会显著影响模型表现。

**我们提供了至少 5 种方式帮你写好 caption:**

1. **随机骰子** — 点击 UI 中的随机按钮,看看样例的 caption 是怎么写的。你可以把这个规范化的 caption 作为模板,让 LLM 帮你改写成想要的形式。

2. **Format 自动改写** — 我们支持用 `format` 功能,把你手写的简单 caption 自动扩展成复杂描述。

3. **CoT 重写** — 如果初始化了 LM,无论是否开启 `thinking` 模式,我们都支持通过 Chain-of-Thought 为你重写和扩展 caption(除非你在设置中主动关闭,或没有初始化 LM)。

4. **音频转 Caption** — 我们的 LM 支持将你输入的音频转换为 caption。虽然精度有限,但模糊的方向是对的——足以作为起点。

5. **Simple 模式** — 只需输入一句简单的歌曲描述,LM 会自动为你生成完整的 caption、lyrics 和 metas 样本——适合快速起步。

无论哪种方式,它们都解决了一个现实问题:**作为普通人,我们的音乐词汇是贫瘠的。**

如果你想让生成的音乐更有趣、更符合预期,**Prompting 始终是最优选项**——它带来的边际收益和惊喜最大。

**Caption 写作的常用维度:**

| 维度 | 示例 |
|------|------|
| **风格/流派** | pop, rock, jazz, electronic, hip-hop, R&B, folk, classical, lo-fi, synthwave |
| **情绪/氛围** | melancholic, uplifting, energetic, dreamy, dark, nostalgic, euphoric, intimate |
| **乐器** | acoustic guitar, piano, synth pads, 808 drums, strings, brass, electric bass |
| **音色质感** | warm, bright, crisp, muddy, airy, punchy, lush, raw, polished |
| **时代参考** | 80s synth-pop, 90s grunge, 2010s EDM, vintage soul, modern trap |
| **制作风格** | lo-fi, high-fidelity, live recording, studio-polished, bedroom pop |
| **人声特点** | female vocal, male vocal, breathy, powerful, falsetto, raspy, choir |
| **速度/节奏** | slow tempo, mid-tempo, fast-paced, groovy, driving, laid-back |
| **结构提示** | building intro, catchy chorus, dramatic bridge, fade-out ending |

**一些实用原则:**

1. **具体优于模糊** — 「sad piano ballad with female breathy vocal」比「a sad song」效果好。

2. **组合多个维度** — 单一维度的描述会让模型有太多发挥空间,组合风格+情绪+乐器+音色能更精准地锚定你想要的方向。

3. **善用参考** — 「in the style of 80s synthwave」或「reminiscent of Bon Iver」可以快速传达复杂的美学偏好。

4. **质感词很有用** — warm, crisp, airy, punchy 这类形容词能影响混音和音色的倾向。

5. **不必追求完美描述** — Caption 是起点而非终点。先写一个大致方向,生成后根据结果迭代调整。

6. **描述粒度决定自由度** — 描述越省略,模型发挥空间越大,随机因素影响越多;描述越细致,模型越受约束。根据你的需求决定具体程度——想要惊喜就写少点,想要可控就写详细点。

7. **避免冲突词汇** — 冲突的风格组合容易导致劣化输出。比如同时要「古典弦乐」和「硬核金属」,模型会尝试融合但通常不理想。尤其开启 `thinking` 模式时,LM 在 caption 泛化性上弱于 DiT。当你prompting不合理时,出来惊喜的概率更小。

   **解决冲突的方法:**
   - **重复强化** — 通过重复某些词来强化混搭风格中你更想要的元素
   - **冲突变演变** — 把风格冲突转化为时间上的风格演变。比如:「开头是柔和的弦乐,中段变成噪杂动态的金属摇滚,结尾转为 hip-hop」——这样模型有明确的指引,知道如何处理不同风格,而不是把它们混成一团

> 更多 prompting 技巧可参考:[The Complete Guide to Mastering Suno](https://www.notion.so/The-Complete-Guide-to-Mastering-Suno-Advanced-Strategies-for-Professional-Music-Generation-2d6ae744ebdf8024be42f6645f884221)——虽然是针对 Suno 的教程,但 prompting 的思路是通用的。

---

#### 关于 Lyrics:时序的脚本

如果说 Caption 描述的是音乐的「整体画像」——风格、氛围、音色——那么 **Lyrics 就是音乐的「时间脚本」**,它控制着音乐如何随时间展开。

Lyrics 不仅仅是歌词内容。它承载着:
- 歌词文本本身
- **结构标记**([Verse]、[Chorus]、[Bridge]...)
- **演唱方式提示**([raspy vocal]、[whispered]...)
- **乐器段落**([guitar solo]、[drum break]...)
- **能量变化**([building energy]、[explosive drop]...)

**结构标记是关键**

结构标记(Meta Tags)是 Lyrics 中最强大的工具。它们告诉模型:「这一段是什么,应该怎么表现。」

**常用结构标记:**

| 类别 | 标记 | 说明 |
|------|------|------|
| **基础结构** | `[Intro]` | 开场,建立氛围 |
| | `[Verse]` / `[Verse 1]` | 主歌,叙事推进 |
| | `[Pre-Chorus]` | 导歌,积蓄能量 |
| | `[Chorus]` | 副歌,情感高潮 |
| | `[Bridge]` | 桥段,转折或升华 |
| | `[Outro]` | 结尾,收束 |
| **动态段落** | `[Build]` | 能量逐渐攀升 |
| | `[Drop]` | 电子乐的能量释放 |
| | `[Breakdown]` | 配器减少,留白 |
| **器乐段落** | `[Instrumental]` | 纯器乐,无人声 |
| | `[Guitar Solo]` | 吉他独奏 |
| | `[Piano Interlude]` | 钢琴间奏 |
| **特殊标记** | `[Fade Out]` | 渐弱结束 |
| | `[Silence]` | 静默 |

**组合标记:适度使用**

结构标记可以用 `-` 符号组合,实现更精细的控制:

```
[Chorus - anthemic]
这是副歌的歌词
梦想在燃烧

[Bridge - whispered]
轻轻地说出那些话
```

这比单独写 `[Chorus]` 效果好——你同时告诉了模型这段是什么(Chorus)、以及怎么唱(anthemic)。

**⚠️ 注意:不要堆叠太多标记。**

```
❌ 不推荐:
[Chorus - anthemic - stacked harmonies - high energy - powerful - epic]

✅ 推荐:
[Chorus - anthemic]
```

堆叠过多标记有两个风险:
1. 模型可能把标记内容错误地当作歌词唱出来
2. 过多指令会让模型困惑,效果反而变差

**原则**:结构标记保持简洁,复杂的风格描述放在 Caption 中。

**⚠️ 关键:保持 Caption 和 Lyrics 的一致性**

**模型不擅长解决冲突。** 如果 Caption 和 Lyrics 中的描述相矛盾,模型会困惑,输出质量下降。

```
❌ 冲突示例:
Caption: "violin solo, classical, intimate chamber music"
Lyrics: [Guitar Solo - electric - distorted]

✅ 一致示例:
Caption: "violin solo, classical, intimate chamber music"
Lyrics: [Violin Solo - expressive]
```

**检查清单**- Caption 中的乐器 ↔ Lyrics 中的器乐段落标记
- Caption 中的情绪 ↔ Lyrics 中的能量标记
- Caption 中的人声描述 ↔ Lyrics 中的人声控制标记

把 Caption 想象成「整体设定」,Lyrics 想象成「分镜脚本」——它们应该讲述同一个故事。

**人声控制标记:**

| 标记 | 效果 |
|------|------|
| `[raspy vocal]` | 沙哑、有质感的人声 |
| `[whispered]` | 轻声细语 |
| `[falsetto]` | 假声 |
| `[powerful belting]` | 高亢有力的演唱 |
| `[spoken word]` | 说唱/朗诵 |
| `[harmonies]` | 和声层叠 |
| `[call and response]` | 一呼一应 |
| `[ad-lib]` | 即兴装饰音 |

**能量与情绪标记:**

| 标记 | 效果 |
|------|------|
| `[high energy]` | 高能量、激昂 |
| `[low energy]` | 低能量、内敛 |
| `[building energy]` | 能量递增 |
| `[explosive]` | 爆发性能量 |
| `[melancholic]` | 忧郁 |
| `[euphoric]` | 欣快 |
| `[dreamy]` | 梦幻 |
| `[aggressive]` | 激进 |

**歌词文本的写作技巧**

**1. 控制音节数**

每行 **6-10 个音节**通常效果最好。模型会将音节对齐到节拍上——如果一行 6 音节,下一行 14 音节,节奏会变得奇怪。

```
❌ 不好的例子:
我站在窗前看着外面的世界一切都在改变(18 音节)
你好(2 音节)

✅ 好的例子:
我站在窗前(5 音节)
看着外面世界(6 音节)
一切都在改变(6 音节)
```

**技巧**:同一位置的行(如每段的第一行)保持相近的音节数(±1-2 偏差)。

**2. 用大小写控制强度**

大写表示更强的演唱力度:

```
[Verse]
walking through the empty streets(正常力度)

[Chorus]
WE ARE THE CHAMPIONS!(高强度、呐喊)
```

**3. 用括号表示背景人声**

```
[Chorus]
We rise together (together)
Into the light (into the light)
```

括号内的内容会被处理为背景人声或和声。

**4. 延长元音**

可以通过重复元音来延长音:

```
Feeeling so aliiive
```

但要谨慎使用——效果不稳定,有时会被忽略或发音错误。

**5. 段落清晰分隔**

每个段落之间用空行分隔:

```
[Verse 1]
第一段的歌词
继续第一段

[Chorus]
副歌的歌词
副歌继续
```

**避免「AI 味」歌词**

以下特征会让歌词显得机械、缺乏人味:

| 红旗 🚩 | 说明 |
|---------|------|
| **形容词堆砌** | 「neon skies, electric hearts, endless dreams」——一段里塞满模糊意象 |
| **押韵混乱** | 押韵模式不一致,或刻意凑韵导致语义断裂 |
| **段落边界模糊** | 歌词内容跨越结构标记,Verse 的内容「流」进了 Chorus |
| **没有呼吸感** | 每行太长,无法一口气唱完 |
| **隐喻混用** | 第一段用水的意象,第二段突然变成火,第三段又是飞翔——听众无法锚定 |

**隐喻纪律**:一首歌坚持一个核心隐喻,深入挖掘它的多个方面。比如选择「水」作为隐喻,就可以探索:爱如何像水一样绕过障碍、可以是细雨也可以是洪流、能倒映出对方的样子、无法握住却真实存在。一个意象,多个切面——这让歌词有凝聚力。

**纯音乐的写法**

如果生成纯器乐无人声:

```
[Instrumental]
```

或者用结构标记描述器乐的展开:

```
[Intro - ambient]

[Main Theme - piano]

[Climax - powerful]

[Outro - fade out]
```

**完整示例**

假设 Caption 是:`female vocal, piano ballad, emotional, intimate atmosphere, strings, building to powerful chorus`

```
[Intro - piano]

[Verse 1]
月光洒在窗台上
我听见你的呼吸
城市在远处沉睡
只有我们还醒着

[Pre-Chorus]
这一刻如此安静
却藏着汹涌的心

[Chorus - powerful]
让我们燃烧吧
像夜空中的烟火
短暂却绚烂
这就是我们的时刻

[Verse 2]
时间在指尖流过
我们抓不住什么
但至少此刻拥有
彼此眼中的火焰

[Bridge - whispered]
如果明天一切消散
至少我们曾经闪耀

[Final Chorus]
让我们燃烧吧
像夜空中的烟火
短暂却绚烂
THIS IS OUR MOMENT!

[Outro - fade out]
```

注意:这个示例中,Lyrics 的标记(piano、powerful、whispered)与 Caption 的描述(piano ballad、building to powerful chorus、intimate)保持一致,没有冲突。

---

#### 关于音乐元数据:可选的精细控制

**大部分时候,你不需要手动设置元数据。**

当你开启 `thinking` 模式(或启用 `use_cot_metas`),LM 会根据你的 Caption 和 Lyrics 自动推断合适的 BPM、调性、拍号等。这通常已经足够好了。

但如果你有明确的想法,也可以手动控制它们:

| 参数 | 控制范围 | 说明 |
|------|----------|------|
| `bpm` | 30–300 | 速度。常见分布:慢歌 60–80,中速 90–120,快歌 130–180 |
| `keyscale` | 调性 | 如 `C Major``Am``F# Minor`。影响整体音高和情绪色彩 |
| `timesignature` | 拍号 | `4/4`(最常见)、`3/4`(华尔兹)、`6/8`(摇摆感) |
| `vocal_language` | 语言 | 人声的语言。LM 通常能根据歌词自动识别 |
| `duration` | 秒 | 目标时长。实际生成可能略有偏差 |

**理解控制的边界**

这些参数是**引导**而非**精确指令**- **BPM**:常见范围(60–180)控制效果较好;极端值(如 30 或 280)模型见过的数据少,可能不稳定
- **调性**:常见调(C、G、D、Am、Em)效果稳定;冷门调可能被忽略或偏移
- **拍号**`4/4` 最可靠;`3/4``6/8` 通常 OK;复杂拍号(如 `5/4``7/8`)是高级玩法,效果因风格而异
- **时长**:短歌(30–60s)和中等长度(2–4min)较稳定;超长生成可能出现重复或结构问题

**模型的「参考」方式**

模型并不是机械地执行 `bpm=120`,而是:
1.`120 BPM` 作为一个**锚点**
2. 在这个锚点附近的分布中采样
3. 最终结果可能是 118 或 122,而非精确的 120

这就像告诉乐手「大概 120 的速度」——他们会在这个范围内自然演奏,而非死板地跟着节拍器。

**什么时候需要手动设置?**

| 场景 | 建议 |
|------|------|
| 日常生成 | 不用管,让 LM 自动推断 |
| 有明确速度要求 | 手动设 `bpm` |
| 做特定风格(如华尔兹) | 手动设 `timesignature=3/4` |
| 要配合其他素材 | 手动设 `bpm``duration` |
| 追求特定调性色彩 | 手动设 `keyscale` |

**小贴士**:如果你手动设置了元数据,但生成结果明显不符合——检查一下是否和 Caption/Lyrics 有冲突。比如 Caption 写「slow ballad」但 `bpm=160`,模型会困惑。

**推荐做法**:不要在 Caption 中写速度、BPM、调性等元数据信息。这些应该通过专门的元数据参数(`bpm``keyscale``timesignature` 等)来设置,而不是在 Caption 中描述。Caption 应该专注于风格、情绪、乐器、音色等音乐特征,而元数据信息交给对应的参数控制。

---

#### 关于音频控制:用声音控制声音

**文本是降维抽象的,最好的控制还是用音频去控制。**

用音频控制生成的方式有三种,它们各有不同的控制范围和用途:

---

##### 1. 参考音频(Reference Audio):全局声学特征控制

参考音频(`reference_audio`)用于控制生成音乐的**声学特征**——音色、混音风格、演奏风格等。它**平均了时间维度的信息**,是**作用全局**的。

**参考音频控制什么?**

参考音频主要控制生成音乐的**声学特征**,包括:
- **音色质感**:人声的音色、乐器的音色
- **混音风格**:空间感、动态范围、频率分布
- **演奏风格**:演唱技巧、演奏技法、表达方式
- **整体氛围**:通过参考音频传递的「感觉」

**后台如何处理参考音频?**

当你提供参考音频时,系统会进行以下处理:

1. **音频预处理**   - 加载音频文件,统一标准化为**立体声 48kHz** 格式
   - 检测静音,如果音频完全静音则忽略
   - 如果音频长度不足 30 秒,会重复填充到至少 30 秒
   - 从前、中、后三个位置各随机选择 10 秒片段,拼接成 30 秒的参考片段

2. **编码转换**   - 使用 **VAE(变分自编码器)**`tiled_encode` 方法将音频编码为**潜在表示(latents)**
   - 这些 latents 包含了音频的声学特征信息,但去除了具体的旋律、节奏等结构信息
   - 编码后的 latents 会作为条件输入到 DiT 的生成过程中,**平均时间维度信息,全局作用于整个生成过程**

---

##### 2. 源音频(Source Audio):语义结构控制

源音频(`src_audio`)用于 **Cover 任务**,进行**旋律结构控制**。它的原理是将你输入的源音频量化成语义结构化的信息。

**源音频控制什么?**

源音频会被转换为**语义结构化的信息**,包括:
- **旋律**:音符的走向和音高
- **节奏**:节拍、重音、律动
- **和弦**:和声进行和变化
- **配器**:乐器的编排和层次
- **少许音色**:部分音色信息

**你可以用它做什么?**

1. **控制风格**:保持源音频的结构,改变风格和细节
2. **迁移风格**:将源音频的结构应用到不同的风格中
3. **Retake 抽卡**:生成相似结构但不同的变体,通过多次生成获得不同的演绎
4. **控制影响程度**:通过 `audio_cover_strength` 参数(0.0–1.0)控制源音频的影响强度
   - 强度越高,生成结果越严格遵循源音频的结构
   - 强度越低,生成结果有更多自由发挥的空间

**Cover 的高级用法**

你可以用 Cover 去 **Remix 一首歌**,且支持更改 Caption 和 Lyrics:

- **Remix 创作**:输入一首歌作为源音频,通过修改 Caption 和 Lyrics 来重新诠释它
  - 改变风格:用不同的 Caption 描述(如从 pop 改为 rock)
  - 改变歌词:用新的 Lyrics 重新填词,保持原有的旋律结构
  - 改变情绪:通过 Caption 调整整体氛围(如从悲伤改为欢快)

- **构建复杂的音乐结构**:根据你需要的结构影响程度来构建复杂的音乐旋律走向、层次和律动
  - 通过 `audio_cover_strength` 精细控制结构遵循程度
  - 结合 Caption 和 Lyrics 的修改,在保持核心结构的同时创造新的表达
  - 可以生成多个版本,每个版本在结构、风格、歌词上有不同的侧重

---

##### 3. 基于源音频上下文的控制:局部补全与修改

这是 **Repaint 任务**,基于源音频的上下文进行补全或修改。

**Repaint 的原理**

Repaint 基于**上下文补全**的原理:
- 可以补全**开头****中间局部****结尾**,或**任意区域**
- 操作范围:**3 秒到 90 秒**
- 模型会参考源音频的上下文信息,在指定区间内进行生成

**你可以用它做什么?**

1. **局部修改**:修改指定区间的歌词、结构或内容
2. **改歌词**:保持旋律和配器,只改变歌词内容
3. **改结构**:在指定区间改变音乐结构(如将 Verse 改为 Chorus)
4. **续写**:基于上下文续写开头或结尾
5. **克隆音色**:基于上下文克隆源音频的音色特征

**Repaint 的高级用法**

你可以用 Repaint 实现更复杂的创作需求:

- **无限时长生成**  - 通过多次 Repaint 操作,可以不断续写音频,实现无限时长的生成
  - 每次续写都会基于前一段的上下文,保持音乐的自然过渡和连贯性
  - 可以分段生成,每段 3–90 秒,最终拼接成完整的作品

- **智能音频缝合**  - 将两个音频智能地组织缝合在一起
  - 在第一个音频的结尾使用 Repaint 续写,让过渡自然衔接
  - 或者用 Repaint 修改两个音频之间的连接部分,实现平滑过渡
  - 模型会基于上下文自动处理节奏、和声、音色的衔接,让拼接后的音频听起来像一首完整的作品

---

##### 4. Base 模型的高级音频控制任务**Base 模型**中,我们还支持更多高级的音频控制任务:

**Lego 任务**:基于已有轨道智能添加新轨道
- 输入一个已有的音频轨道(如人声)
- 模型会智能地添加新的轨道(如鼓、吉他、贝斯等)
- 新轨道会与原有轨道在节奏、和声上协调配合

**Complete 任务**:给单轨添加混合轨道
- 输入一个单轨音频(如清唱人声)
- 模型会生成完整的混合伴奏轨道
- 生成的伴奏会与人声在风格、节奏、和声上匹配

**这些高级上下文补全任务**极大拓展了控制方式,更智能地提供灵感和创意。

---

这些参数的组合,决定了你「想要什么」。后面我们会详细讲解输入控制的**原则****技巧**### 二、推理超参:模型怎么生成?

这是影响「生成过程行为」的部分——不改变你要什么,但改变模型怎么做。

**DiT(扩散模型)超参:**

| 参数 | 作用 | 默认值 | 调参建议 |
|------|------|--------|----------|
| `inference_steps` | 扩散步数 | 8 (turbo) | 越多越精细,但越慢。Turbo 用 8,Base 用 32–100 |
| `guidance_scale` | CFG 强度 | 7.0 | 越高越遵循 prompt,但可能过拟合。仅 Base 模型有效 |
| `use_adg` | 自适应双重引导 | False | 开启后动态调整 CFG,仅 Base 模型 |
| `cfg_interval_start/end` | CFG 生效区间 | 0.0–1.0 | 控制在哪个阶段应用 CFG |
| `shift` | 时间步偏移 | 1.0 | 调整去噪轨迹,影响生成风格 |
| `infer_method` | 推理方法 | "ode" | `ode` 确定性,`sde` 引入随机性 |
| `timesteps` | 自定义时间步 | None | 高级用法,覆盖 steps 和 shift |
| `audio_cover_strength` | 参考音频/codes 的影响强度 | 1.0 | 0.0–1.0,越高越接近参考,越低越自由发挥 |

**5Hz LM(语言模型)超参:**

| 参数 | 作用 | 默认值 | 调参建议 |
|------|------|--------|----------|
| `thinking` | 启用 CoT 推理 | True | 开启让 LM 推理元数据和 codes |
| `lm_temperature` | 采样温度 | 0.85 | 越高越随机/创意,越低越保守/确定 |
| `lm_cfg_scale` | LM 的 CFG 强度 | 2.0 | 越高越遵循正向 prompt |
| `lm_top_k` | Top-K 采样 | 0 | 0 表示禁用,限制候选词数量 |
| `lm_top_p` | Top-P 采样 | 0.9 | 核采样,限制累积概率 |
| `lm_negative_prompt` | 负面提示 | "NO USER INPUT" | 告诉 LM 不要生成什么 |
| `use_cot_metas` | CoT 推理元数据 | True | 让 LM 自动推断 BPM、调性等 |
| `use_cot_caption` | CoT 重写 caption | True | 让 LM 优化你的描述 |
| `use_cot_language` | CoT 检测语言 | True | 让 LM 自动识别人声语言 |
| `use_constrained_decoding` | 约束解码 | True | 确保输出格式正确 |

这些参数的组合,决定了模型「怎么做」。

**关于调参的说明**

需要强调的是,**调参因素和随机因素有时候影响相当**。当你调整某个参数时,可能很难判断是参数本身的影响,还是随机性带来的变化。

因此,**推荐固定随机因素去调参**——通过设置固定的 `seed` 值,确保每次生成都从相同的初始噪声开始,这样你才能准确感受到参数对生成音频的真实影响。否则,参数变化的效果可能会被随机性掩盖,让你误判参数的作用。

### 三、随机因素:不确定性的来源

即使所有输入和超参完全相同,两次生成的结果也可能不同。这是因为:

**1. DiT 的初始噪声**
- 扩散模型从随机噪声开始逐步去噪
- `seed` 参数控制这个初始噪声
- 不同的 seed → 不同的起点 → 不同的终点

**2. LM 的采样随机性**
-`lm_temperature > 0`,采样过程本身带有随机性
- 同样的 prompt,每次采样可能选择不同的 token

**3. `infer_method = "sde"` 时的额外噪声**
- SDE 方法在去噪过程中注入额外随机性

---

#### 随机因素的利弊

随机性是一把双刃剑。

**随机性的好处**:
- **探索创作空间**:同样的输入可以产生不同的变体,给你更多选择
- **发现意外惊喜**:有时候随机性会带来你意想不到的优秀结果
- **避免重复**:每次生成都有所不同,不会陷入单一模式的循环

**随机性的挑战**:
- **结果不可控**:你无法精确预测生成结果,可能多次生成都不满意
- **难以复现**:即使输入完全相同,也很难复现某个特定的好结果
- **调参困难**:当你调整参数时,很难判断是参数的影响还是随机性的变化
- **筛选成本**:需要生成多个版本才能找到满意的,增加了时间成本

#### 用怎样的心态面对随机因素?

**1. 接受不确定性**
- 随机性是 AI 音乐生成的本质特征,不是 bug,而是 feature
- 不要期望每次生成都完美,把随机性当作探索的工具

**2. 拥抱探索过程**
- 把生成过程看作「抽卡」或「挖宝」——多试几次,总能找到惊喜
- 享受发现意外好结果的过程,而不是执着于一次成功

**3. 善用固定 seed**
- 当你想要**理解参数影响**时,固定 `seed` 来消除随机性干扰
- 当你想要**探索创作空间**时,让 `seed` 随机变化

**4. 批量生成 + 智能筛选**
- 不要依赖单次生成,而是批量生成多个版本
- 利用自动打分机制进行初步筛选,提高效率

#### 我们的解决方案:大 Batch + 自动打分

因为我们推理速度极快,如果你的显卡显存足够,你可以通过**大 batch 去探索随机空间**:

- **批量生成**:一次生成多个版本(如 batch_size=2,4,8),快速探索随机空间
- **自动打分机制**:我们提供自动打分机制,可以帮助你初步筛选,做 **test time scaling**

**自动打分机制**

我们提供了多种打分指标,其中**我最喜欢的是 DiT Lyrics Alignment Score**- **DiT Lyrics Alignment Score**:这个分数隐式地影响了歌词的准确性
  - 它评估生成音频中歌词与音频的对齐程度
  - 分数越高,说明歌词在音频中的位置越准确,演唱与歌词的匹配度越好
  - 这对于有歌词的音乐生成特别重要,可以帮助你筛选出歌词准确性更高的版本

- **其他打分指标**:还包括其他质量评估指标,可以从多个维度评估生成结果

**工作流程建议**1. **批量生成**:设置较大的 `batch_size`(如 2、4、8),一次生成多个版本
2. **开启 AutoGen**:启用自动生成功能,让系统在后台持续生成新的批次
   - **AutoGen 的机制**:AutoGen 会在你查看当前批次结果时,自动在后台使用相同的参数(但使用随机 seed)生成下一批次
   - 这样你可以持续探索随机空间,而不需要手动点击生成按钮
   - 每个新批次都会使用新的随机 seed,确保结果的多样性
3. **自动打分**:开启自动打分功能,让系统自动为每个版本打分
4. **初步筛选**:根据 DiT Lyrics Alignment Score 等指标,筛选出分数较高的版本
5. **人工精挑**:在筛选出的版本中,人工选择最符合你需求的最终版本

这样既能充分利用随机性探索创作空间,又能通过自动化工具提高效率,避免在大量生成结果中盲目寻找。AutoGen 让你可以「边听边生成」,在浏览当前结果的同时,下一批次已经在后台准备好了。

---

## 结语

这篇教程目前涵盖了 ACE-Step 1.5 的核心概念和使用方法:

- **心智模型**:理解以人为中心的生成设计哲学
- **模型架构**:认识 LM 和 DiT 的协同工作方式
- **输入控制**:掌握文本(Caption、Lyrics、元数据)和音频(参考音频、源音频)的控制方法
- **推理超参**:了解影响生成过程的参数
- **随机因素**:学会利用随机性探索创作空间,并通过大 Batch + AutoGen + 自动打分提高效率

这只是一个开始。还有很多内容我们想分享给你:

- 更多 Prompting 技巧和实战案例
- 不同任务类型的详细使用指南
- 高级玩法和创意工作流
- 常见问题与解决方案
- 性能优化建议

**这篇教程会持续更新和完善。** 如果你在使用过程中有任何问题或建议,欢迎反馈。让我们一起让 ACE-Step 成为你口袋里的创作伙伴。

---

*未完待续...*