你也能当作曲家!详解基于深度神经网络的音乐风格迁移

yunpiao 2018-01-15

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

参与 | shawn

编辑 | Donna

什么是风格迁移?

过去十年间,深度神经网络(DNN)被用于解决多种人工智能的任务,例如:图像分类、语音识别和游戏等,并迅速成为最先进的解决方法。

研究人员致力于开发可以帮助我们理解DNN模型学习原理的可视化工具(例如:Deep Dream、Filters),揭开DNN在图像分类领域成功的秘密。他们开发出了一个有趣的应用:从一个图像中提取风格并将其应用于另一个“内容不同”的图像。这就是所谓的“图像风格迁移”。

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

左图:内容图像,中间:风格图像,右图:内容+风格(图像来源: Google Research Bl

这个应用不仅吸引了大量的研究人员,而且还催生了几个非常成功的手机应用(如:Prisma)。在过去几年间,这些图像风格迁移方法获得了巨大的进步,并有了一些非常出色的结果。

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

Adobe风格迁移,图像来源:Engadget

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

Prisma网站的示例

虽然这些算法在图像上取得了成功,但是在音频或音乐等其他领域却效果不佳,得出的结果远远不如在图像上那样令人满意。这说明音乐风格迁移更为困难。

在本研究中,我们将更加具体地探索音乐风格迁移,试图找出解决这个问题的方法。

为什么音乐风格转移更为困难?

在研究这个问题之前,我们需要搞清:什么是音乐风格转移?

回答这个问题很重要。对于图像而言,内容和风格的概念都是直观的。图像内容是指图像中出现的事物,例如狗、房屋、脸等,图像风格则是指图像的颜色、光线明暗、笔触和质感。

但是,音乐在语义上更加抽象,并且拥有多层面的性质。情境不同,音乐内容所指的含义有时也不同。人们常常认为音乐内容是指曲调,音乐风格是指编曲或和声。但是,音乐内容也可以指歌词内容,不同的曲调可以诠释为不同的风格。

在经典音乐中,音乐内容可以被定义为书面形式的乐谱(包括和声),音乐风格则是演奏者在加入自己的音乐表现力(现场修改乐谱)后对乐谱的诠释。因此,音乐风格迁移很难定义。另外还有几个关键因素让定义变得更加困难:

机器目前还无法很好地理解音乐:图像风格迁移之所以能成功实现,实际上是因为DNN可以出色地完成图像识别任务(例如:目标识别)。由于DNN能学习可以用来区分图像中不同目标的特征,因此它可以利用反向传播算法改变目标图像,使其与内容图像的特征相匹配。

虽然我们在开发基于DNN的音乐理解(例如:曲调转录、类型识别等)模型上取得了很大的进展,但是我们仍然远远无法实现在图像上实现的结果。这对音乐风格迁移而言是一个很大的限制。

由于我们现在的模型还无法学习可以对音乐进行分类的“优秀”特征,因此直接套用图像风格迁移算法无法得出类似的结果。

音乐是时序性的:音乐是一种时间序列数据,也就是说音乐随时间变化。对模型而言,这使得音乐学习起来十分困难。

虽然循环神经网络(RNN)和长短期记忆网络(LSTM)可以使模型更加高效地学习时序数据,但是我们仍没有开发出能够学习复制音乐中长期结构的模型。

顺便说一下:这是一个热门的研究课题,谷歌的Magenta团队在这方面取得了不错的成果。

音乐是离散的(至少在乐符上是这样的):符号音乐或乐谱在本质上是离散的。十二平均律系统是当前使用最普遍的调音系统,其音高在连续的频率谱中处于离散的位置。

同样,音符时值也离散的(通常表示为四分音符、全音符等)。这使得(在图像上使用的)反向传播算法很难应用于符号音乐。

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

十二平均律系统中音高的离散性

因此,图像风格迁移中使用的算法在逻辑上是无法直接套用在音乐上的。为了让风格迁移算法可以适用于音乐风格迁移,必须根据音乐概念和原理重新设计这些算法。

为什么要进行音乐风格迁移?

在探讨如何解决这个问题之前,我们必须理解解决这个问题有什么意义。和图像风格迁移一样,音乐风格迁移的潜在应用也相当有趣。开发供作曲家使用的编曲工具就是一种直接的应用。

例如,可以开发使用不同风格的管弦乐来改编乐曲的自动化工具,让作曲家可以使用这种工具快速地尝试不同的想法,是不是十分有用呢?这样的工具也可以用来混搭不同风格的歌曲,这可能会受到DJ们的追捧。

音乐风格迁移上取得的进步可以间接带来音乐信息学系统的进步。正如上文所述,为了让风格迁移算法可以适用于音乐数据,我们开发出的模型必须能够从不同层面上更好地“理解”音乐。

简化音乐风格迁移问题

由于此任务相对复杂,我们决定先分析不同类型的音乐的单音乐曲。单音乐曲就是音符序列,每个音符都有自己的音高和时值。音高的变化通常取决于曲调的音阶,时值的变化则取决于节奏。

这样,我们就可以得出音高内容和节奏风格的明确区别,借助这些区别我们可以转化风格迁移问题。另外,分析单音乐曲还可以让我们不必处理管弦乐编曲和歌词之类的问题。

由于我们没有可以用来区分音高变化和单音乐曲节奏的预训练模型,于是我们先提出了一种非常简单的迁移音乐风格的方法。

我们尝试学习不同类型的乐曲的音高和音符时值的模式,然后将这些模式整合在一起。

下图为这种方法的说明图。

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

音乐风格迁移法说明图

分别学习音高和节奏变化

数据表达:

我们将单音曲调表示为乐符序列,每个乐符都有一个音高和一个时值。

为了确保表达音符(representation key)相互独立,我们使用了一种基于音程的表达方法,将下一个音符的音高表示为相对于前一个音符的音高的偏离(+/- x半音)。我们为音高和音符时值分别创建了两个库。每个离散状态(音高、四分音符、全音符、附点四分音符、时值等偏离+1, -1, +2, -2)都分配有一个库索引。

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

模型架构:

在本研究中,我们使用的架构类似于Colombo等人使用的架构,即用一种类型的音乐同时训练两个基于LSTM的网络:

  1. 在给定前一音符和音符时值的条件下,学习如何预测下一音高的音高网络;

  2. 在给定下一音符和前一音符时值的条件下,学习如何预测下一音符时值的时值网络。

在Colombo等人的架构的基础上,我们在LSTM网络之前添加了嵌入层(embedding layers),利用其将输入音高和音符时值映射至可学习的嵌入间(embedding spaces)上。

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

网络架构图

训练过程:

使用每一种类型的音乐同时训练音高网络和时值网络。

我们使用了两个数据集:

  1. 包含2000首爱尔兰和瑞典民谣的Norbeck Folk数据集;

  2. 包含500首爵士乐曲的爵士乐数据集(未公开)。

整合训练后的模型:

在测试期间,先使用第一种类型的音乐(例如民谣)训练的音高网络和时值网络生成一首乐曲。然后,用另一种不同类型的音乐(例如爵士乐)训练一个时值网络,将所生成乐曲的音高序列作为该时值网络的一个输入,这样就可以生成一个新的时值序列。

通过整合这两个网络所生成的乐曲的音高序列与第一种类型的音乐(民谣)的音高相一致,时值序列则与第二种类型的音乐(爵士乐)的音符时值相一致。

初步结果

下方是样本输出的几个节选片段:

Folk Duration来自AI科技大本营00:0000:19

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

乐谱节选(民谣音高和民谣音符时值)

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

乐谱节选(民谣音高和爵士乐音符时值)

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

乐谱节选(爵士乐音高和爵士乐音符时值)

你也能当作曲家!详解基于深度神经网络的音乐风格迁移

乐谱节选(爵士乐音高和音高和民谣音符时值)

结论

虽然我们当前的算法可以为之后的研究提供一个不错的起点,但是它仍有一些严重的缺陷:

  1. 如果只给定一首目标乐曲,模型无法实现“风格迁移”:模型需要从一种类型的音乐学习音高和音符市值模式,然后将学习到的所有模式泛化到另一种类型的音乐。我们的目标是可以将一首给定乐曲的风格转变成目标歌曲/乐曲的风格。

  2. 无法控制风格改变的程度:如果有一个“按钮”可以控制风格改变的程度,那就太完美了。

  3. 在迁移风格时无法保留被转变乐曲的音乐结构:一般而言,长期结构(Long-term structure)对音乐鉴赏价值至关重要。如果要想让生成的乐曲具有音乐美感,就必须保留原乐曲的音乐结构。

我们将在之后的工作中努力探索克服这些缺陷的方法。

作者 | Ashis Pati

原文链接 | https://ashispati.github.io//style-transfer/

相关推荐