本文首发于:行者AI

音乐是一门艺术,是一种通用语言。笔者把音乐定义为不同频率音调的集合。旋律生成是一个在最少人为干预下创作一首旋律的过程。

与基于规则的旋律生成算法不同,基于深度学习的旋律生成算法,可以从旋律数据集中自动的学习如何生成旋律。

本文将从下面几个方面介绍基于深度学习的旋律生成算法:

  • 当前主流旋律生成算法的一些缺陷

  • 能够解决上述缺陷的旋律生成算法介绍

1. 旋律生成算法的一些缺陷

旋律生成算法需要解决以下几点缺陷:

  • 可控制

旋律生成算法不是随意让深度学习模型生成音符,而是需要解决在一定的限制条件下,生成可控制的旋律。

  • 结构性

这里的结构性指旋律的方向性以及旋律的结构特征。现有旋律生成算法生成的旋律缺乏旋律曲线的方向性,同时缺乏主歌、副歌、桥段等音乐曲式结构特征。

  • 多样性

生成的旋律与现有的训练数据之间可能相似性可能较高,存在抄袭的风险。

  • 交互性

现有的旋律生成算法通常是简单的直接生成旋律,但是通常的旋律作品需要作者进行反复的试听、打磨。现有的旋律生成方案缺少这样的交互机制。

2. 能够解决上述缺陷的旋律生成算法介绍

现有的旋律生成算法可以部分解决上述缺陷,下面分别介绍几种现有的旋律生成算法。

2.1 可控制性

旋律生成算法的可控制性指的是,在模型生成旋律的同时,会根据额外的输入,生成的与之相指定的旋律结果。可供选择的输入包括:旋律曲线、和声进行、音乐流派、位置相关特征点(例如每一小节的某个音符与输入相同)等信息维度。

Anticipation-RNN [1]

《Anticipation-RNN Bach melody generation》是一个使用RNN网络的、部分可控的旋律生成算法。其主要思想是在一些关键位置输入音符的控制信息,从而达到生成部分可控旋律的目的。

该算法的主要结构如下图:

该算法由两条RNN模型组成:Token-RNN以及Constraint-RNN。其中cic_{i}ci​表示与位置相关的限制,oio_{i}oi​表示Constraint-RNN的输出。oio_{i}oi​与si−1s_{i-1}si−1​ 同时输入Token-RNN,输出当前位置的音符信息sis_{i}si​。

Constraint-RNN的输入包括C(控制当前位置的音符)以及NC(不控制当前位置的音符)。该算法可以让用户使用C控制特定时间节点的音符,不需要控制的音符位置用NC表示。

例如用户想要控制特定位置(例如每个小节的第一个音符)的音符,那么就可以将Constraint-RNN模型的对应位置的输入音符的具体信息(例如音高,时长,力度等),其他位置输入NC符号表示不对音符进行控制,从而控制生成的旋律。

Unit selection and concatenation melody generation [2]

使用unit selection做旋律生成的基本思想是从一个用户提供的高质量的旋律库中提取旋律(通常以小节为单位),然后将挑选出的旋律连接起来形成旋律。

该算法的主要结构如下图:

该算法当中包含一个自编码器(提取旋律的隐变量)以及两个LSTM模型(用来评估两条旋律是否能被连接到一起)。该模型首先确定第一个种子旋律(通常是音乐的第一小节旋律),然后以种子旋律为基础,依次从旋律库中调选最合适的旋律组合成最终的旋律。评价旋律是否合适的标准有两个:一个是当前旋律与下一条旋律的隐变量是否符合,另一个是当前旋律的最后一个音符与下一条旋律的首个音符连接到一起是否合适。这两个标准分别由两个不同的LSTM模型负责。

2.2 结构性

旋律生成算法面临的另一项挑战是:大多数旋律生成算法的结果缺乏结构性。也就是说,模型生成的旋律可能听起来像是训练数据集里的旋律,但是这些旋律缺乏一些段落层次感(例如流行音乐的主歌、副歌等不同部分)。

MusicVAE multivoice generation [3]

《MusicVAE multivoice generation》是能够解决结构性问题的一种旋律生成算法,其结构如下图所示:

MusicVAE采用了分级生成的方式来控制生成的结果的结构性。与常规的旋律生成算法不同,该模型在使用encoder提取旋律的latent code之后,添加了一层Conductor层。这一层的每一个节点表示一个小节,每个节点下面分别连接了一个RNN模型用来生成对应小节的旋律。

