PyTorch生成式人工智能(29):基于Transformer模型实现音乐生成
- 0. 前言:Transformer音乐生成概述
- 1. 音乐 Transformer 简介
- 1.1 基于演奏的音乐表示方法
- 1.2 音乐 Transformer 架构解析
- 1.3 训练音乐 Transformer 的完整流程
- 2. 音乐片段分词处理
- 2.1 下载训练数据(Maestro钢琴数据集)
- 2.2 MIDI 文件分词技术
- 2.3 准备训练数据的关键步骤
- 3. 构建音乐生成 Transformer
- 3.1 音乐 Transformer 超参数配置
- 3.2 构建音乐Transformer模型结构
- 4 训练与应用音乐Transformer
- 4.1 训练音乐Transformer的实践方法
- 4.2 使用训练好的 Transformer 生成音乐
- 小结
- 系列链接
0. 前言
此前我们利用MuseGAN将音乐视为类似图像的多维对象,成功生成了多音轨作品。如今换一种思路——将音乐看作一串连续的事件序列,类似自然语言处理的方式。具体而言,我们将构建一个类似GPT的Transformer模型,使其能够根据前面所有音符预测下一个音符。该模型拥有2016万个参数,足以捕捉不同音符在整首曲子中的长期依赖关系,同时训练时间也控制在合理范围内。
训练数据源自Maestro钢琴音乐集。第一步,将MIDI文件转换为音符序列——相当于NLP领域的原始文本。接着,将音符序列切分为小片段,即“音乐事件”,类似于NLP中的词元(token)。由于神经网络仅识别数字,我们需要为每个事件分配一个唯一索引。如此一来,整段音乐便转化为索引序列,可直接输入模型进行训练。
训练完成后,该Transformer能够生成与训练集风格高度相似的逼真音乐。与MuseGAN相比,一个显著差异在于:通过调节温度参数,可以控制生成时的随机程度——温度高时音符跳跃更自由,温度低时输出更保守、更贴近训练数据。下图展示了一个生成示例。

