技术领域
[0001] 本发明涉及人工智能领域,尤其涉及结合曲式结构与局部邻接信息的钢琴指法生成算法。
相关背景技术
[0002] 钢琴指法是影响钢琴演奏效果的重要因素,也是钢琴演奏初学者遇到的学习难题。然而,大量的乐谱缺乏指法注释,给演奏者带来了巨大困扰。对于没标注指法的乐谱,确定其指法需要基于经验的反复尝试,这对钢琴初学者极为困难。即使对于资深钢琴演奏者,确定新乐谱指法的过程也并非易事。利用计算技术为乐谱自动标注指法,可以拓宽初学者选择乐谱的范围,去除演奏的首要障碍;也可为资深演奏者探索合适的指法提供参考,从而有效推动钢琴演奏教学的发展,拓展钢琴演奏人群,保护钢琴练习的兴趣。
[0003] 随着深度学习技术的发展,有良好时序建模能力的LSTM模型在各类时序处理任务中都取得超越传统统计学习模型的性能。因为LSTM优秀的序列处理性能,使得LSTM模型成为近年来指法生成任务中的主流模型。但是,基于LSTM的钢琴指法生成算法存在不能利用曲式结构、生成存在误差传播的问题。
[0004] 相比基于LSTM的指法生成方法,基于点积自注意力的指法生成方法能够更好的提取乐曲的全局结构信息。但是,和LSTM模型一样,仅使用基于点积自注意力模块的编码器‑解码器架构网络Transformer,在进行指法生成时,解码器没有显性地利用当前时间步的邻接乐谱信息,一定程度上导致模型也存在误差传播问题。误差传播问题将导致模型生成的指法质量不可弹奏。直接使用基于点积自注意力的方法无法获得可用的、合理的指法结果。
具体实施方式
[0023] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
[0024] 图1示出了本发明实施例提供的结合曲式结构与局部邻接信息的钢琴指法生成算法结构图,其主要模块包含乐谱信息预处理、结构提取器、截断残差模块和指法生成器。
[0025] 第一步,乐谱信息预处理。
[0026] 图2示出了本发明实施例提供的乐谱综合特征提取方法流程图。对PIG数据集与自建数据集中的乐谱信息进行音符序列化处理,提取音高序列与音符的时间序列。同时,使用归一化技术提取时间序列的真实时值、与音符稠密度,使用独热编码技术提取音高序列的独热向量。
[0027] 乐谱特征预处理利用原始音乐的音高序列p、每个音符的开始时间ton和结束时间toff,对原始乐谱进行综合性的数据预处理。
[0028] 音高信息反映手指在演奏时的位置。笔者根据原始的音高序列p,提取音高的独热向量 音高差分编码d、黑键标识符与和弦标识符作为音高相关特征。其中,音高独热向量即为音高MIDI的独热编码。
[0029] 音高差分编码d的基本思想是用相邻的音高作差,以此表示琴键的相对距离,其计算方法为:
[0030]
[0031] 式中:d(t)为生成的当前时间步的音高差分编码,x代表的是原音高MIDI,t为时间步长变量,k表示和弦中包含的音符数,若是单音,k规定为0。
[0032] 黑键标识符或者和弦标识符为布尔值,它们设置为1时,说明当前音高对应的琴键是黑键或者当前音高是和弦的一部分。考虑黑键或者和弦的原因在于:当手指按压于黑键或者处于一齐按下的和弦时,一些特定的指法是不能被使用的。
[0033] 稠密度的定义是,当前音符开始后,一秒钟之内会响起的全部音符的总和的标准化值。稠密度代表手指按压琴键的频率。笔者将数据集中每个音符的稠密度density标准化,其计算方法为:
[0034]
[0035] 式中:density′是在该音符的开始时间ton到之后一秒内响起的音符总数,MEAN(density′)为数据集中所有density′的平均值,STD(density′)为数据集中所有density′的标准差。
[0036] 真实时值的定义为音符结束时间toff和开始时间ton的差值,单位为秒。真实时值代表手指停留在琴键上的时间。其计算方法为:
[0037] duration=ton‑toff
[0038] 第二步,使用Pytorch深度学习框架搭建本发明模型,并进行特征学习、参数训练。该模型分结构提取器、截断残差模块和指法生成器三部分:
[0039] (1)基于点积自注意力机制的结构提取器
[0040] 图3示出了本发明实施例提供的结构提取器结构图。该结构提取器遵循Transformer的编码器结构,如图3所示。首先,模型基于使积自注意力模块提取乐谱的重复曲式信息,其计算过程为:
[0041]
[0042] 其中,dk是缩放因子,用于稳定训练;Q、K和V分别时查询向量、键向量和值向量,这三个向量都是通过不同的线性变换从输入序列中的每个元素获得的。
[0043] 多个点积自注意力模块组成多头注意力,其计算过程为:
[0044] Multihead(Q,K,V)=concat(head1,head2,...,headi)Wout[0045] headi=Attention(QiWiQ,KiWiK,ViWiV)
[0046] 然后,引入位置编码前馈网络提高模型对源数据的拟合能力,其结构如图4所示。首先,位置编码的编码过程可以表示为:
[0047]
[0048] Et′=Et+Pt
[0049] 其次,引入残差连接与层归一化技术,用于加深训练层数、提高模型表达能力,其过程可以表示为:
[0050] Y=x+SubBlock(LayerNorm(x))
[0051] 结构提取器的后半部分,使用位置编码前馈神经网络层,添加模型对非线性变换的学习能力,如图4所示,该过程表示为:
[0052] E=g(WX+B)
[0053] 式中, 是可训练的模型权重, 是输入矩阵, 是全连接层的可训练偏置。 是全连接层的输出。g()是激活函数。
[0054] 因为ReLU激活函数在使用时,若输入存在负值,可能会出现“死亡神经元”现象,该现象会导致模型训练的不稳定。本发明选择引入ELU激活函数而不是源Transformer模型中常用的ReLU函数,ELU激活函数的计算过程为:
[0055]
[0056] 式中,x为输入ELU函数的特征值。
[0057] ELU函数不会输出0,而是会输出一个负的饱和函数值。并且,ELU函数的输出是平滑的,而ReLU函数的输出是分段线性的。这意味着ELU函数在计算梯度时比ReLU函数更平滑,因此可以更容易地优化模型。此外,当输入为正数时,ELU函数与ReLU函数具有相似的性能,而当输入为负数时,ELU函数比ReLU函数具有更好的性能。这可以提高神经网络的预测准确性。
[0058] 综上所述,位置编码前馈网络的计算过程表示为:
[0059]
[0060] 式中:x为输入特征值,w1、w2分别为两个全连接层的可训练权重,b1、b2分别为两个全连接层的可训练偏置。
[0061] (2)截断残差模块
[0062] 截断残差模块截断源乐曲信息,使用残差计算与归一化技术,将当前时间步的邻接乐谱信息与已生成的部分指法信息结合起来,参与后续指法的判决。其结构如图5所示,该模块的计算过程可表示为:
[0063]
[0064] 式中: 为截断残差模块的输出,Lt是截断长度,该大小为当前已经解码的指法的长度再加1,代表模型将会截取到着后一步的乐谱信息。 是乐谱嵌入模块的输出,即已提取特征的乐谱特征序列。O为先前的指法输出,代表着已生成的指法。shift()函数将指法输出向右移位1,并在开头添加一个特殊的自定义标识符表示序列的开始。truncate()表示将Ie按Lt长度截断。
[0065] (3)自回归式的指法生成器
[0066] 自回归式的指法生成器同样使用点积自注意力机制计算音乐序列的自注意力值,使用掩盖自注意力技术模拟指法序列的自回归特性,在输出端引入Softmax函数和贪婪解码器生成指法。其基本的结构与结构提取器相似,如图6所示。与结构提取提不同点在于,指法生成器引入掩盖多头注意力机制(Masked Multi‑head Attention)模块,掩盖多头注意力机制的计算过程可表示为:
[0067] Mask(X)=M e X
[0068]
[0069] 其中 为掩码自注意力模块的输入序列。掩码矩阵 是一个下三角矩阵,它与输入矩阵X有着相同的维度,并且其对角线的左边全为1,右边全为0。e代表逐元素积,在于输入矩阵X进行逐元素乘积后,注意力矩阵将保留当前时间步前的值,掩盖后续的指法信息。这样在生成时即可逐时间步地生成指法,从而模拟人类真实判决的实况。
[0070] 指法生成器的多头自注意力模块的计算方法与全局特征提取器全局中的多头自注意力模块相同。不同的是输入信息的不同。此处的多头自注意力模块接受来自全局结构提取器输出的全局自注意力,作为其K矩阵和V矩阵的输入来源,而Q矩阵来自上一个子模块。
[0071] 并且,指法生成器在第二个多头自注意力机制时接收来自结构提取器输出的、包含曲式结构信息的注意力值,在指法生成器的尾部,使用Softmax函数选取出现概率值最大的指法。
[0072] 第三步,测试网络并保存最佳网络模型参数。
[0073] 将PIG数据集和专有数据集作为本实验专用的测试集,使用7折交叉验证的方法训练模型。
[0074] (1)将特征训练获得的最佳网络参数加载到网络中,并对测试集进行分割;
[0075] (2)将获得的分割结果图与原始数据进行性能评估,获得的指法平均匹配率为66.56%、峰值匹配率为73.53%。
[0076] 以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。