利用人工智能编曲,似乎已经不是一件新鲜事。
但是你有听说哪个 AI 发布专辑吗?
这个专辑的作者是一个叫 DeepSlayerXL 的智能程序,它基于 Transformer-XL 语言模型训练,可以自动生成金属乐数据。
AI 写歌早就不新鲜了,不会谱曲都不好意思说自己是人工智能,但是玩摇滚的 AI,确实是第一次出现。
创作金属乐的 AI
DeepSlayerXL 的开发者 Bernhard Mueller,青年时期参与金属乐队演奏,由此产生创作金属乐 AI 的想法。
Andrew Shaw 开发的 musicautobot,最符合摇滚音乐创作,Bernhard Mueller 就在它的基础上编写代码,改造出能够自动生成金属乐的程序 DeepSlayerXL。
它的内核同样离不开 Transformer-XL 语言训练模型。
该程序将 MIDI 音乐数据,转换为语言模型可识别的编码文本,训练具备自动生成 token 编码数据的能力后,以同样的规则转换为 MIDI 音乐数据,完成编曲。
▲ 对 MIDI 音乐进行 token 编码转化。
有时候 AI 也免不了偷懒,直接拿训练过它的数据来用,也就是常说的通用和弦。
由于对整体结构没有相应的训练,DeepSlayerXL 还无法做到写出节拍一致结构完整的曲子。
也是这个原因,使得它创作的音乐不受拘泥,跨越多个流派,具备独特的风格。
比如像这首《Arab Spring》,就是 DeepSlayerXL 音乐专辑的其中一个作品。
如果不说,谁又能想到这是莫得感情的 AI 创作的呢?
GPT-3 点评金属乐专辑
DeepSlayerXL 金属乐专辑,灵感起源于它的开发者 Bernhard Mueller 青年时期经历。由于受新金属运动的影响,它的歌曲风格多样,集各类型摇滚乐特色于一体。
在 Bernhard Mueller 练习演奏过程,以及对其他歌曲二次创作过程,萌生出结合语言模型创作歌曲的想法,由此诞生 DeepSlayerXL。
DeepSlayerXL 创作出来的歌曲,听来还是有点意思的,十分符合外行人对摇滚乐的印象。
比如这首《A Pumpkin’s Life》,谁听了不得感叹一句“好像就是这个味”。
GPT-3 给这首歌做了个点评,毕竟只有 AI 更懂 AI。
“这首歌和南瓜派没有任何关系,它带有 80 年代老式垃圾摇滚的痕迹。另外,这首歌的歌词也让它本身变得有趣,讲述世界如何变得越来越危险,我们需要为接下来可能发生的事情做好准备。这是一个非常深刻的哲学问题。”
专辑中还有其他不错的歌曲,相应的,像模像样的 GPT-3 点评一个都没少。
“《dark meter》与 Pink Floyd 甚至一些早期 Talking Heads 的音乐有更多共同之处,这是对熟悉流派的尝试。”
“《This is the End》曲目融合了工业噪音和环境声景,有时像在听混音带。但是会出现噪音无缝转化为轻松旋律的声音,这是一个有趣的节奏变化。”
用 AI 创作金属乐
会写歌的人工智能,谁不想体验一下?
感兴趣的朋友可以自行下载 PyTorch 模型,或者登陆 Colab notebook 在线平台(链接均在文末)亲自体验。
调整音乐序列长度,通过修改这部分数据来实现。
还可以自己输入一小段音乐片段,让程序补全一首歌。
就算完全不懂摇滚,也不了解代码,照样可以创作属于你的金属乐。
DeepSlayerXL 的原理
DeepSlayerXL 编曲金属乐(甚至还出专辑),具体是怎么做到的?
和基础程序 musicautobot 一样,它们都依赖于 TransformerXL 模型训练数据。
用到的训练数据集,是从网络上抓取的 3,604 首俄罗斯 MIDI 歌曲。将每首歌向任意方向移调半步,由此获得了 18k 完整的 MIDI 歌曲训练数据。
在 MIDI 歌曲数据中,单一音符包含了间距和持续时间信息,并且在同一时间点可以存在多个音符。这样的 2D 数据无法被 Transformer 模型识别,需要将其转换为单一维度文本数据。
通过 musicautobot 标记和流行音乐 Transformer 的 BAR 标记规则,将每个音符的音高和时长用对应 token 编码,并在标记中体现出音符演奏顺序,解决多个音符叠加的识别难题。
鼓点信息由 DRUM [NUMBER] 标记补充表示,这样,MIDI 音乐数据就完全被转化为由 token 编码组成的文本(如前文所示)。
使用转换为 token 编码的 MIDI 数据集,对 TransformerXL 模型训练 200 个小时,完成语言学习。
自动生成一系列 token 数据后,按照同样的编码规则,将其转换为 MIDI 音乐数据,完成金属乐创作。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/103314.html