当使用MusicVAE生成旋律数据时,该模型可以保证由模型输入的旋律和模型输出的旋律具有相同的段落特性。

2.3 多样性

多样性是指旋律生成算法生成的旋律与现有的旋律之间是否存在过度相似性,以避免一些版权问题。

MidiNet [4]

MidiNet是一个基于生成对抗网络的旋律生成算法。该算法由Generator CNNDiscriminator CNN以及Conditioner CNN三个部分组成,具体结构如下图所示:

其中Conditioner CNN的输入是之前小节的旋律信息(包括音符序列或者和声进行),输出是处理过后对应的高维度向量,这些向量可以作为Generator CNN的额外控制输入。

为了达到旋律生成的多样性,用户可以在使用Generator CNN生成旋律时,给不同的CNN层添加Conditioner CNN对应层的输出,如果用户需要对旋律添加更多的限制,那么可以给Generator CNN中更对的层添加Conditioner CNN对应的输出,反之亦然。这样可以达到用户控制生成旋律的多样性的效果。

2.4 交互性

在大多数现有的旋律生成算法当中,旋律生成是自动完成的,很少有模型包含与用户交互的生成方式,这就导致,旋律生成模型不支持修改或者是重新生成部分已生成结果,旋律生成模型只能重新生成整段旋律。但是作曲家作曲时的工作流程是靠反复的修改,然后才能得到最终的作品。可以这么说,现有的大多数旋律生成算法对于音乐工作者的帮助是极少的。

DeepBach chorale generation [5]

《DeepBach chorale generation》是支持局部旋律生成的一种旋律生成算法,具体架构如下图所示:

该方案的主要原理是训练时考虑旋律的正向与逆向两个方向的旋律数据,因此DeepBach使用了两个LSTM网络,其中一个网络提取待预测时间点之前的信息,另一个网络提取待预测时间点之后的信息,模型的输出是当前时间点的旋律。也就是说,该算法支持旋律的补全,用户可以在生成完整段旋律之后,重新生成不满意的旋律部分,从而达到算法与用户的可交互性。

参考文献

[1] Hadjeres G, Nielsen F (2017) Interactive music generation with positional constraints using anticipation-RNN. arXiv:1709.06404v1

[2] Bretan M, Weinberg G, Heck L (2016) A unit selection methodology for music generation using deep neural networks. arXiv:1612.03789v1

[3] Roberts A, Engel J, Raffel C, Hawthorne C, Eck D (2018) A hierarchical latent vector model for learning long-term structure in music. In: Proceedings of the 35th international conference on machine learning (ICML 2018). ACM, Montre ́al

[4] Yang LC, Chou SY, Yang YH (2017) MidiNet: a convolutional generative adversarial network for symbolic-domain music gen- eration. In: Proceedings of the 18th international society for music information retrieval conference (ISMIR 2017). Suzhou, China

[5] Hadjeres G, Pachet F, Nielsen F (2017) DeepBach: a steerable model for bach chorales generation. arXiv:1612.01010v2


PS:更多技术干货,快关注【公众号 | xingzhe_ai】,与行者一起讨论吧!

