论文题目:LONG-FORM MUSIC GENERATION WITH LATENT DIFFUSION(潜在扩散的长形式音乐生成)
会议:Arxiv2404.10301v2
摘要:基于音频的音乐生成模型最近取得了长足的进步,但到目前为止还没有成功地从文本提示中产生具有连贯音乐结构的完整长度的音乐轨道。我们表明,通过在长时间背景下训练生成模型,有可能产生高达4m45s的长形式音乐。我们的模型由一个工作在高度下采样的连续潜伏率(潜伏率为21.5赫兹)上的扩散变压器组成。它根据音频质量和即时对齐的指标获得最先进的代数,主观测试表明它可以产生结构连贯的全长音乐。
Stable Audio 2:用潜在扩散模型生成完整歌曲
一、为什么之前的模型不够用?
1.1 流行音乐比你想象的要长得多
现有的文本条件音乐生成模型,包括 MusicGen、MusicLM、AudioLDM 2 等,训练时使用的音频片段通常只有10~30 秒,少数模型(如 Stable Audio 1)达到了90 秒。但这远远不够。
📊此处配图:论文Figure 1(流行音乐时长累积直方图)累积直方图,显示流行音乐的代表性样本中小于特定长度的音乐的比例1。虚线:与我们的型号(285s)和以前的型号(90s)的最大世代长度相关的比例。为了提高可读性,垂直轴按幂定律进行了扭曲。
论文分析了 Spotify 上 60 万首流行歌曲的时长分布。数据显示,90 秒以内只覆盖了约17%的流行音乐;而将生成时长扩展到4 分 45 秒(285 秒),则可以覆盖约83%。这意味着,过去几乎所有的音乐生成模型,在面对"生成一首完整歌曲"这个任务时,从训练阶段就已经力不从心了。
1.2 短片段训练 = 没有结构
用短片段训练出来的模型,即使通过自回归拼接的方式生成更长的音频,也只能保证局部连贯——相邻几秒听起来还行,但整体毫无章法,没有前奏、主歌、副歌、尾奏这样的宏观结构。
MusicGen 就是典型例子:它可以生成任意长度的音频,但结果往往是某个段落无限重复,或者整首曲子从头到尾都在同一个"状态"里打转,像一首没有终点的循环。
1.3 长时序建模的显存瓶颈
想要从根本上解决问题,就必须在训练时就让模型"看到"完整的歌曲。但问题在于:4 分 45 秒的 44.1kHz 立体声音频包含约1260 万个采样点。即使压缩成 latent,如果帧率在 40~150 Hz(主流水平),序列长度仍高达 1 万~4 万帧,远超当前 GPU 的显存容量。
1.4 以往的"绕路"方案:语义 token
MusicLM 和 AudioLM 的解决思路是引入"语义 token"作为中间层:先用文本预测高层语义表示,再用语义引导生成声学 token,最后重建波形。这条路虽然有效,但整个流程被拆成了四个阶段,管线极为复杂,维护成本高。
Stable Audio 2 的目标是:绕开语义 token,用一个三阶段的端到端系统,一次性生成长达 4 分 45 秒的完整音乐。
二、模型架构:三个组件协同工作
整个系统由三个模块串联:
文本提示 ↓ CLAP 文本编码器(125M) ↓ Diffusion-Transformer DiT(1.1B) ← 在 latent 空间扩散 ↓ 自编码器 Decoder(157M 的一部分) ↓ 44.1kHz 立体声波形总参数量约1.3B。
📊此处配图:论文Figure 2(DiT 架构图)和Figure 3(自编码器架构图)
2.1 自编码器:把音频压缩到极致
自编码器承担着将原始波形压缩成可操作序列的任务,是整个系统能否处理长音频的关键。
架构:编码器由多组卷积块构成,每组包含膨胀卷积 + Snake 激活(可学习周期性参数 β)+ 步进卷积(用于下采样)。解码器结构镜像对称,用转置步进卷积上采样。瓶颈层是一个变分自编码器(VAE),输出 64 通道的连续 latent。
最关键的指标——latent 帧率:21.5 Hz。
这是本文自编码器与所有前人工作最大的区别。对比一下:
| 模型 | latent 帧率 |
|---|---|
| DAC | 86 Hz(离散) |
| Stable Audio 1 | 43 Hz(连续) |
| Stable Audio 2(本文) | 21.5 Hz(连续) |
21.5 Hz 意味着 4 分 45 秒的音频被压缩成约6,100 帧,这才让 Transformer 对全曲建模成为可能。
训练损失由三部分组成:
- 多分辨率 STFT 重建损失:分别施加在 Mid/Side 和 Left/Right 立体声表示上,L/R 权重为 0.5,专门约束立体声定位。
- 对抗损失(GAN):使用 5 个卷积判别器,参数量约为前人工作的 4 倍。
- KL 散度损失:权重为
,约束 latent 分布。
代价是轻微的重建质量下降,但保持了可接受的感知质量(见第四节自编码器评测)。
2.2 Diffusion-Transformer(DiT):扩散模型的主体
DiT 是整个系统参数量最大的部分(1.1B),在自编码器的 latent 空间中执行扩散过程。
为什么用 Transformer 而不是 U-Net?
主流音频扩散模型(AudioLDM、Stable Audio 1)都用卷积 U-Net。但 U-Net 的感受野受卷积核限制,难以建模几分钟跨度的长程依赖。Transformer 的全局自注意力机制天然适合长序列。
架构细节:标准 Transformer 堆叠,每个 Block 包含:LayerNorm → 自注意力 → Cross-attention → 门控 MLP,每个子模块都有残差连接。注意力的 Key/Query 施加了旋转位置编码(RoPE),处理的是 latent 序列的下半部分嵌入维度。此外,使用了 FlashAttention 分块高效注意力和梯度检查点,两者对于在如此长序列上训练 Transformer 至关重要。
三路条件注入是 DiT 的设计亮点:
| 条件信号 | 内容 | 注入方式 |
|---|---|---|
| 文本 | CLAP 文本嵌入 | Cross-attention |
| 时序信息 | 目标时长、当前位置(正弦编码) | Cross-attention + Prepend |
| 扩散步 | 当前扩散 timestep(正弦编码) | Prepend |
其中"Prepend"是指将条件 token 直接拼接在序列前端,让整个序列中的每个位置都能通过自注意力感知到它。
扩散训练采用 v-objective(预测噪声的速度方向而非噪声本身),推理使用 DPM-Solver++(100 步),Classifier-Free Guidance scale 为 7.0。
2.3 CLAP 文本编码器
使用对比学习(CLAP)从头训练一个文本-音频编码器,约消耗 3k GPU 小时。文本编码器基于 RoBERTa,音频编码器基于 HTSAT。推理时使用 CLAP 文本编码器的倒数第二层隐状态(而非最后一层)作为文本特征,这与 Stable Audio 1 保持一致,实践中效果更稳定。
2.4 可变长度生成
通过 timing conditioning,用户可以指定任意目标时长(例如 3 分 10 秒或 4 分 45 秒)。模型在窗口末尾自动填充静音,推理结束后裁剪掉静音部分即可得到目标长度的音频。整个过程无需为每种时长单独训练模型。
三、训练:两阶段课程学习
自编码器和 CLAP 先独立训练,然后再训练 DiT。
DiT 的训练是两阶段的:
第一阶段(预训练):在最长3 分 10 秒的片段上训练,消耗约70k GPU hours(A100)。
第二阶段(微调):以预训练权重为起点,在最长4 分 45 秒的片段上微调,额外消耗约15k GPU hours。
这种课程式训练的好处是显著降低了直接在超长上下文上从头训练的难度和风险,两阶段的定量指标无明显退化也印证了这一策略的可行性。
数据集:806,284 个文件,共 19,500 小时,其中 66% 为音乐,25% 为音效,9% 为乐器分轨,全部含文本元数据(BPM、流派、情绪、乐器等)。文本提示在训练时随机拼接元数据子集,并以两种分隔符格式(逗号 / 竖线)交替构造,增强鲁棒性。
优化器使用 AdamW,基础学习率,配合指数式预热和衰减调度,并维护权重的指数移动平均(EMA)用于推理。
四、实验结果
4.1 定量评估:全面超越 MusicGen
评测基准为Song Describer Dataset(无人声子集,586 条提示),使用三个已验证的自动化指标:
- FD_openl3(Fréchet Distance,越低越好):衡量生成音频与真实音频分布的距离
- KL_passt(KL 散度,越低越好):衡量标签分布匹配程度
- CLAP score(越高越好):衡量音频与文本提示的语义对齐
📊此处配表:论文Table 2(预训练模型结果)
预训练模型(最长生成 3 分 10 秒)与 MusicGen-large-stereo 对比,在 2 分钟生成长度上:FD_openl3 从 204.03 降到78.70(↓61%),KL_passt 从 0.49 降到0.36(↓27%),CLAP score 从 0.28 升到0.39(↑39%)。推理耗时仅8 秒,而 MusicGen 需要6 分 38 秒,快约 50 倍。
📊此处配表:论文Table 3(全量训练模型结果)
全量训练模型(最长生成 4 分 45 秒)在各长度上同样全面优于 MusicGen,且与预训练模型相比无明显退化,说明从 3 分 10 秒扩展到 4 分 45 秒的微调策略是有效且无损的。生成 4 分 45 秒完整音乐仅需13 秒,而 MusicGen 需要近13 分钟。
4.2 主观评测:接近真实录音水准
26 位音乐制作人和音乐研究人员参与了主观评测,使用 webMUSHRA 框架,对音频质量、文本对齐、音乐结构、音乐性和立体声正确性打分(1~5 分)。
📊此处配表:论文Table 4(主观评测 MOS 分数)
主要结论如下:
在4 分 45 秒生成上,Stable Audio 2 在音频质量(4.5)、文本对齐(4.6)、音乐性(4.3)方面均达到与真实录音(4.6/4.6/4.6)接近的水平,音乐结构(4.0)也达到"好"的水准,立体声正确率高达100%。MusicGen 在所有维度上均只有 2.1~2.9 分,立体声正确率仅 57%(因为其倾向于将本应居中的乐器如底鼓、贝斯偏向一侧)。
值得注意的是,2 分钟生成的音乐结构得分(3.5)略低于 4 分 45 秒(4.0),作者认为这是因为训练集中 2 分钟左右的音乐往往是重复性的循环素材,而非完整结构的歌曲,导致模型在此长度上的结构表现不如更长的生成。
这一发现也印证了论文的核心论点:长程音乐结构的涌现需要足够长的训练上下文,而不是靠语义 token 来"钦点"。不是到 90 秒就够了——要到 4 分 45 秒,模型才真正学会了歌曲结构。
4.3 自编码器评测:在极低帧率下保持感知质量
单独评测自编码器的重建质量,将 Song Describer Dataset(706 首)编码后解码,与若干主流 codec 比较。
📊此处配表:论文Table 5(自编码器重建质量对比)
本文自编码器(21.5 Hz)的 STFT 距离(1.19)和 MEL 距离(0.71)与 Stable Audio 1(43 Hz,1.19/0.67)相当,SI-SDR(7.14)略低于后者(8.62),但时序压缩量是 Stable Audio 1 的2 倍。相比 DAC(86 Hz,STFT 0.96)和 EnCodec(50 Hz,STFT 1.82),本文的极低帧率下依然维持了有竞争力的感知质量。
结论是:重建质量的轻微下降,是用来换取序列长度大幅压缩的合理代价,整体音频质量仍足以支撑高质量的生成任务。
4.4 音乐结构分析:自相似矩阵可视化
📊此处配图:论文Figure 4(三行自相似矩阵对比图,每列对应摇滚、流行、爵士、嘻哈、古典五种流派)
论文用二值自相似矩阵(SSM)直观验证了生成音乐的结构质量:横轴和纵轴均为时间,颜色深的格子表示对应两个时间段的音频片段相似。真实音乐(第一行)呈现出清晰的块状结构和对角跳变,代表段落的重复与对比。
Stable Audio 2 的生成(第二行)与真实音乐非常相似——能看到明显的块状结构,晚期段落中出现与早期段落相似的红色标记,说明主题动机得到了重现。MusicGen 的生成(第三行)则呈现出两种典型缺陷:要么早期段落基本不重复(整幅图呈对角线形态),要么在中间或结尾段落陷入循环(蓝色重复块)。
4.5 记忆化分析
论文对生成样本是否"抄袭"训练数据进行了严格检验:用 LAION-CLAP 音频编码器将训练集全部嵌入,并找出其中 5,566 个完全重复的音频;然后针对这些最高风险提示生成音乐,在 CLAP 空间中找出 Top-50 最相似的生成样本逐一人工审听。结论是:未发现任何记忆化现象。
五、拓展能力
论文还展示了三个非主线但有趣的能力(均在 demo 页面提供样本):
音频到音频(Audio-to-Audio)风格迁移:在扩散采样时,不从纯噪声出发,而是将参考音频加噪后作为起点,再按文本提示去噪。这样可以在保留参考音频整体结构的前提下改变其风格,例如将一段打击乐口技(beatbox)转换为真实鼓声。
人声生成:训练集包含部分人声音乐,但没有歌词条件,因此当提示中包含人声相关词汇时,模型会生成"无字旋律"式的哼唱——没有可辨识的词汇,但具有一定的旋律和音色特征。
短音效生成:训练集中包含音效和乐器单音样本,模型在被适当提示时也能生成这类短时音频。
六、总结
Stable Audio 2 的贡献可以概括为:
- 将文本条件音乐生成的时长从 90 秒扩展到4 分 45 秒,覆盖了 83% 的流行音乐。
- 通过将 latent 帧率压缩至21.5 Hz,使全曲全上下文 Transformer 建模在单 GPU 上成为可能。
- 用实验证明了不需要语义 token,足够长的训练上下文本身就能让音乐结构从数据中涌现出来。
- 在所有定量指标上大幅领先唯一可比基线 MusicGen,同时推理速度快约50 倍(13 秒 vs 13 分钟)。
- 主观评测中,4 分 45 秒生成在音频质量、文本对齐和音乐性上达到接近真实录音的水准,立体声正确率100%。
这项工作的核心洞察其实很朴素:模型能生成什么,很大程度上取决于训练时它看到了什么。想要有结构的完整歌曲,就必须训练时看完整首歌。