PyTorch 生成式 AI:基于 Transformer 的音乐生成实践
前言
我们之前探讨过如何使用 MuseGAN 生成逼真的多音轨音乐。MuseGAN 将一段音乐视为一个类似图像的多维对象,并生成与训练数据集中相似的音乐作品。在本节中,我们将采用另一种方法来创作音乐,将音乐视为一系列音乐事件。具体来说,我们将开发一个类似 GPT 的模型,基于序列中所有先前事件来预测下一个音乐事件。
本节将创建的音乐 Transformer 拥有 2016 万个参数,足以捕捉不同音符在音乐作品中的长期关系,同时也可以在合理的时间内完成训练。我们将使用 Maestro 钢琴音乐作为训练数据,将 MIDI 文件转换为音符序列,类似于自然语言处理(NLP)中的原始文本数据。接着,将这些音符拆分为小片段,称为音乐事件,这类似于 NLP 中的词元(token)。由于神经网络只能接受数值输入,需要把每个唯一事件词元映射到一个索引。这样,训练数据中的音乐片段就被转换为一系列索引,用于输入神经网络。
经过训练的音乐 Transformer 能够生成逼真的音乐,模仿训练数据集中的风格。此外,与 MuseGAN 生成的音乐不同,我们可以通过调整温度参数来缩放预测的对数概率分布,从而控制生成音乐的多样性和创造性。


