首页 / 基于音乐基因表达式编程的音乐进化方法

基于音乐基因表达式编程的音乐进化方法实质审查 发明

技术领域

[0001] 本申请涉及数据处理技术领域,特别是涉及一种基于音乐基因表达式编程的音乐进化方法。

相关背景技术

[0002] 音乐能够以物理能量的方式直接影响人体内部的气机运动,与人情感上共鸣的音乐能够给人带来精神享受。随着人工智能技术的发展,人工智能作曲相关研究越来越不可忽视。作为现代数字多媒体技术重要的组成部分,人工智能作曲,顾名思义,就是用计算机软件配合MIDI键盘制作的音乐,是科技与艺术的结合。
[0003] 从任务角度来看,目前音乐生成任务中已经衍生出很多个子任务,如旋律生成、和弦生成、风格迁移、音频合成歌声合成等。然而,在旋律生成领域,很多作曲家都有其特定的作曲风格,很多喜欢音乐的人有自己喜欢的音乐风格。但是目前对于特定音乐风格的音乐自动生成的研究少。从技术角度来看,目前人工智能生成音乐以基于深度学习的方法为主,主要包括卷积神经网络、生成对抗网络、变分自编码器、深度强化学习等都有广泛应用。Roberts等人提出的基于变分自编码器的音乐生成模型MusicVAE,利用分层递归自编码器来实现音乐的编解码。Dong等人提出的基于生成对抗网络的音乐生成模型MuseGAN,利用生成对抗网络来生成多音轨音乐。Jaques提出的基于强化学习的音乐生成模型RLTuner,将乐理规则添加到强化学习的回报值中以使得生成的音乐更加符合乐理规则。Florian等人提出一个用于旋律自动作曲的音符转换的循环神经网络模型,可以训练成用从不同风格音乐的大型数据集中提取的作曲结构来产生旋律。很多知名企业和机构也开展了人工智能音乐生成的研究,比如谷歌的开源项目Musical Agent Architecture,又如微软开源的人工智能音乐生成项目Muzic,Muzic项目中的Song模型还可以通过歌词生成音乐以及反过来通过音乐生成歌词,通过对生成的音乐进行评估,可以根据评估结果反向优化生成方式。然而,目前的音乐生成方法,存在准确率低下等问题。

具体实施方式