旋律生成算法的现状与挑战相关推荐

  1. Spark on K8S 的现状与挑战

    云原生时代,Kubernetes 的重要性日益凸显,这篇文章以 Spark 为例来看一下大数据生态 on Kubernetes 生态的现状与挑战. 1. Standalone 模式 Spark 运行在 ...

  2. 听听优秀的人讲 AI!带你探知目标检测以及分割的现状和挑战

    目标检测和目标分割是计算机视觉里两个基础的研究任务,它们彼此之间存在很紧密的联系,而且目前已经被广泛应用于各种不同的视觉交互的产品中.目标检测和分割任务的背后有很多的技术需要我们去了解,它们之间的关联 ...

  3. 路径规划之空间采样算法研究现状简述

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:机器人空间采样算法研究现状简述(包含原文PDF百度云下载链接) 摘要:运动规划是移动机器人自主导航系统中的重要模块之一,相关算 ...

  4. 机器人曲线插值拟合算法研究现状简述

    混沌无形 混沌系统是世界本质,无形之中存在规律.机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知.规划.控制:软件.机械.硬件等). 38篇原创内容 公众号 [文末提供原文PDF免费下 ...

  5. 传统激光条纹中心提取算法研究现状

    传统激光条纹中心提取算法研究现状 前言 一.边缘法 二.中心法 三.阈值法 四. 细化法 五.极值法 六.灰度重心法 七.方向模板 八.曲线拟合法 九.Steger 前言 光条中心提取是将宽度大于1的 ...

  6. dga (Domain Generation Algorithm) 域名 生成算法 简介

    目录 一.引言 二.背景 三.检测 四.发展 五.总结 一.引言 恶意软件如今已经发展为威胁网络安全的头号公敌,为了逃避安全设施的检测,其制作过程也越来越复杂,其中一个典型做法是在软件中集成DGA(D ...

  7. 论文研究 | 基于机器视觉的 PCB 缺陷检测算法研究现状及展望

    前面分享了机器视觉在汽车行业与交通行业的应用,其实机器视觉在工业上的应用是最广泛也是最具挑战性的,其中PCB板缺陷检测一直是机器视觉待攻克的难题.印刷电路板(PCB)是电子零件的基板,需求量极大,承载 ...

  8. 三维声技术在赛事直播中的应用,TWS耳机中音频技术落地实践,通话降噪算法落地应用及挑战...

    三维声技术在赛事直播中的应用 Topic <三维声技术在赛事直播中的应用探析> 韩建  咪咕文化科技有限公司 资深音频技术专家 作为元宇宙重要的技术基石之一,三维声技术也随着元宇宙概念的走 ...

  9. 第五篇《深度学习在故障诊断领域中的研究现状与挑战》论文阅读笔记

    [1]任浩,屈剑锋,柴毅,唐秋,叶欣.深度学习在故障诊断领域中的研究现状与挑战[J].控制与决策,2017,32(08):1345-1358. 深度学习在故障诊断领域中的研究现状与挑战 一.文章本身 ...

  10. 机器人空间采样算法研究现状简述

    ‍ [文末提供原文PDF免费下载(期刊论文版式)]‍ ‍ 摘要:运动规划是移动机器人自主导航系统中的重要模块之一,相关算法研究成果层出不穷,本文将空间采样算法拆解为四个子类算法:PRM类算法.RRT类 ...

最新文章

  1. 操作分布式文件之六:如何解析远程文件
  2. 【ACM-ICPC 2018 沈阳赛区网络预赛 I】Lattice's basics in digital electronics
  3. Oracle之例外(异常)
  4. ae saber插件_AE激光插件Video Copilot Saber安装方法
  5. 我们变成了最小的,当我们发现不了最弱小的时候
  6. 区块链技术人才严重不足,平均薪资 2.58 万
  7. Oracle数据库驱动包ojdbc7.jar,ojdbc8.jar
  8. 网易视频云技术分析:IOS工程常见问题解决方法
  9. redies 学习笔记
  10. 免费的QQ微信消息推送机器人
  11. 咱们的课程里,有微信的这种菜单示例吗?---酷课堂iOS交流群问答整理(201810期)
  12. 使谷歌浏览器兼容ie浏览器
  13. 人工客服——图灵机器人教程
  14. 锐龙R3 3300X和R5 3500X 哪个好
  15. ZBrush教程(一):常用笔刷安装及运用
  16. TienLen游戏模型、算法,类似斗地主游戏算法
  17. CTFshou wed命令执行29~50
  18. 你的项目无人问津? 找块闻热点快讯就对了
  19. 中兴视讯服务器 广州,中兴通讯推出全新高清视讯解决方案
  20. 百度地理围栏的一个坑

热门文章

  1. php分解质因数,JavaScript趣题:分解质因数
  2. Android云真机原理以及云真机平台搭建实践
  3. Paper 已经过时——计算机时代科学传播方式的变革
  4. 广告系统数据采集方法介绍
  5. 为何现在只剩下 风吹乱我的发
  6. 不同公式等号对齐_魔方的公式(第二版)
  7. 笔记本计算机故障与诊断,笔记本电脑维护与故障诊断
  8. 有哪些曾惊艳到你了的古诗词?1024程序员读古诗词
  9. 设有如下定义:char *aa[ ]={abcd,ABCD };则以下说法正确的是 A aa 数组成元素的值分别是abcd和ABCD B aa是指针变量,它指向含有两个数组元
  10. 图片(img)alt属性标签怎么写