首页> 中国专利> 基于深度强化学习的单音轨MIDI音乐生成方法

基于深度强化学习的单音轨MIDI音乐生成方法

摘要

本发明公开了一种基于深度强化学习的单音轨MIDI音乐生成方法,包括:S1、基于LSTM网络构建节奏生成网络,并基于强化学习Actor‑Critic算法构建音符生成网络;S2、获取原始MIDI音乐数据,并提取节奏数据和音符数据转换为网络训练数据;S3、采用步骤S2中转换后的网络训练数据训练节奏生成网络和音符生成网络;S4、采用训练后的节奏生成网络生成节奏数据,并采用训练后的音符生成网络生成音符数据;S5、将生成的节奏和音符数据组合并转换为完整的单音轨MIDI音乐作品。本发明应用时能使生成音乐的节奏与音符之间搭配更为合理,进而能提升生成音乐的和谐性。

著录项

  • 公开/公告号CN114842819A

    专利类型发明专利

  • 公开/公告日2022-08-02

    原文格式PDF

  • 申请/专利权人 电子科技大学;

    申请/专利号CN202210511149.0

  • 申请日2022-05-11

  • 分类号G10H1/00(2006.01);G10H1/02(2006.01);G10H1/08(2006.01);

  • 代理机构成都四合天行知识产权代理有限公司 51274;

  • 代理人郭受刚

  • 地址 611731 四川省成都市高新区(西区)西源大道2006号

  • 入库时间 2023-06-19 16:14:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-06-23

    授权

    发明专利权授予

  • 2022-08-19

    实质审查的生效 IPC(主分类):G10H 1/00 专利申请号:2022105111490 申请日:20220511

    实质审查的生效

说明书

技术领域

本发明涉及音乐生成技术,具体是基于深度强化学习的单音轨MIDI音乐生成方法。

背景技术

目前人们时常通过计算机算法生成音乐数据,但基本单纯基于乐理规则生成音乐,生成的音乐过于刻板,缺乏多样性。随着深度学习技术的发展,深度神经网络被应用到音乐生成中,利用深度神经网络的学习能力,能够从大量的真实音乐数据集中学习到相关的音乐知识,其生成的音乐数据更加丰富多彩。然而,现有基于深度学习的音乐生成模型没有考虑乐理规则,或者只是考虑了一些和弦等比较简单的乐理元素,容易生成不和谐的和声和旋律。此外,实际生活中,一首歌曲可以改编为多种节奏,节奏和音符是没有强相关性的,现有模型普遍将音符和节奏作为关联因素同时进行处理,这进一步会影响生成音乐的和谐性。

发明内容

本发明的目的在于解决现有技术生成的音乐的和声和旋律不和谐的问题,提供了一种基于深度强化学习的单音轨MIDI音乐生成方法,其应用时能使生成音乐的节奏与音符之间搭配更为合理,进而能提升生成音乐的和谐性。

本发明的目的主要通过以下技术方案实现:

基于深度强化学习的单音轨MIDI音乐生成方法,包括:

S1、基于LSTM网络构建节奏生成网络,并基于强化学习Actor-Critic算法构建音符生成网络;

S2、获取原始MIDI音乐数据,并提取节奏数据和音符数据转换为网络训练数据;

S3、采用步骤S2中转换后的网络训练数据训练节奏生成网络和音符生成网络;

S4、采用训练后的节奏生成网络生成节奏数据,并采用训练后的音符生成网络生成音符数据;

S5、将生成的节奏和音符数据组合并转换为完整的单音轨MIDI音乐作品。本发明在具体实施时,步骤S1和步骤S2可同步进行,步骤S2中转换的网络训练数据为可用于训练节奏生成网络的节奏数据、以及为可用于训练音符生成网络的音符数据。本发明通过独立的节奏生成网络生成节奏数据,并通过独立的音符生成网络生成音符数据,最后将生成的节奏数据和音符数据转化为MIDI音乐数据作为最终结果。

进一步的,所述节奏生成网络包括依次设置的单向双层LSTM网络、全连接层及softmax层,所述节奏生成网络通过其softmax层输出的概率分布来随机选择生成的节奏时值;

