投币式自动点唱机 / 自动唱机

2020-05-02 18:02:57

Jukebox提供流派、艺术家和歌词作为输入,输出从头开始制作的新音乐样本。下面,我们展示一些我们最喜欢的样品。

浏览所有示例。

自动音乐生成可以追溯到半个多世纪前。一种突出的方法是以钢琴卷的形式象征性地生成音乐,它指定了每个音符的时间、音高、速度和乐器。这导致了令人印象深刻的结果,如制作巴赫合唱团,多种乐器的复调音乐,以及分钟长的音乐作品。

但符号生成器有其局限性--它们无法捕捉人声或许多音乐必不可少的更微妙的音色、动感和表现力。另一种不同的方法[1]是将音乐直接建模为原始音频。因为序列非常长,所以在音频级生成音乐是具有挑战性的。CD音质(44 kHz,16位)的一首典型的4分钟歌曲有超过1000万个时间步。相比之下,GPT-2有1000个时间步,OpenAI Fivtook有数万个时间步……。

解决长输入问题的一种方法是使用自动编码器,该自动编码器通过丢弃一些感知上不相关的信息位来将原始音频压缩到低维空间。然后,我们可以训练一个模型,以便在这个压缩空间中生成音频,并对原始音频空间进行上采样。

我们选择从事音乐工作是因为我们想继续突破生成模式的界限。我们之前在MuseNet上的工作探索了基于大量MIDI数据合成音乐。现在,在原始音频中,我们的模型必须学会处理高分集和非常长的范围结构,而原始音频域尤其不能容忍短、中或长时间的错误。

Jukebox的自动编码器模型使用一种称为VQ-VAE的基于量化的方法将音频压缩到离散空间。分层VQ-VAE可以从几套乐器中产生短的乐器段,但是由于使用连续的编码器和自回归解码器,它们会遭受分层崩溃的影响。一种名为VQ-VAE-2的简化变体通过仅使用前馈编码器和解码器避免了这些问题,并且它们在生成高保真图像方面显示出令人印象深刻的结果.。

我们从VQ-VAE-2中汲取灵感,并将他们的方法应用到音乐中。我们对其架构进行了如下修改:

为了缓解VQ-VAE模型常见的码本崩溃,我们使用随机重新启动,当码本向量的使用率低于阈值时,我们将其随机重置为编码的隐藏状态之一。

为了最大限度地利用上层,我们使用单独的解码器,并从每一层的代码中独立地重构输入。

为了使模型能够容易地重建更高的频率,我们增加了一个光谱损失,它惩罚了输入和重建频谱图的差异的范数。

我们在VQ-VAE中使用了三个级别,如下所示,分别将44 kHz原始音频压缩8x、32x和128x,每个级别的码本大小为2048。这种下采样会丢失大部分音频细节,并且当我们进一步向下采样时,听起来会有明显的噪音。但是,它保留了有关音频的音高、音色和音量的基本信息。

接下来,我们训练先验模型,其目标是学习VQ-VAE编码的音乐代码的分布,并在这个压缩的离散空间中生成音乐。与VQ-VAE一样,我们也有三个级别的先验:顶级先验生成压缩程度最高的代码,两个上采样先验根据上述条件生成压缩程度较低的代码。

顶级先验对音乐的远程结构进行建模,从该级别解码的样本具有较低的音频质量,但捕获了歌唱和旋律等高级语义。中间和底部上采样先验添加了音色等本地音乐结构,显著提高了音频质量。

我们使用稀疏变压器的简化变体将它们训练成自回归模型。这些模型中的每一个都在8192个代码的上下文中具有72层分解的自我注意,这分别对应于顶层、中层和底层的大约24秒、6秒和1.5秒的原始音频。

一旦所有先验都被训练好,我们就可以从顶层生成代码,使用上采样器对它们进行上采样,然后使用VQ-VAE解码器将它们解码回原始音频空间,以对新奇的歌曲进行采样。

为了训练这个模型,我们在网络上爬行,整理了一个包含120万首歌曲(其中60万首是英语的)的新数据集,并与LyricWiki的相应歌词和元数据配对。元数据包括艺术家、专辑类型和歌曲年份,以及与每首歌曲相关联的共同情绪或播放列表关键字。我们在32位、44.1 kHz的原始音频上进行训练,并通过随机下混右声道和左声道来执行数据增强,以产生单声道音频。

顶层变压器经过培训