基于密集网络和多头注意力机制的音乐自动生成方法

文档序号:32220399发布日期:2022-11-16 08:59阅读:65来源:国知局
基于密集网络和多头注意力机制的音乐自动生成方法

1.本发明属于计算机技术领域,具体涉及到基于密集网络和多头注意力机制的音乐自动生成方法。
技术背景
2.音乐是一种复杂的艺术表现形式,音乐创作不仅需要创作者具有相关的乐理知识,还需要对艺术有良好的感知和鉴赏能力,音乐创作这项工作具有较大的难度。一般来说,人工音乐创作的周期较长,时间成本较大,难以满足人们对音乐日渐增长的需求。如何高效、快速且低成本实现音乐生成,解决音乐生成供不应求的现象,是当前音乐自动生成领域面临的主要难题。
3.随着人工智能和深度学习技术的发展,深度学习方法在图像生成、自然语言处理等领域应用广泛并取得了很大的成就。由于音乐是具有时间序列的数据形式,序列前后的关联性较大,一般的深度学习方法难以处理这样的时序数据,所以将这些生成方法迁移到音乐自动生成领域,仍是一个具有挑战性的问题。
4.循环神经网络的出现,为处理时序数据问题带来了很好的解决方案。循环神经网络用于处理序列数据,例如一段文字、一段声音等,因此它在语言建模、声音识别、机器翻译等方面有极为广泛应用。就标准循环神经网络体系结构而言,其可使用的上下文的范围是极为有限的。在这种情况下,伴随循环连接的循环,会记录每一步输出的状态,将会导致误差积累,进而引发梯度消失的问题。
5.随着循环神经网络的发展,有人提出了一种循环神经网络的改进方法,即长短期记忆网络。它在循环神经网络中引入了门机制,将当前信息与之前的信息建立长期依赖关系。
6.音乐序列的时序特性对神经网络记忆长期信息的能力提出了更高的要求,增强长短期记忆网络中两个门控单元对推测信息前后长期依赖关系的性能是十分有必要的。同时,在不同风格的音乐中,音乐各项特征的占比也不同。
7.在音乐自动生成领域,当前需迫切解决的一个技术问题是提供一种增强音乐序列上下文前后依赖关系和提升对重要音乐事件信息处理能力的音乐自动生成方法。


技术实现要素:

8.本发明所要解决的技术问题在于克服上述现有技术的不足,提供一种网络结构简单、生成的音乐质量高的基于密集网络和多头注意力机制的音乐自动生成方法。
9.解决上述技术问题所采用的技术方案是由下述步骤组成:
10.(1)获取音乐数据集
11.获取乐器数字接口类型的音乐文件作为训练音乐自动生成网络的数据集。
12.(2)对数据集进行预处理
13.用音高、音强、音长、和弦事件的形式表示乐器数字接口文件中的音乐,其中音高
事件包含128个事件,对应0-127的数字作为索引;音强事件包含32个事件,对应0-31的数字作为索引;音长事件包含100个事件,对应0-99的数字作为索引;和弦事件包含60个事件,对应0-59的数字作为索引,对音乐数据进行音高调整、添加和删除音符、拆分和移动音符的数据增强操作,将音乐事件序列切分成预设长度为30秒的音乐片段,根据音乐事件对应的数字索引将音乐事件序列转换为对应的数字序列。
14.(3)划分训练集和测试集
15.将数据集划分为训练集和测试集,训练集与测试集的比为8:2。
16.(4)构建音乐自动生成网络
17.音乐自动生成网络模型由输入层与激活层、密集网络层、长短期记忆网络层、多头注意力层、输出层依次串联构成。
18.(5)训练音乐自动生成网络
19.将训练集输入到音乐自动生成网络进行训练,使用adam优化器动态调整音乐自动生成网络的学习率,按照下式的交叉熵损失函数l(a,b)作为损失函数比较输出音符序列和原始音符序列,获取损失值l(a,b):
20.l(a,b)=alnb+(1-a)ln(1-b)
21.其中,a表示原始音符序列,b表示输出音符序列;训练时数据的批次大小为采样率的1~8倍,迭代至交叉熵损失函数收敛,得到训练好的音乐自动生成网络。
22.(6)自动生成音乐文件
23.将测试集输入到训练好的音乐自动生成网络中,用训练好的模型在指定路径下生成对应的乐器数字接口类型音乐文件。
24.在本发明的(4)构建音乐自动生成网络中,所述的密集网络层由第一批归一化层a1与第一激活层b1、第一卷积层c1、第二批归一化层a2、第二激活层b2、第二卷积层c2、密集网络随机失活层d依次串联构成。
25.在本发明的(4)构建音乐自动生成网络中,所述的长短期记忆网络层由第一长短期记忆层f1与长短期记忆网络第一随机失活层d1、第二长短期记忆层f2、长短期记忆网络第二随机失活层d2、第三长短期记忆层f3、全连接层m依次串联构成。
26.在本发明的(4)构建音乐自动生成网络中,所述的第一激活层b1和第二激活层b2的激活函数r(x)如下式:
[0027][0028]
其中,x表示输入数据,α为系数、α∈(0,1)。
[0029]
在本发明的(4)构建音乐自动生成网络中,所述的第一卷积层c1和第二卷积层c2的卷积核大小为3
×
3。
[0030]
在本发明的(4)构建音乐自动生成网络中,所述的密集网络随机失活层d的丢弃率为0.3~0.5。
[0031]
在本发明的(4)构建音乐自动生成网络中,所述的第一长短期记忆层f1、第二长短期记忆层f2、第三长短期记忆层f3中引入二元贝塔分布函数替换其中输入门与遗忘门的sigmoid函数,按下式确定第t时刻输入门输出值i
t
,确定第t时刻遗忘门输出值f
t

