第 11 章 音乐生成
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
音乐创作是一个复杂而富有创造性的过程,需要将旋律、和声、节奏和音色等不同的音乐元素结合起来。虽然这在传统上被视为人类独有的活动,但近年来的进步使人们有可能创作出既悦耳又具有长期结构的音乐。
最流行的音乐生成技术之一是变换器,因为音乐可以被视为序列预测问题。这些模型通过将音符视为一串标记(类似于句子中的单词)来生成音乐。Transformer 模型根据前一个音符学会预测序列中的下一个音符,从而生成一段音乐。
MuseGAN 采用完全不同的方法生成音乐。与逐个音符生成音乐的变形金刚不同,MuseGAN 将音乐视为由音高轴和时间轴组成的图像,从而一次性生成整个音乐曲目。此外,MuseGAN 还将和弦、风格、旋律和旋律等不同的音乐元素分离出来,以便对它们进行独立控制。
在本章中,我们将学习如何处理音乐数据,并应用变换器和 MuseGAN 生成与给定训练集风格相似的音乐。
导言
要想让机器创作出悦耳的音乐,它就必须掌握我们在第 9 章中看到的与文字相关的许多相同的技术难题。特别是,我们的模型必须能够学习和重新创建音乐的序列结构,并能够从一组离散的可能性中选择后续音符。
然而,音乐 的生成还面临着文本生成所不具备的额外挑战,即音高和节奏。音乐通常是复调的,也就是说,不同的乐器会同时演奏多个音符流,这些音符流组合在一起会产生不和谐(冲突)或和谐(协调)的和声。文本生成只要求我们处理单一的文本流,而音乐中存在平行的和弦流。
此外,文本生成可以一个字一个字地处理。与文本数据不同的是,音乐是由多部分声音交织而成的织锦,这些声音不一定在同一时间发出--聆听音乐的兴趣很大程度上来自于合奏中不同节奏之间的相互作用。例如,吉他手可能会弹奏一连串较快的音符,而钢琴家则会保持一个较长的持续和弦。因此,逐个音符生成音乐是很复杂的,因为我们通常不希望所有乐器同时变换音符。
本章开始时,我们将简化问题,将重点放在单行(单音)音乐的生成上。第 9 章中用于文本生成的许多技术也可用于音乐生成,因为这两项任务有许多共同的主题。首先,我们将训练一个变换器来生成 J.S. 巴赫大提琴组曲风格的音乐,看看注意力机制如何让模型关注前一个音符,从而确定最自然的后一个音符。然后,我们将处理多声部音乐生成任务,并探索如何部署基于 GAN 的架构来创建多声部音乐。
音乐世代的变形金刚
我们在这里要建立的模型是一个解码变换器,它借鉴了 OpenAI 的MuseNet,后者也使用了一个经过训练的解码变换器(类似于 GPT-3),可以根据之前的音符序列预测下一个音符。
在音乐生成任务中,序列长度为 会随着音乐的进行而增加,这意味着 每个音头的注意力矩阵的存储和计算都会变得很昂贵。在理想情况下,我们不希望将输入序列压缩到很短的标记数,因为我们希望模型能像人类作曲家那样,围绕长期结构构建乐曲,并重复几分钟前的主题和乐句。 ...