[0032] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0033] 在一个实施例中,如图1所示,提供了一种基于音乐基因表达式编程的音乐进化方法,包括以下步骤:
[0034] 步骤102,获取特定音乐家的音乐数据库;音乐数据库包括多首音乐;将音乐的乐谱映射成由八进制数作为基因组成的基因型并根据音乐基因表达式编程技术进化基因型,得到多个新的基因型。
[0035] 首先获取特定音乐家的多首音乐,采用音乐基因表达式编程进化音乐的乐谱的基本节。为了更好映射乐谱与数字编码,提出采用8进制数映射乐谱生成音乐数据集。使用1‑7、11‑17、21‑27、31‑37、41‑47表示音高,其中1‑7表示倍低音区域、11‑17表示低音区域,21‑
27表示中音区域,31‑37表示高音区域,41‑47表示倍高音区域。8进制数的个位表示音级,即
1、2、3、4、5、6、7对应do、re、mi、fa、so、la、si,也写作C、D、E、F、G、A、B。例如33表示高音mi。
[0036] 音高时长通过数字出现的数量来进行记录。以16分音符为最小单位,每一小节由16个数组编码组成,根据不同音符的时间不同,确定该音符的数字个数。例如[22,22]表示一个8分音符的中音re音,[45]表示一个16分音符的倍高音so音。一小节原始乐谱到八进制编码后的乐谱编码操作如图3所示。如图4所示,为音乐基因表达式编程的流程,通过音乐基因表达式编程技术进化产生新的基因型。将音乐的乐谱修改操作修改为对应的基因型进化操作。随后,通过音乐基因表达式编程技术模拟人类作曲家作曲操作进化产生新的基因型。
固定歌曲模板主歌和副歌中休止符0的位置,而其余位置则将由音乐库的片段执行音乐基因表达式编程操作生成,最后形成新的乐谱,即新的基因型,实现了以小节为单位的乐谱进化,能够更好的生成与特定音乐家的相似音乐。
[0037] 步骤104,构建特定作曲风格音乐评估模型和训练数据集;特定作曲风格音乐评估模型依次包括第一卷积层、第一池化层、第二卷积层、最大池化层、扁平化层、全连接层、Dropout层和输出层;第一卷积层用于对输入矩阵进行特征提取,得到第一特征图;第一池化层用于对第一特征图进行主要特征提取,得到第二特征图;扁平化层用于将输入的特征图转换为一维向量,得到一维矩阵;输出层用于输出标签值。
[0038] 本申请通过构建特定作曲风格音乐评估模型,将音乐的音高、时间等因素数据设置成多行(本步骤中为保证样本大小统一取15维,即音乐乐谱的15小节)16位8进制数的矩阵的形式,相当于将一首音乐变成一幅图片的形式进行训练。
[0039] 根据545首歌曲构建训练数据集,其中有200首具有特定作曲风格的音乐,由专家综合参考音乐评分网站等对该200首歌曲进行评分,归一化后作为神经网络标签值。通过以一定周期采样MIDI文件可以获取每个时间点的音高信息,并将MIDI文件转换为音高序列。将音高序列需要转换为大小为(16x15)的矩阵作为模型输入。整个数据集的大小为(545,
16,15),其中有标记的数据集大小为(200,16,15),无标记的数据集大小为(345,16,15)。根据上述数据集训练特定作曲风格音乐评估模型,音乐数据通过该特定作曲风格音乐评估模型的信息流程如图5所示,特定作曲风格音乐评估模型包括第一卷积层、第一池化层、第二卷积层、最大池化层、扁平化层、全连接层、Dropout层和输出层,其中,第一卷积层,其中包含64个过滤器,每个过滤器的大小为(3,3)。输入数据矩阵为16x15的二维图像,通道数为1。
使用Relu作为激活函数,这将确保特征映射中的非线性特征得到激活,计算得到第一特征图的高度Ho与输出特征图的宽度Wo。该层输出特征图形状为(14,13,64)。第一池化层帮助提取主要的特征并减少计算量。该层的池化层输入大小为(14,13,64),池化核大小为(2,2),PH和Pw分别为池化核高度和宽度,步幅S为(2,2),输出第二特征图的高度与输出特征图的宽度,向下取整,输出形状为(7,6,64)矩阵。第二卷积层其中包含128个过滤器,每个过滤器的大小为(3,3)。该卷积层输入(7,6,64)矩阵,卷积核大小为(3,3),步幅为(1,1),输出为(5,
4,128)矩阵。根据前面第一卷积层的特征计算方式该层输出特征图的形状为(5,4,128)。最大池化层使用(2,2)的池化窗口大小。该池化层输入矩阵大小为(5,4,128),池化核大小为(2,2),步幅为(2,2)。根据前面第一池化层内的特征计算公式,该层输出特征图的形状为输出形状为(2,2,128),然后通过扁平化层将第二特征图转换为一维的向量,以便传递给全连接层。扁平化层无大小变化,将输入展平成一维向量。输出一个长度为512的一维矩阵。然后设计全连接层。该全连接层包含256个神经元。使用Relu作为激活函数,以引入非线性性质,输出一个长度为256的一维矩阵。设计Dropout层用于减少过拟合,此处设置的参数为0.5,每个神经元有50%的概率被留下来,50%的概率被抹去。防止神经网络在训练过程中过拟合。最后通过输出层输出标签值,也是该条数据的最终特征。即输入的矩阵对应的音乐的评分,通过设计多个特征提取层,能够对输入图像矩阵中的不同位置进行共享权重的特征提取,具有很好的鲁棒性,能够提高特征提取的准确率,进而提高音乐评估准确率,为选择最终音乐进化结果做数据支撑。
[0040] 步骤106,根据半监督学习方法和训练数据集对特定作曲风格音乐评估模型进行训练,得到训练好的特定作曲风格音乐评估模型;利用训练好的特定作曲风格音乐评估模型对新的基因型进行评估,得到新的基因型的标签值;根据标签值选择音乐进化结果。
[0041] 本申请采用半监督学习的方式进行神经网络的训练。半监督学习的流程包含了有监督训练和无监督学习。有标签数据进行有监督训练。在这一步中,使用有标签数据集和对应的标签值对模型进行有监督训练。无监督学习中,对无标签数据集进行预测,得到对无标签数据的预测结果。随后使用无标签数据进行无监督学习。这里将无标签数据作为输入,将其预测结果作为标签,再使用该标签数据进行有监督训练。本申请中的特定作曲风格音乐评估模型是结合了有标签数据和经过无监督学习得到的模型,进一步提高模型的泛化能力。
[0042] 通过这个流程,可以使用有标签数据进行有监督训练,然后利用无标签数据进行无监督学习,然后再次使用有标签数据进行有监督训练。可以利用无标签数据来增强模型的训练和泛化能力,提高模型的性能,进而提高对生成的音乐的评估准确率。
[0043] 在具体实施例中,初代通过音乐基因表达式编程技术生成100首歌曲,使用特定作曲风格音乐评估模型评估后根据标签值取100首音乐适应度值最高的20首音乐作为父本进行同步并行进行串行进化。初代音乐进化所需要的父本是具有该风格的作曲家创作的音乐的乐谱。此后20代分别串行进化的时候,每一代的父本是上一代得分的适应度值最高的乐谱。这20首音乐分别进化50代,得到这20首音乐的最终适应度值,最后取得分值高的5首歌曲作为音乐进化结果。其中音乐生成与评估的进化流程如图2所示。
[0044] 上述基于音乐基因表达式编程的音乐进化方法,本申请在音乐生成阶段,将作曲家作曲时的一些对乐谱的修改操作与基因表达式编程的进化操作进行融合,形成音乐基因表达式编程操作,实现以小节为单位的乐谱进化,能够更好的生成与特定音乐家的相似音乐,提高生成特定作曲家的相似音乐的准确率。在音乐评估阶段,构建特定作曲风格音乐评估模型,通过将音乐的音高、时间等因素数据设置成多行16位8进制数的矩阵的形式,相当于将一首音乐变成一幅图片的形式进行训练,通过设计多个特征提取层,能够对输入图像矩阵中的不同位置进行共享权重的特征提取,具有很好的鲁棒性,能够提高特征提取的准确率,进而提高音乐评估准确率,为选择最终音乐进化结果做数据支撑并根据半监督的方式结合有标签数据和经过无监督学习对模型进行训练,进一步提高模型的泛化能力,提高评估准确率。同时本申请除了生成特定风格的音乐之外,还可以为作曲家创造创作灵感,即通过用自己的音乐进行进化操作即可生成风格类似而又与原作品不同的音乐,节省人力。
[0045] 在其中一个实施例中,将音乐的乐谱映射成由八进制数作为基因组成的基因型,包括:
[0046] 以1‑7、11‑17、21‑27、31‑37、41‑47表示音高,其中1‑7表示低16度区域、11‑17表示低八度区域,21‑27表示中八度区域,31‑37表示高八度区域,41‑47表示高16度区域;其中,数字的个位表示音级,即1、2、3、4、5、6、7对应do、ri、mi、fa、so、la、si,也写作C、D、E、F、G、A、B;
[0047] 利用数字出现的数量来记录音高时长,以十六分音符为最小单位,每一小节由十六个数字编码组成,根据不同音的时间不同,确定音符的数字个数。
[0048] 在具体实施例中,将特定音乐家的音乐提取歌曲乐谱片段作为音乐基因表达式编程的数据库,以上述数据库为原料,采用音乐基因表达式编程进化音乐乐谱的基本节。为了更好映射乐谱与数字编码,提出采用8进制数映射乐谱生成音乐数据集。使用1‑7、11‑17、21‑27、31‑37、41‑47表示音高,其中1‑7表示倍低音区域、11‑17表示低音区域,21‑27表示中音区域,31‑37表示高音区域,41‑47表示倍高音区域。8进制数的个位表示音级,即1、2、3、4、
5、6、7对应do、re、mi、fa、so、la、si,也写作C、D、E、F、G、A、B。例如33表示高音mi。
[0049] 音高时长通过数字出现的数量来进行记录。以16分音符为最小单位,每一小节由16个数组编码组成,根据不同音符的时间不同,确定该音符的数字个数。例如[22,22]表示一个8分音符的中音re音,[45]表示一个16分音符的倍高音so音。一小节原始乐谱到八进制编码后的乐谱编码操作如图3所示。
[0050] 在其中一个实施例中,音乐基因表达式编程技术包括乐符节拍重组、乐符节拍复制、乐符对称、乐符倒位、乐符替换和乐符升降;其中,乐符对称表示3到8音以中间某个音为中心移位,乐符倒位表示互换操作对象前后两个乐符位,乐符替换表示在目标乐符总时长不变的情况下,从原料库当中随机选择相同时长的音乐乐符替换,乐符升降表示对2到3个连续的音的音阶进行升或降,高或低一到三度。
[0051] 在具体实施例中,设计了乐符节拍重组、乐符节拍复制、乐符对称、乐符倒位、乐符替换和乐符升降这几种音乐基因表达式编程技术,具体表示如下:
[0052] 第一种:乐符节拍重组,例如2233变为2223或2333。
[0053] 第二种:乐符节拍复制,例如2233变为22223333,其总时长翻倍,该操作导致覆盖紧接着的音。
[0054] 第三种:乐符对称。任意选取该小节3‑8个音,以选取片段中间的某个音为中心移位,例如224433变为334422,以44为中心。
[0055] 第四种:乐符倒位。互换操作对象前后两个乐符位,例如223344变为442233。
[0056] 第五种:乐符替换,在目标乐符总时长不变的情况下,从原料库当中随机选择相同时长的音乐乐符替换。
[0057] 第六种:乐符升降针对2到3个连续的音的音阶进行升或降,高或低一到三度。
[0058] 上述音乐基因表达式编程的方法的形象化操作如图4所示。
[0059] 在其中一个实施例中,第一卷积层用于对输入矩阵进行特征提取,得到第一特征图,包括:
[0060] 第一卷积层用于对输入矩阵进行特征提取,得到第一特征图的高度和宽度分别为[0061] Ho=(Hi‑CH+2×f)/S+1
[0062] Wo=(Wi‑CW+2×f)/S+1
[0063] 其中,Hi为输入矩阵对应的特征图宽度,Wi为输入矩阵对应的特征图宽度,CH和Cw分别为卷积核高度和宽度,f为填充大小。
[0064] 在其中一个实施例中,第一池化层用于对第一特征图进行主要特征提取,得到第二特征图,包括:
[0065] 第一池化层用于对第一特征图进行主要特征提取,得到第二特征图的高度和宽度分别为
[0066] H′=(Ho‑PH)/S+1
[0067] W′=(Wo‑PW)/S+1
[0068] 其中,Ho和Wo分别表示第一特征图的高度和宽度,PH和Pw分别为池化核高度和宽度,步幅S为(2,2)。
[0069] 在其中一个实施例中,训练数据集包括特定作曲家的多首音乐;根据半监督学习方法和训练数据集对特定作曲风格音乐评估模型进行训练,得到训练好的特定作曲风格音乐评估模型,包括:
[0070] 将训练数据集分为有标签的数据集和无标签的数据集,以一定周期采样训练数据集获取每个时间点的音高信息,并将音高信息转换成音高序列,将音高序列转换成矩阵作为特定作曲风格音乐评估模型训练的输入,在模型训练过程中,采用半监督学习的方式进行训练,在有监督训练中使用有标签的数据集和对应的标签值对模型进行有监督训练,无监督学习中对无标签数据集进行预测,得到对无标签数据的预测结果,随后使用无标签数据进行无监督学习,将无标签数据作为输入,将其预测结果作为标签,再使用该标签数据进行有监督训练,通过Adam算法调整音乐评估网络权重以最小化均方误差损失函数,直至达到迭代次数时,得到训练好的特定作曲风格音乐评估模型。
[0071] 在具体实施例中,采用本申请所生成的5首音乐与其他方法下各5首音乐进行对比实验。将不同方法下的音乐的MIDI文件进行采样,转化成八进制数组成的音乐数据矩阵。将不同方法所生成音乐的音乐数据矩阵输入训练好的特定作曲风格音乐评估模型中,得到最后的评分值,从图6可以知道本申请生成的特定作曲风格音乐的评分最高,准确率高。
[0072] 应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0073] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0074] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0075] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页 第1页 第2页 第3页