所述音符生成网络还包括依次设置的回报网络、Actor网络及Critic网络,所述回报网络和Actor网络均包括依次设置的单向双层LSTM网络、注意力层、全连接层及sigmoid层,所述回报网络用于获取音符对应的回报值,并基于获取的回报值叠加上乐理规则对应的乐理回报作为强化学习算法中音符对应的总回报值,所述Actor网络根据其sigmoid层的输出确定生成的音符值;所述Critic网络包括依次设置的单向双层LSTM网络、注意力层及两个全连接层,所述Critic网络通过其最后一个全连接层输出为Actor网络输出的动作对应的状态动作值。本发明利用LSTM网络构建回报网络以获取强化学习中的价值回报。本发明的回报网络设置有注意力层,能增加对音符序列中重要音符的重点关注并充分学习。

进一步的,所述Actor网络根据其sigmoid层的输出确定生成的音符值时,Actor网络根据其sigmoid层的输出进行四舍五入转换为mutli-hot形式的数据来确定生成的音符值;所述音符生成网络采用多标签分类方式以使音符生成网络支持复音序列的生成。其中,multi-hot编码本身为一种多标签编码方式,同时音符生成网络的输出为multi-hot编码,即输出为多标签编码方式,自然就能支持同时生成多个音符,如此,本发明通过引入多标签分类技术使音符生成网络支持复音序列的生成。

进一步的,所述步骤S2将提取的节奏数据和音符数据转换为网络训练数据基于MagentA框架实现,将音符数据进行multi-hot编码,将节奏数据进行one-hot编码。

进一步的,所述步骤S2中提取节奏数据和音符数据转换为网络训练数据具体包括如下步骤:

S21、将获取的原始MIDI音乐数据切分成多个乐段,并将切割好的乐段储存为TFRecord格式的文件;

S22、对音符时长进行量化,将其映射到整数范围,设定音符最小时长,并将节奏数据映射到设定音符最小时长为基本单位的整数空间上;

S23、从量化后的乐段数据中抽取出音符和节奏信息,并校验是否符合需求标准;

S24、将节奏数据编码为设定音符最小时长的one-hot形式数据,将音符数据映射到设定音符取值范围的整数空间并编码为与设定音符取值范围一致长度的multi-hot形式数据;

S25、将编码后的节奏数据和音符储存为结构化的TFRecord格式文件。

进一步的,所述步骤S3具体包括以下步骤:

所述节奏生成网络使用softmax交叉熵作为网络损失函数,并使用转换后网络训练数据中的节奏数据对网络进行训练;

所述音符生成网络中的回报网络使用sigmoid交叉熵作为网络损失函数,并使用转换后网络训练数据中的音符数据对网络进行训练;

所述音符生成网络中的Actor网络通过状态动作值来训练,所述音符生成网络中的Critic网络通过最小化TD-error来训练。

进一步的,所述节奏生成网络使用的softmax交叉熵作为网络损失函数的公式为:

其中,x

采用softmax交叉熵作为网络损失函数来训练节奏生成网络时,当训练准确率达到设定数值或者训练达到指定步长时停止训练。

进一步的,所述音符生成网络中的回报网络使用的sigmoid交叉熵作为网络损失函数的公式为:

其中,x为模型未经激活函数前的输出,y为对应的标签;

当x<0时,将上述公式转换为以下等价形式:

loss=max(0,x)-x*y+log(1+exp(-abs(x)));

采用sigmoid交叉熵作为网络损失函数来训练音符生成网络中的回报网络时,当训练准确率达到设定数值或者训练达到指定步长时停止训练;

所述音符生成网络中的Actor网络训练所采用的状态动作值、以及所述音符生成网络中的Critic网络训练所采用的最小化TD-error获取包括以下步骤:

设置初始音符值或随机选取初始音符值,并将初始音符值输入所述音符生成网络中;

音符生成网络将初始音符值转换为强化学习中的状态s,再将状态s输入Actor网络获取下一步需要采取的动作a;

