OpenAI Jukebox

OpenAI Jukebox 是一种神经网络,能够将音乐生成为原始音频,从而合成各种流派和艺术家风格,包括初步的歌声。与生成类似 MIDI 音符的符号音乐生成器不同,Jukebox 直接建模音频,使其能够捕捉人声和复杂的音色。

技术方法:层次压缩与生成

Jukebox 通过使用层次自编码器和基于 Transformer 的先验来克服建模原始音频的挑战——其中一首四分钟的 CD 质量歌曲包含超过 1000 万个时间步。

通过 VQ-VAE 进行原始音频压缩

Jukebox 使用向量量化变分自编码器(VQ-VAE)将 44kHz 原始音频压缩到离散潜在空间。该模型采用三个压缩级别(8x、32x、128x),每个级别的码本大小为 2048。为了提升性能,OpenAI 实施了三项特定改进:

  • 随机重启: 为了防止码本崩溃,如果码本向量的使用率低于某个阈值,则将其随机重置为编码后的隐藏状态。
  • 独立解码器: 每个级别使用独立的解码器来重构输入,以最大化上层级别的实用性。
  • 频谱损失: 添加了一个频谱损失函数,以惩罚输入与重构频谱之间的差异,有助于重构更高频率。

通过稀疏 Transformer 进行音乐生成

音频压缩后,三个基于稀疏 Transformer 简化变体的自回归先验模型学习这些码的分布:

  • 顶层先验: 在 8,192 个码的上下文中(约 24 秒音频)建模长程结构和高层语义(旋律和歌声)。
  • 上采样先验: 后续两个级别添加局部音乐结构和音色,在较短的上下文中(分别为 6 秒和 1.5 秒)提升音频质量。

条件与数据集

Jukebox 在一个包含 120 万首歌曲的精选数据集上进行训练,其中包括 60 万首英文歌曲,并配有来自 LyricWiki 的元数据和歌词。该模型支持三种类型的条件来引导生成:

  • 艺术家和流派: 通过提供艺术家和流派标签,模型降低预测熵,并能够生成特定风格的音乐。无监督聚类(通过 t-SNE)表明模型自然地将相似的艺术家和流派归类在一起。
  • 歌词: 为了处理未对齐的歌词,Jukebox 使用线性对齐启发式方法,并且对于嘻哈等快速流派,采用 Spleeter 提取人声并使用 NUS AutoLyricsAlign 进行词级对齐。编码器-解码器注意力层使音乐解码器能够关注歌词编码器。

当前局限性

尽管具备这些能力,Jukebox 相比人类创作的音乐仍存在若干技术和创作上的差距:

  • 缺乏大规模结构: 虽然局部连贯性和和弦模式存在,但模型尚未能够生成如副歌这样的重复大规模结构。
  • 音频伪物: 下采样和上采样过程会引入可辨识的噪声。
  • 采样速度: 由于其自回归特性,模型较慢;渲染一分钟音频大约需要 9 小时。
  • 数据集偏差: 训练目前主要局限于英文歌词和西方音乐。

开发时间线

  • 2019 年 7 月: 开发了初始的原始音频模型,以重现钢琴和小提琴等乐器。
  • 2019 年 9 月: 在数据集中加入艺术家和流派标签,使得能够生成具有长程连贯性的完整歌曲。
  • 2020 年 1 月: 将 VQ-VAE 扩展到 44kHz,并将顶层先验从 1B 参数提升到 5B 参数,从而实现更清晰的歌声和更高的质量。
  • 2020 年 1 月: 引入歌词条件,以学习发音和歌声对齐。

Sources