[0032][0033][0034][0035][0036]
其中,表示服从伽马分布函数的随机变量,表示参数为速率参数设置为常数1的伽马分布函数,j表示随机变量的序号,j取值为1、2、3,表示伽马分布函数的形状参数,gj表示当前输入x
t
与上一时刻的隐藏状态h
t-1
的多层感知机函数。
[0037]
在本发明的(4)构建音乐自动生成网络中,所述的全连接层m按照下式的激活函数s(zi)确定:
[0038][0039]
其中,zi表示全连接层第i个节点的输出值,c表示输出节点的个数,zc表示第c个节点的输出值。
[0040]
在本发明的(4)构建音乐自动生成网络中,所述的多头注意力层(5)有n个自注意力头,n取值为2~8的整数。
[0041]
本发明以乐器数字接口数据类型的音乐文件作为数据集,训练音乐自动生成网络。对音乐数据进行预处理,用事件表示乐器数字接口数据类型的音乐文件,这些事件分为音高、音强、音长、和弦,音乐自动生成网络是由长短期记忆网络作为基本的网络结构,加入密集网络提取音乐特征信息,缓解训练过程中出现的梯度消失问题,引入二元贝塔分布替换长短期记忆网络的输入门与遗忘门中的sigmoid函数,通过共享伽马分布函数建立两个门控单元之间的联系,加强输入门和遗忘门推测信息前后长期依赖关系的性能,添加多头注意力机制使模型在训练过程中可以关注到更加重要的音乐特征信息,提高了音乐自动生成的效果。本发明具有网络结构简单、生成的音乐质量高等优点,可应用于音乐自动生成技术领域。
附图说明
[0042]
图1是本发明实施例1的流程图。
[0043]
图2是音乐自动生成网络的结构示意图。
[0044]
图3是密集网络层3的结构示意图。
[0045]
图4是长短期记忆网络层4的结构示意图。
具体实施方式
[0046]
下面结合附图和实施例对本发明进一步详细说明,但本发明不限于下述的实施方式。
[0047]
实施例1
[0048]
以选取美国流行音乐钢琴曲400个为例,作为数据集,本实施例的基于密集网络和多头注意力机制的音乐自动生成方法由下述步骤组成(参见图1):
[0049]
(1)获取音乐数据集
[0050]
获取乐器数字接口类型的音乐文件作为训练音乐自动生成网络的数据集。
[0051]
(2)对数据集进行预处理
[0052]
用音高、音强、音长、和弦事件的形式表示乐器数字接口文件中的音乐,其中音高事件包含128个事件,对应0-127的数字作为索引;音强事件包含32个事件,对应0-31的数字作为索引;音长事件包含100个事件,对应0-99的数字作为索引;和弦事件包含60个事件,对应0-59的数字作为索引,对音乐数据进行音高调整、添加和删除音符、拆分和移动音符的数据增强操作,将音乐事件序列切分成预设长度为30秒的音乐片段,根据音乐事件对应的数字索引将音乐事件序列转换为对应的数字序列。
[0053]
(3)划分训练集和测试集
[0054]
将数据集划分为训练集和测试集,训练集与测试集的比为8:2。
[0055]
(4)构建音乐自动生成网络
[0056]
在图2中,本实施例的音乐自动生成网络模型由输入层1与激活层2、密集网络层3、长短期记忆网络层4、多头注意力层5、输出层6依次串联构成。
[0057]
在图3中,本实施例的密集网络层3由第一批归一化层a1与第一激活层b1、第一卷积层c1、第二批归一化层a2、第二激活层b2、第二卷积层c2、密集网络随机失活层d依次串联构成。第一激活层b1和第二激活层b2的激活函数r(x)如下式:
[0058][0059]
其中,x表示输入数据,α为系数、α∈(0,1),本实施例的α取值为0.5。本实施例的第一卷积层c1和第二卷积层c2的卷积核大小为3
×
3。密集网络随机失活层d的丢弃率为0.3~0.5,本实施例的丢弃率为0.4。
[0060]
在图4中,本实施例的长短期记忆网络层4由第一长短期记忆层f1与长短期记忆网络第一随机失活层d1、第二长短期记忆层f2、长短期记忆网络第二随机失活层d2、第三长短期记忆层f3、全连接层m依次串联构成。第一长短期记忆层f1、第二长短期记忆层f2、第三长短期记忆层f3中引入二元贝塔分布函数替换其中输入门与遗忘门的sigmoid函数,按下式确定第t时刻输入门输出值i
t
,确定第t时刻遗忘门输出值f
t