通过回报网络获取Actor网络输出的动作a对应的网络回报值r

将动作a转换到下一个状态s′,并将状态s、动作a、回报值r

当储存的四元组数据达到设定数量后,对储存的四元组数据进行采样,并将状态s和动作a输入到回报网络中获取状态动作值Q(s,a);

将状态s′输入Actor网络中获取下一步动作a′,接着将状态s′和动作a′输入到Critic网络中获取状态动作值Q(s′,a′),通过所述回报值r

进一步的,所述步骤S4中采用训练后的节奏生成网络生成节奏数据包括以下步骤:

设置初始节奏时值或者随机选取初始节奏时值、以及设置生成节奏数据的长度L

将初始节奏时值转换为one-hot形式的数据并输入所述节奏生成网络中;

节奏生成网络在其最后一个网络层softmax输出节奏时值的概率分布;

根据概率分布随机选取并生成节奏数据;

依次执行L

进一步的,所述步骤S4中采用训练后的音符生成网络生成音符数据包括以下步骤:

设置初始音符值或随机选取初始音符值、以及设置生成音符数据的长度L

将初始音符值输入所述音符生成网络中,音符生成网络将音符值转换为强化学习中的状态s;

将状态s输入Actor网络获取下一步需要采取的动作a,通过动作a转换到下一个状态s′,再将s′输入到Actor网络中依次执行L

综上所述,本发明与现有技术相比具有以下有益效果:(1)本发明通过独立的节奏生成网络和音符生成网络实现单音轨音乐的生成,同时支持一条旋律与不同节奏的组合,使生成音乐的节奏与音符之间搭配更为合理,进而能提升生成音乐的和谐性。

(2)本发明借助多标签分类技术解决了复音旋律的生成问题。

(3)本发明采用基于深度强化学习方式,根据对动作所反馈的价值回报来指导网络训练,既能通过深度神经网络从音乐数据集中学习到相关的音乐知识,又可以通过添加基于乐理规则的价值回报,使生成的音乐遵循一定的乐理规则。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为本发明一个具体实施例的流程图;

图2为本发明一个具体实施例的节奏生成网络的结构图;

图3为本发明一个具体实施例的回报网络结构图;

图4为本发明一个具体实施例的Critic网络结构图;

图5为本发明一个具体实施例的音乐数据处理步骤流程图;

图6为本发明一个具体实施例的音符数据生成步骤流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

实施例:

如图1所示,基于深度强化学习的单音轨MIDI音乐生成方法,包括:S1、基于LSTM网络构建节奏生成网络用于生成节奏数据,并基于强化学习Actor-Critic算法构建音符生成网络用于生成音符数据;S2、获取原始MIDI音乐数据,并提取节奏数据和音符数据转换为网络训练数据;S3、采用步骤S2中转换后的网络训练数据训练节奏生成网络和音符生成网络;S4、采用训练后的节奏生成网络生成节奏数据,并采用训练后的音符生成网络生成音符数据;S5、将生成的节奏和音符数据组合并转换为完整的单音轨MIDI音乐作品。其中,原始MIDI音乐数据可以理解为已发行的音乐对应的MIDI格式数据,比如某位歌手的一首歌曲就是一首原始音乐数据,本实施例应用时,可以理解为从已发行的音乐学习知识并以此为基础创作歌曲。本实施例在具体实施时,最终输出的MIDI音乐节拍可设置为默认为4/4拍,速度可设置为默认为120BPM。

如图2所示,本实施例的节奏生成网络包括依次设置的单向双层LSTM网络、全连接层及softmax层,LSTM网络每层包含64个神经元,节奏生成网络通过其softmax层输出的概率分布来随机选择生成的节奏时值。本实施例的音符生成网络还包括依次设置的回报网络、Actor网络及Critic网络,如图3所示,本实施例的回报网络和Actor网络均包括依次设置的单向双层LSTM网络、注意力层、全连接层及sigmoid层,LSTM网络每层包含64个神经元,回报网络用于获取音符对应的回报值,并基于获取的回报值叠加上乐理规则对应的乐理回报作为强化学习算法中音符对应的总回报值。本实施例的Actor网络的网络结构与回报网络结构一致,音符最终通过Actor网络生成,具体的,Actor网络根据其sigmoid层的输出确定生成的音符值。如图4所示,本实施例的Critic网络包括依次设置的单向双层LSTM网络、注意力层及两个全连接层,Critic网络通过其最后一个全连接层输出为Actor网络输出的动作对应的状态动作值。

