"); //-->
编者按:日前,在2021全球人工智能技术大会(GAITC)的“当 AI 与艺术相遇”专题论坛上,微软亚洲研究院主管研究员谭旭发表了题为《基于深度学习的流行音乐创作》的演讲。该分享从分析流行音乐的工业化制作流程切入,介绍了深度学习是如何辅助流行音乐的创作,微软亚洲研究院在 AI 音乐创作领域的一系列研究成果,以及当前AI音乐生成所面临的研究挑战等。本文为此次演讲内容的完整整理,希望可以给大家在AI与艺术相互结合的研究方向上带来更多启发。
大家好!我是微软亚洲研究院主管研究员谭旭,这次报告的题目是“基于深度学习的流行音乐创作”,我们将详细探讨如何将深度学习应用到流行音乐的创作过程中。我们先来看一下流行音乐的创作流程是什么样的。
什么是流行音乐?按照字面的理解就是流行的音乐,实际上流行音乐我们通常指的是商品音乐,也就是通俗、大众、喜闻乐见,又能商品化制作的音乐。因此,这类音乐具有固定的制作流程,包括词曲创作、伴奏编曲、录制乐器声音和人声、进行混音,最后进入到唱片制作等环节。而这是典型的工业制作流程,我们需要将其进行抽象以便在音乐创作中充分利用深度学习技术。
经过抽象我们得到了以下三个环节:
1)曲谱生成,包括词曲和伴奏编曲的生成;
2)演奏生成,曲谱到声音需要经过演奏的过程,相同的曲谱经过不同的演奏技巧演奏可以有非常大的差别,所以我们要基于曲谱生成演奏技巧;
3)声音合成,根据曲谱和演奏技巧合成音乐声音,包括人声和乐器声音的合成。
有了这个抽象以后,深度学习技术尤其是内容生成技术就可以应用到流行音乐的创作中了。其实音乐不只是艺术,它还包括逻辑和规则,而这些都是深度学习所擅长的。如果有足够的数据、模型容量和计算力,深度学习就能产生比较好的效果。所以我们可以把上述流程对应到典型的深度学习应用任务上。曲谱和演奏技巧的生成,可以对应自然语言处理里的语言生成,因为它们就是用 symbolic token 符号表示,而声音生成则可以对应到语音合成,这样我们就能借鉴这些成熟领域的深度学习技术来帮助音乐生成了。
过去一段时间,微软亚洲研究院在 AI 音乐创作方向上开展了一系列研究工作,包括 Song Writing(词曲写作)、Arrangement(伴奏生成)、Singing Voice Synthesis(歌声合成)等。在词曲写作方面又涵盖了:1) SongMASS,歌词到旋律以及旋律到歌词的生成;2) StructMelody,利用音乐结构信息生成旋律;3) DeepRapper,Rap歌词押韵和节奏的生成;4) MusicBERT,通过大规模音乐数据学习音乐表征以更好的理解音乐,对音乐的风格、情感、曲式结构的理解。在伴奏编曲方面有 PopMAG 伴奏生成。在歌声合成方面有 HiFiSinger 高保真的歌声合成。接下来,我们将依次介绍这些工作。
词曲写作
在词曲写作方面,我们探讨了歌词生成旋律以及旋律生成歌词两个任务,并分析了这两个任务的特点:
1. 要保证生成的歌词和旋律本身具有歌词性和旋律性。这个方面靠大量的数据做语言模型的建模可以做得还不错;
2. 要保证歌词和旋律的匹配度。按照传统的术语讲就是腔词关系 (腔就是旋律、词就是歌词),好的腔词关系能互相促进表达,而不好的腔词关系会导致腔害于词、词害于腔。
因此,建模歌词和旋律的关系是一个重点。要建模好关系,很重要的一个因素是要有数据,但往往歌词和旋律的配对数据比较缺乏。除此之外,歌词和旋律的连接也比较弱,一句歌词可以配不同的旋律,一句旋律也可以配不同的歌词。类比其它序列到序列学习的任务,比如语音识别、语音合成、机器翻译等,我们可以发现源序列和目标序列都有很强的对应关系。在语音识别中,一个语音片段会严格对应一个字。所以歌词和旋律这种弱的连接关系更加需要数据才能学得好,或者我们可以探索不用纯依赖数据的方发去学习这种关系。
我们可以从两方面去考虑上述问题,一方面是纯粹基于深度学习的方法,从数据中去学习。另一方面是利用先验知识,因为人类在创作歌曲时也是需要学习很多音乐知识的,比如音调、节奏、结构、曲式等,通过把音乐知识和深度学习相结合,可以更好地建模歌词和旋律的关系。
首先介绍 SongMASS,它是纯粹靠数据驱动,用深度学习来建模歌词和旋律关系的方法。因为歌词和旋律是弱耦合关系,缺乏数据,所以我们利用了预训练,通过无监督、自监督、半监督的方法从无标签数据中学习以弥补数据不足。歌词和旋律虽然在内容上是弱耦合,但它们之间需要严格对齐,一个字或者音节需要对应到具体的音符。为此,我们提出了通过序列到序列学习的 encoder-attention-decoder 里的 attention 来抽取对齐关系。
预训练采用了我们之前提出的 Masked Sequence to Sequence Pre-training (MASS) 方法,将歌词和旋律分别看成是自然语言的一个段落,每句歌词和旋律对应一个句子。再从源句子掩盖一个片段,然后在****预测这个片段,通过这样的方法我们就可以学习数据的知识了。
同时我们给 encoder-decoder attention 施加了一些约束,让它能学习到歌词和旋律的对齐关系。我们分别施加了句子级别和词级别的约束,让它呈现一个单调递增的对角线形式。在预测过程中,可以从 attention 里抽取得到这个对齐关系。
我们从客观和主观评价的方式分别评估了 SongMASS 和基线方法的效果,在两个评价方式上,SongMASS 都取得了比基线方法好很多的效果,具体实验结果可参考 SongMASS 论文(论文链接:https://arxiv.org/pdf/2012.05168.pdf),更多的生成样例可参见 demo 网页:https://speechresearch.github.io/songmass/ 。
接下来介绍基于音乐知识辅助的深度学习方法实现的歌词到旋律的生成。有哪些音乐知识能够帮助歌词到旋律的生成呢?这里大概包括以下几个维度:音调、节奏、结构等。
我们先来看一下这些知识应用得不好会产生什么样的问题。首先是音调的知识,我们的原则是保证歌词和旋律的音调要一致,不能相违背,比如《故乡的云》中“归来吧”听起来像是“鬼来吧”,而《你知道我在等你吗》中“你知道我在等你吗?”听起来像是“你知道我在等你妈!”。导致这个问题产生的原因就是因为歌词和旋律的声调不一致。
第二个是节奏知识,我们说重要的歌词要重拍、要高音、要持续。一个好的例子就是《明明白白我的心》,里面的“愿意”和“靠近”,对应的旋律就做到了强调。第三方面是结构知识,这里我们需要考虑歌词的语句和旋律的语句要对应,起承转合要对应,还要考虑旋律本身的重复、模进以及曲式结构。我们开展了相应的工作来利用这些音乐知识帮助旋律生成得更好。
我们的 StructMelody 工作利用音乐的结构信息实现了歌词到旋律的生成。我们构建了一个两阶段的旋律生成方法,利用结构信息作为歌词和旋律的桥梁。首先从歌词中提取结构信息,然后从结构信息生成旋律。第二阶段的结构信息生成旋律则可以利用自监督的方法,也就是从旋律中抽取结构,然后再训练结构到旋律的序列到序列模型。我们只需要让第一阶段生成的结构和第二阶段的结构尽量一致就可以。
举个例子,我们对古诗词《春晓》进行了谱曲,从歌词抽取的结构信息包括节奏和小节划分等信息,然后再配上****生成旋律。古诗词一般具有固定的格律,所以可以人工设计规则,而对于不规则的歌词,比如散文诗,就需要通过学习的方法预测结构信息了。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。