[0061][0062][0063][0064][0065]
其中,表示服从伽马分布函数的随机变量,表示参数为速
率参数设置为常数1的伽马分布函数,j表示随机变量的序号,j取值为1、2、3,表示伽马分布函数的形状参数,gj表示当前输入x
t
与上一时刻的隐藏状态h
t-1
的多层感知机函数。全连接层m按照下式的激活函数s(zi)确定:
[0066][0067]
其中,zi表示全连接层第i个节点的输出值,c表示输出节点的个数,zc表示第c个节点的输出值。
[0068]
所述的多头注意力层5有n个自注意力头,n取值为2~8的整数,本实施例的n取值为5。
[0069]
(5)训练音乐自动生成网络
[0070]
将训练集输入到音乐自动生成网络进行训练,使用adam优化器动态调整音乐自动生成网络的学习率,按照下式的交叉熵损失函数l(a,b)作为损失函数比较输出音符序列和原始音符序列,获取损失值l(a,b):
[0071]
l(a,b)=alnb+(1-a)ln(1-b)
[0072]
其中,a表示原始音符序列,b表示输出音符序列;训练时数据的批次大小为采样率的1~8倍,批次大小的具体参数应按照钢琴曲的具体内容来确定,迭代至交叉熵损失函数收敛,得到训练好的音乐自动生成网络;
[0073]
(6)自动生成音乐文件
[0074]
将测试集输入到训练好的音乐自动生成网络中,用训练好的模型在指定路径下生成对应的乐器数字接口类型音乐文件。
[0075]
完成基于密集网络和多头注意力机制的音乐自动生成方法。
[0076]
实施例2
[0077]
以选取美国流行音乐钢琴曲400个为例,作为数据集,本实施例的基于密集网络和多头注意力机制的音乐自动生成方法由下述步骤组成:
[0078]
(1)获取音乐数据集
[0079]
该步骤与实施例1相同。
[0080]
(2)对数据集进行预处理
[0081]
该步骤与实施例1相同。
[0082]
(3)划分训练集和测试集
[0083]
该步骤与实施例1相同。
[0084]
(4)构建音乐自动生成网络
[0085]
音乐自动生成网络模型由输入层1与激活层2、密集网络层3、长短期记忆网络层4、多头注意力层5、输出层6依次串联构成。
[0086]
所述的密集网络层3由第一批归一化层a1与第一激活层b1、第一卷积层c1、第二批归一化层a2、第二激活层b2、第二卷积层c2、密集网络随机失活层d依次串联构成。第一激活层b1和第二激活层b2的激活函数r(x)如下式:
[0087][0088]
其中,x表示输入数据,α为系数、α∈(0,1),本实施例的α取值为0.1。本实施例的第一卷积层c1和第二卷积层c2的卷积核大小为3
×
3。密集网络随机失活层d的丢弃率为0.3~0.5,本实施例的丢弃率为0.3。
[0089]
所述的长短期记忆网络层4由第一长短期记忆层f1与长短期记忆网络第一随机失活层d1、第二长短期记忆层f2、长短期记忆网络第二随机失活层d2、第三长短期记忆层f3、全连接层m依次串联构成。第一长短期记忆层f1、第二长短期记忆层f2、第三长短期记忆层f3中引入二元贝塔分布函数替换其中输入门与遗忘门的sigmoid函数,按下式确定第t时刻输入门输出值i
t
,确定第t时刻遗忘门输出值f
t