强化学习Actor-Critic算法主要包含环境、Actor和Critic,其中,环境主要是在智能体采取动作后,给智能体反馈其需要转移到的下一个状态以及其所采取的动作对应的奖励,本发明提出的回报网络对应于环境;Actor可以理解为智能体,主要用于动作的决策等,本发明提出的Actor网络对应于智能体;Critic可以理解为评价者,主要用于计算强化学习中的价值函数以及评价智能体所采取的动作的好坏,本发明提出的Critic网络对应于评价者。因此,回报网络、Actor网络和Critic网络构成了一个完整的Actor-Critic算法。乐理规则的乐理回报是基于基本的乐理知识和作曲方法,根据已经生成的音符和当前生成音符之间的关系计算出一个回报值作为当前音符的乐理回报,其计算方法为现有技术,本实施例不再赘述。叠加方式是将乐理回报和网络回报分别乘以一个超参数然后直接相加,超参数的值是人为设置并调整的,主要用于调节乐理回报和网络回报在总回报值中的比例。本发明的总回报值对应强化学习算法中智能体采取动作后环境所反馈的回报值,即环境给智能体的奖励值,主要用于指导智能体进行学习。因此,总回报值就为本发明所采取的强化学习算法中的回报值,其由乐理回报和网络回报按比例加和组成。

本实施例在具体实施时,Actor网络根据其sigmoid层的输出确定生成的音符值时,Actor网络根据其sigmoid层的输出进行四舍五入转换为mutli-hot形式的数据来确定生成的音符值;本实施例的音符生成网络采用多标签分类方式以使音符生成网络支持复音序列的生成。其中,值为1的位置表示生成音符中包含该音符,值为0则代表不包含该音符,从而使音符生成网络支持复音序列的生成。

本实施例的步骤S2将提取的节奏数据和音符数据转换为网络训练数据基于MagentA框架实现,将音符数据进行multi-hot编码,将节奏数据进行one-hot编码。如图5所示,本实施例步骤S2中提取节奏数据和音符数据转换为网络训练数据包含乐谱切割、量化、节奏和音符提取、编码和储存为文件5个处理流程。具体包括如下步骤:S21、将获取的原始MIDI音乐数据切分成多个乐段,并将切割好的乐段储存为TFRecord格式的文件以备后续进一步处理;S22、对音符时长进行量化,将其映射到整数范围,设定音符最小时长,并将节奏数据映射到设定音符最小时长为基本单位的整数空间上;S23、从量化后的乐段数据中抽取出音符和节奏信息,并校验是否符合需求标准;S24、将节奏数据编码为设定音符最小时长的one-hot形式数据,将音符数据映射到设定音符取值范围的整数空间并编码为与设定音符取值范围一致长度的multi-hot形式数据;S25、将编码后的节奏数据和音符储存为结构化的TFRecord格式文件,作为后续对网络进行训练的数据集。本实施例的步骤S21中乐谱切割可在拍子发生变化的地方对MIDI数据进行切割。本实施例的步骤S22的量化流程主要对音符时长进行量化,由于原始的节奏数据为以秒为单位的浮点数,需要将其映射到整数范围以便后续进行one-hot编码,本实施例设定最小时长为32分音符,并将节奏数据都映射到以32分音符为基本单位的整数空间上。本实施例的步骤S23校验是否符合需求标准可省略掉音高过高或者过低的音符,将时长过长的节奏数据进行截断。本实施例将设定音符取值范围限定为50种,并将其映射到[0,49]的整数空间中,超出范围的音符将被省略,节奏数据将最小时长限定为32分音符,最长时长限定为一个小节,所以节奏的取值范围为[1,32],过短的时长将会被省略,过长的时长将会被截断为一个小节长度。本实施例的步骤S24编码流程基于Python语言实现,由于Python语言中数组下标从0开始,为了方便数据处理以及数据的编码,因此,本实施例将节奏数据由[1,32]的整数空间映射到[0,31]的整数空间并编码为长度为32的one-hot形式数据,接着将音符数据映射到[0,49]的整数空间并编码为长度为50的multi-hot形式数据,作为可输入网络的数据格式。

本实施例对音符进行multi-hot编码,即音乐数据集中一个时刻的音符通过一个list数据来表征,list中的元素与音符取值范围一一对应。list数据中的元素取值为0或者1,取值为1时表示包含该元素所对应的音符,取值为0表示不包含该元素对应的音符。本实施例对原始音乐数据进行数据处理的过程中,增加对节奏信息的抽取功能。具体的,MIDI格式的音乐数据中,每个音符都自带时间信息,音乐的开头为0时刻,然后音符的时值依次往后增加,时间信息以秒为单位。本专利通过计算音符间的时间差来获取每一个音符对应的音符时值,并将其映射到以32分音符为基本单位的整数空间上,便于处理。因此,本实施例对MagentA的音乐数据处理模块进行功能扩展,增加了对音符进行multi-hot编码的机制,同时扩展了节奏数据处理功能。

本实施例的步骤S3具体包括以下步骤:节奏生成网络使用softmax交叉熵作为网络损失函数,并使用转换后网络训练数据中的节奏数据对网络进行训练;音符生成网络中的回报网络使用sigmoid交叉熵作为网络损失函数,并使用转换后网络训练数据中的音符数据对网络进行训练;音符生成网络中的Actor网络通过状态动作值来训练,所述音符生成网络中的Critic网络通过最小化TD-error来训练。其中,节奏生成网络训练所采用的数据为one-hot编码的节奏数据,音符生成网络训练所采用的数据为multi-hot编码的音符数据。

本实施例的节奏生成网络使用的softmax交叉熵作为网络损失函数的公式为:

其中,x

本实施例的音符生成网络中的回报网络使用的sigmoid交叉熵作为网络损失函数的公式为:

其中,x为模型未经激活函数前的输出,y为对应的标签;

当x<0时,为了避免x过小导致exp(-x)溢出,将上述公式转换为以下等价形式:

loss=x-x*y+log(1+exp(-x))

=-x*y+log(1+exp(x))

为了保证训练的稳定性和避免溢出,使用上式的等价公式:

loss=max(0,x)-x*y+log(1+exp(-abs(x)));

音符生成网络的输入为经过multi-hot编码的音符数据,通过最小化sigmoid交叉熵损失函数来训练回报网络,当训练准确率达到设定数值或者训练达到指定步长时停止训练,最后将模型参数保存为本地文件,以备后续对音符生成网络中的Actor网络和Critic网络进行训练。

本实施例的音符生成网络中的Actor网络训练所采用的状态动作值、以及所述音符生成网络中的Critic网络训练所采用的最小化TD-error获取包括以下步骤:设置初始音符值或随机选取初始音符值,并将初始音符值输入所述音符生成网络中;音符生成网络将初始音符值转换为强化学习中的状态s,再将状态s输入Actor网络获取下一步需要采取的动作a;通过回报网络获取Actor网络输出的动作a对应的网络回报值r

本实施例的步骤S4中采用训练后的节奏生成网络生成节奏数据包括以下步骤:设置初始节奏时值或者随机选取初始节奏时值、以及设置生成节奏数据的长度L

如图6所示,本实施例步骤S4中采用训练后的音符生成网络生成音符数据包括以下步骤:设置初始音符值或随机选取初始音符值、以及设置生成音符数据的长度L

本实施例提出的一种基于深度强化学习的单音轨MIDI音乐生成方法,通过独立的节奏生成网络和音符生成网络实现了单音轨音乐的生成,同时支持一条旋律与不同节奏的组合,并通过引入多标签分类技术解决了复音旋律的生成问题。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号