[0090][0091][0092][0093][0094]
其中,表示服从伽马分布函数的随机变量,表示参数为速率参数设置为常数1的伽马分布函数,j表示随机变量的序号,j取值为1、2、3,表示伽马分布函数的形状参数,gj表示当前输入x
t
与上一时刻的隐藏状态h
t-1
的多层感知机函数。全连接层m按照下式的激活函数s(zi)确定:
[0095][0096]
其中,zi表示全连接层第i个节点的输出值,c表示输出节点的个数,zc表示第c个节点的输出值。
[0097]
所述的多头注意力层5有n个自注意力头,n取值为2~8的整数,本实施例的n取值为2。
[0098]
其他步骤与实施例1相同。完成基于密集网络和多头注意力机制的音乐自动生成方法。
[0099]
实施例3
[0100]
以选取美国流行音乐钢琴曲400个为例,作为数据集,本实施例的基于密集网络和多头注意力机制的音乐自动生成方法由下述步骤组成:
[0101]
(1)获取音乐数据集
[0102]
该步骤与实施例1相同。
[0103]
(2)对数据集进行预处理
[0104]
该步骤与实施例1相同。
[0105]
(3)划分训练集和测试集
[0106]
该步骤与实施例1相同。
[0107]
(4)构建音乐自动生成网络
[0108]
音乐自动生成网络模型由输入层1与激活层2、密集网络层3、长短期记忆网络层4、多头注意力层5、输出层6依次串联构成。
[0109]
所述的密集网络层3由第一批归一化层a1与第一激活层b1、第一卷积层c1、第二批归一化层a2、第二激活层b2、第二卷积层c2、密集网络随机失活层d依次串联构成。第一激活层b1和第二激活层b2的激活函数r(x)如下式:
[0110][0111]
其中,x表示输入数据,α为系数、α∈(0,1),本实施例的α取值为0.9。本实施例的第一卷积层c1和第二卷积层c2的卷积核大小为3
×
3。密集网络随机失活层d的丢弃率为0.3~0.5,本实施例的丢弃率为0.5。
[0112]
所述的长短期记忆网络层4由第一长短期记忆层f1与长短期记忆网络第一随机失活层d1、第二长短期记忆层f2、长短期记忆网络第二随机失活层d2、第三长短期记忆层f3、全连接层m依次串联构成。第一长短期记忆层f1、第二长短期记忆层f2、第三长短期记忆层f3中引入二元贝塔分布函数替换其中输入门与遗忘门的sigmoid函数,按下式确定第t时刻输入门输出值i
t
,确定第t时刻遗忘门输出值f
t

[0113][0114][0115][0116][0117]
其中,表示服从伽马分布函数的随机变量,表示参数为速率参数设置为常数1的伽马分布函数,j表示随机变量的序号,j取值为1、2、3,表示伽马分布函数的形状参数,gj表示当前输入x
t
与上一时刻的隐藏状态h
t-1
的多层感知机函数。全连接层m按照下式的激活函数s(zi)确定:
[0118][0119]
其中,zi表示全连接层第i个节点的输出值,c表示输出节点的个数,zc表示第c个节点的输出值。
[0120]
所述的多头注意力层5有n个自注意力头,n取值为2~8的整数,本实施例的n取值为8。
[0121]
其他步骤与实施例1相同。完成基于密集网络和多头注意力机制的音乐自动生成方法。
[0122]
为了验证本发明的有益效果,发明人采用本发明实施例1的方法(以下简称本发明方法)进行了对比实验:对比方法(以下简称对比方法)出自论文(yu y,si x,hu c,et al.a review of recurrent neural networks:lstm cells and network architectures[j].neural computation,2019,31(7):1235-1270.),实验情况如下:
[0123]
1、仿真条件
[0124]
硬件条件为:1台个人电脑、1块nvidia 1080ti显卡。
[0125]
软件平台为:pytorch框架。
[0126]
其他第三库:numpy、pretty_midi、math。
[0127]
2、仿真内容与结果
[0128]
用实施例1方法与对比方法在上述仿真条件下进行实验。以选取美国流行音乐钢琴曲400个为例,作为数据集,采用本发明方法与对比方法进行对比实验,自动生成音乐。从音高类直方图熵、节奏模式相似度、长期结构指标、中期结构指标、短期结构指标五个维度评价两种方法与训练集中音乐的相似程度,两种方法生成音乐的各维度指标与训练集中音乐各维度指标之间的差值如表1所示。
[0129]
表1本发明方法与对比实验方法对比实验结果
[0130][0131]
由表1可见,本发明方法生成的音乐与训练集的相似度更高,由此证明,采用本发明方法生成音乐的效果显著。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1