一种基于深度学习的钢琴和声自动编配系统及方法与流程

文档序号:18457938发布日期:2019-08-17 01:46阅读:439来源:国知局
一种基于深度学习的钢琴和声自动编配系统及方法与流程

本发明涉及到信号滤波器组分析、音乐信号主音符估计、和声估计、循环神经网络等技术领域,具体涉及一种基于深度学习的钢琴和声自动编配系统及方法。



背景技术:

主旋律以及和声在音乐中都占有重要的地位。其中,主旋律是按一定的音高、时值和音量构成的音符序列,而和声是多个音符的结合,对音乐特色的展示以及对人类情感的表达都发挥巨大作用。一方面,为主旋律编配和声,涉及到基础乐理以及和声规则等专业知识,需要具备丰富音乐知识的专业人员才能胜任此工作,对于普通用户来说,技术门槛要求较高。另一方面,音乐的形式和风格多种多样,每个人都会对某些特定风格有所偏爱,因此,相同的一段旋律,可以根据不同的风格为主旋律编配不同的和声,从而满足用户个性化需求。

从wav格式的钢琴音乐中提取主旋律以及和声,首先要检测音符的起点时间和结束时间,检测准确率将直接影响后面的音符估计性能。以往音符起点检测有以下方法:基于短时能量和过零率、基于相位特征、基于频谱差值和高频加权成分分析等。其中,通过短时能量和过零率来判断音符起点是借鉴语音信号的做法,准确率不高;基于相位特征的方法易受低频能量噪声影响,不适合钢琴这种复调音乐;基于频谱差值的方法需要处理大量频率点,计算量较大;高频加权成分分析方法由于赋予高频较大的加权系数,会导致低频能量难以检测。另外,上述方法都没有考虑到具体的乐音特征,抑制了音高信息,从而降低对钢琴的音符起点检测性能。

其次,在检测完音符起点时间和结束时间后,需要进行音符估计,包括主音符估计以及和声估计,按照时间顺序拼接即可得到主音符序列以及和声序列。以往和声估计的方法有以下方法:基于迭代的谱减法、基于频谱最大似然概率模型和基于隐马尔可夫模型。其中,最经典的方法是基于迭代的谱减法,该方法不仅需要过多的超参数,而且每一步迭代过程都需要进行频谱平滑处理,破坏频谱信息;基于频谱最大似然概率模型的方法无法很好解决基频个数估计的问题;基于隐马尔可夫模型的方法则需要根据大量样本来学习最优的模型参数,计算复杂度高。

对主旋律进行和声编配,目前大多是人工的方法,而本发明使用一种基于深度学习的和声编配方法,在提取主音符序列以及和声序列后,分别作为神经网络的输入和输出对神经网络模型进行训练,使得神经网络学习特定风格的和声编配规则。训练完成后,输入一首钢琴音乐,提取主音符序列并输入到神经网络,神经网络的输出就是和声序列,从而实现自动为一首音乐的主旋律编配特定风格的和声。由于该系统包含音符起点检测以及和声估计两个过程,为了解决上述传统方法带来的问题,本发明的方案提供了基于十二平均律的音符起点检测方法以及针对钢琴音色的、高效的和声估计方法,从而更接近音乐和乐器的本质。



技术实现要素:

本发明的目的在于提供一种基于深度学习的钢琴和声自动编配系统,该系统可以根据不同的歌曲风格为主旋律编配不同的和声,从而满足用户个性化需求。在本发明中,第一,为了克服在音符起点检测中忽略音高信息而导致检测性能不高的问题,本发明提出一种基于十二平均律的音律滤波器组的音符起点检测方法,音律滤波器组包含88个带通滤波器,其中心频率与钢琴的88个琴键的基频一一对应,截止频率为中心频率的相邻半音的频率,该方法不仅考虑到低频段能量集中的特点,又考虑到音高信息,从而提升检测性能。第二,为了克服在和声估计中准确率不高以及算法效率低等问题,本发明提出一种基于音色滤波器组的和声估计方法,和谱减法相比,该方法不需要超参数,不破坏频谱信息,而且提取的特征维度只有88维,算法效率高。

本发明提供的基于深度学习的钢琴和声自动编配系统,包含三个模块,音符检测模块、音符估计模块和神经网络模块。音符检测模块负责提取所有音符的起点时间和结束时间,将一首音乐分割成多个音符段,每个音符段包含一个或者多个音符;音符估计模块负责提取每个音符段的主音符以及和声,按照时间顺序拼接得到主音符序列以及和声序列;神经网络模块负责将上述提取到的主音符序列以及和声序列分别作为输入和输出对模型进行训练,训练完成后,往模型输入主音符序列,得到对应的和声序列,从而实现和声的自动编配。

所述的音符检测模块,负责提取音符起点和音符终点,将一首音乐分割成多个音符段,每个音符段包含一个或者多个音符,一个音符则为主音符,而多个音符则包含一个主音符以及和声。音符检测模块包含一个音律滤波器组,它包含多个带通滤波器,带通滤波器的数量以及每个带通滤波器的中心频率和对应带宽将由十二平均律决定,因为十二平均律已经规定两个单音之间的相对音高,而钢琴是十二平均律制乐器,有88个琴键,每一个琴键的音高就是根据十二平均律定音,因此,音律滤波器组的带通滤波器数量是88个,带通滤波器的中心频率与钢琴的88个琴键的基频一一对应,截止频率为中心频率的相邻半音的频率。

上述音符检测模块的工作过程为:

1)输入wav格式的钢琴音乐,经过归一化、分帧加窗、短时傅里叶变换和对数转换步骤,获取每一帧的对数能量谱。

2)通过音律滤波器组获取每帧能量在频率上的分布,公式如下:

其中,sm(ω)代表第m帧的对数能量谱,hk(ω)代表第k个滤波器的传递函数,由于滤波器的数量为88个,因此k的取值范围为[1,88],e(m,k)代表第m帧对数能量谱通过第k个滤波器的输出,将e(m,1),e(m,2),…,e(m,88)拼接得到第m帧的88维列向量,向量中的每一个元素代表对应频率带的能量成分。

3)对每一帧获取的88维向量,以帧为单位对向量进行一阶差分,然后对一阶差分求均值。

4)音符起点检测:检测一阶差分均值的峰值,该峰值对应的时间就是音符的起点时间,并设置一个时间阈值,把相邻时间小于阈值的音符的起点进行合并,当作是一个音符起点,该时间阈值将根据具体的实验结果进行设置。

5)音符终点检测:在两个音符起点之间检测音符终点,根据音符起点开始第一帧的短时能量设置阈值,逐帧判断,如果发现短时能量小于阈值的帧则视为音符终点,如果在第二个音符起点之前所有帧的短时能量都大于阈值,则把第二个音符起点视为第一个音符的终点。

6)获取音符段:每个音符的起点和终点之间构成一个音符段,音符段包含一个或者多个音符。

所述的音符估计模块,负责提取主音符以及和声。其中,包含一个音色滤波器组,与音律滤波器组不同,该音色滤波器组不仅考虑到钢琴88个琴键的基频信息,还考虑到每个琴键对应基频的谐波结构信息,也就是说,该音色滤波器组有88个音色滤波器,每个音色滤波器有多个通带,各个通带的中心频率就是对应琴键的基频及其谐波频率,考虑到低频段基频的谐波数量较多,而高频段基频的谐波数量较少等音色特征,通带的个数将根据对应基频所在频率范围来设定,而通带的带宽由十二平均律来决定,即通带的截止频率为中心频率的相邻半音的频率,由于十二平均律的规定,频率越大,与相邻半音的频率相差越大,因此,在每一个滤波器中,通带的带宽会随着谐波次数的增加而不断变宽。

上述提取主音符以及和声的过程为:

1)训练琴键单音样本音色矩阵:88个琴键的单音样本,每一个样本在经过傅里叶变换后获取幅度谱,通过音色滤波器组,输出为:

其中,xm(ω)代表第m个单音样本的幅度谱,m的取值范围为[1,88],gk(ω)代表音色滤波器组中第k个滤波器的传递函数,由于滤波器的数量为88个,因此k的取值范围为[1,88],a(k,m)是第m个单音样本的幅度谱通过第k个滤波器的输出,代表滤波后输出的能量值,因此,一个单音样本对应一个88维列向量,而88个琴键单音样本能得到88个88维向量,组成88×88的琴键单音样本音色矩阵a88×88,其中的每个元素为a(k,m)。

2)对于需要提取主音符以及和声的音符段,计算其能量矩阵:音符段通过音色滤波器组进行滤波,对每个音色滤波器的滤波信号计算能量:

其中,v(ω)代表音符段的幅度谱,gk(ω)代表音色滤波器组中第k个滤波器的传递函数,k的取值范围为[1,88],ek代表音符段通过第k个滤波器滤波后输出的能量值,将e1,e2,…,e88拼接可组成88×1能量矩阵e88×1。

3)对琴键单音样本音色矩阵a88×88进行降维处理:由于能量矩阵e88×1中每个元素代表对应琴键的基频及其谐波的能量之和,也代表着对应琴键出现的可能性,其值越大,出现可能性越大,而且在和声中音符的个数一般不超过5个,故可以根据此来对琴键单音样本音色矩阵a88×88进行降维,从能量矩阵e88×1中找出前n个较大值,得到其对应的琴键序号,然后从琴键单音样本音色矩阵a88×88中找出相应琴键序号的列,把琴键单音样本音色矩阵a88×88降维到88×n,得到琴键单音样本音色降维矩阵b88×n。

4)计算和声系数向量,得到主音符以及和声:对已经计算出来的能量矩阵e88×1和琴键单音样本音色降维矩阵b88×n,计算和声系数向量wn×1,使得琴键单音样本音色降维矩阵b88×n与和声系数向量wn×1的乘积逼近能量矩阵e88×1:

e88×1≈b88×n×wn×1(4)

其中,e88×1代表能量矩阵,b88×n代表音色降维矩阵,wn×1代表和声系数向量。其物理意义是:将一个音符段的能量矩阵e88×1表示成n个琴键单音样本的能量分布的组合,因此,和声系数向量wn×1中的元素代表对应琴键的音量,故可以设置一个阈值,小于阈值的元素设置为0,最后不为零的元素所对应的琴键组合成一个和声,而最大的元素值所对应的琴键的音符,就是主音符。

上述神经网络模块,由于输入和输出都是与时间有关的序列,而且考虑到某个特定时刻的和声编配不仅与前面的音符有联系,还会受到后面的音符的影响,所以神经网络的结构选用双向的长短期记忆网络。

基于上述的一种基于深度学习的钢琴和声自动编配系统的自动编配方法,包括如下步骤:

(1)根据88个琴键的单音样本生成琴键单音样本音色矩阵:每个样本在经过傅里叶变换后获取幅度谱,通过音色滤波器组,得到一个88维向量,即是每一个琴键对应一个88维向量,因此88个琴键可得到88×88的琴键单音样本音色矩阵,用于音符估计模块提取主音符以及和声。

(2)输入多首风格相似的wav格式的钢琴音乐,用于训练模型。

(3)音符检测模块提取音符起点和音符终点,将一首音乐分割成多个音符段,每个音符段包含一个或者多个音符。

(4)音符估计模块根据88×88的琴键单音样本音色矩阵,提取每个音符段的主音符以及和声,按照时间顺序拼接得到主音符序列以及和声序列。

(5)将上述提取到的主音符序列以及和声序列,分别作为神经网络的输入和输出对模型进行训练。

(6)模型训练完成后,输入需要编配和声的wav格式的钢琴音乐,重复(3)-(4)的过程,将提取的主音符序列输入到神经网络模块,此时神经网络模块将输出对应风格的和声序列,从而实现和声自动编配。

与现有技术相比,本发明具有以下优点:

(1)在检测音符起点和终点时,考虑到具体的乐音特征,基于十二平均律音律以及钢琴琴键的个数设计一个音律滤波器组,既考虑到低频段能量集中的特点,又考虑到音高信息,从而提升检测性能。

(2)在提取主音符以及和声时用到的音色滤波器组,考虑钢琴每个琴键的基频以及谐波结构信息,即是钢琴的音色特征,不仅如此,和谱减法相比,该方法不需要过多的超参数,不会破坏频谱信息。而且通过降维处理后得到的向量维度少,使得计算效率得到提高。

(3)为主旋律编配和声,涉及到基础乐理以及和声规则等专业知识,技术门槛要求较高,目前大多是人工进行编配,本发明使用基于深度学习的方法代替人工为主旋律编配和声,让神经网络学习复杂的和声编配规则,不仅可以减少人力成本,还可以消除人为主观因素的干扰。

(4)每个人会对不同风格的音乐有所偏爱,用户可自行提供特定风格的钢琴音乐作为神经网络的训练集,完成训练后,神经网络便具有为主音符编配特定风格的和声的能力,从而满足用户个性化需求。

附图说明

图1是本发明钢琴和声自动编配系统的结构框图;

图2是本发明音律滤波器组的示意图;

图3是本发明音符起点检测模块的结构框图;

图4是本发明音色滤波器组的示意图;

图5是本发明音符估计模块的结构框图;

图6是本发明基于深度学习的钢琴和声编配系统的工作流程图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步说明,但本发明的实施不限于此,需指出的是,以下若有未特别详细说明之过程或符号,均是本领域技术人员可参照现有技术理解或实现的。

如图1所示,是钢琴和声自动编配系统的结构框图,包含三个模块:音符检测模块、音符估计模块和神经网络模块;音符检测模块负责提取所有音符的起点时间和结束时间,将一首wav格式的钢琴音乐分割成多个音符段,每个音符段包含一个或者多个音符;音符估计模块负责提取每个音符段的主音符以及和声,按照时间顺序拼接得到主音符序列以及和声序列;神经网络模块负责将上述提取到的主音符序列以及和声序列分别作为输入和输出对模型进行训练,训练完成后,往模型输入主音符序列,得到对应的和声序列,从而实现和声的自动编配。

如图2所示,是音律滤波器组的示意图。音律滤波器组包含多个带通滤波器,带通滤波器的数量以及每个带通滤波器的中心频率和对应带宽将由十二平均律决定,因为十二平均律已经规定两个单音之间的相对音高,而钢琴是十二平均律制乐器,有88个琴键,每一个琴键的音高就是根据十二平均律定音,因此,音律滤波器组的带通滤波器数量是88个,其中f1,f2,…,f88分别为每个带通滤波器的中心频率,与钢琴的88个琴键的基频一一对应,而截止频率为中心频率的相邻半音的频率。另一方面,通带的形状目前有两种选择,一种是三角形状,另一种是余弦形状,这里示意的每个带通滤波器为三角形滤波器,后期将根据实验结果选择具体的通带形状。

如图3所示,是音符检测模块的结构框图,该模块负责提取音符起点和音符终点,将一首音乐分割成多个音符段,每个音符段包含一个或者多个音符,一个音符则为主音符,而多个音符则包含一个主音符以及和声。具体的音符检测过程为:

1)输入wav格式的钢琴音乐,经过归一化、分帧加窗、短时傅里叶变换和对数转换步骤,获取每一帧的对数能量谱。在分帧时,考虑到wav格式的音乐一般采样率为44.1khz,因此窗口长度取2048个采样点,帧移取512个采样点,则相邻帧的时间差约为11.6ms,即预测值与实际结果的误差时间最多为11.6ms。

2)通过音律滤波器组获取每帧能量在频率上的分布,如公式(1)所示,其中,sm(ω)代表第m帧的对数能量谱,hk(ω)代表第k个滤波器的传递函数,由于滤波器的数量为88个,因此k的取值范围为[1,88],e(m,k)代表第m帧对数能量谱通过第k个滤波器的输出,将e(m,1),e(m,2),…,e(m,88)拼接得到第m帧的88维列向量,向量中的每一个元素代表对应频率带的能量成分。

3)对每一帧获取的88维向量,以帧为单位对向量进行一阶差分,然后对一阶差分求均值。

4)音符起点检测:检测一阶差分均值的峰值,该峰值对应的时间就是音符的起点时间,并设置一个时间阈值,把相邻时间小于阈值的音符的起点进行合并,当作是一个音符起点,该时间阈值将根据具体的实验结果进行设置。

5)音符终点检测:在两个音符起点之间检测音符终点,根据音符起点开始第一帧的短时能量设置阈值,具体的阈值将根据具体的实验结果进行选择,然后逐帧判断,如果发现短时能量小于阈值的帧则视为音符终点,如果在第二个音符起点之前所有帧的短时能量都大于阈值,则把第二个音符起点视为第一个音符的终点。

6)获取音符段:每个音符的起点和终点之间构成一个音符段,音符段包含一个或者多个音符。

如图4所示,是音色滤波器组的示意图。该滤波器组不仅考虑到钢琴88个琴键的基频信息,还考虑到每个琴键对应基频的谐波结构信息,也就是说,该音色滤波器组有88个音色滤波器,其中h1(ω),h2(ω),…,h88(ω)分别代表每个音色滤波器的频率响应函数,在每个音色滤波器中,有多个通带,各个通带的中心频率就是对应琴键的基频及其谐波频率,比如,在第一个音色滤波器中,第一个通带的中心频率为基频f1,第二个通带的中心频率为基频的二次谐波频率2f1,以此类推,第n个通带的中心频率为基频的n次谐波频率nf1,考虑到低频段基频的谐波数量较多,而高频段基频的谐波数量较少等音色特征,n的取值将根据对应基频所在频率范围来设定,而通带的带宽由十二平均律来决定,即通带的截止频率为中心频率的相邻半音的频率,由于十二平均律的规定,频率越大,与相邻半音的频率相差越大,因此,通带的带宽会随着谐波次数的增加而不断变宽。另一方面,通带的形状目前有两种选择,一种是三角形状,另一种是余弦形状,这里示意的每个带通滤波器为三角形滤波器,后期将根据实验结果选择具体的通带形状。

如图5所示,是本发明的音符估计模块的结构框图,该模块负责提取主音符以及和声,具体过程为:

1)训练琴键单音样本音色矩阵:88个琴键的单音样本,每一个样本在经过傅里叶变换后获取幅度谱,通过音色滤波器组,输出如公式(2)所示,其中,xm(ω)代表第m个单音样本的幅度谱,m的取值范围为[1,88],gk(ω)代表音色滤波器组中第k个滤波器的传递函数,由于滤波器的数量为88个,因此k的取值范围为[1,88],a(k,m)是第m个单音样本的幅度谱通过第k个滤波器的输出,代表滤波后输出的能量值,因此,一个单音样本对应一个88维列向量,而88个琴键单音样本能得到88个88维向量,组成88×88的琴键单音样本音色矩阵a88×88,其中的每个元素为a(k,m)。

2)对于需要提取主音符以及和声的音符段,计算其能量矩阵:音符段通过音色滤波器组进行滤波,对每个音色滤波器的滤波信号计算能量,如公式(3)所示,其中,v(ω)代表音符段的幅度谱,gk(ω)代表音色滤波器组中第k个滤波器的传递函数,k的取值范围为[1,88],ek代表音符段通过第k个滤波器滤波后输出的能量值,将e1,e2,…,e88拼接可组成88×1能量矩阵e88×1。

3)对琴键单音样本音色矩阵a88×88进行降维处理:由于能量矩阵e88×1中每个元素代表对应琴键的基频及其谐波的能量之和,也代表着对应琴键出现的可能性,其值越大,出现可能性越大,而且在和声中音符的个数一般不超过5个,故可以根据此来对琴键单音样本音色矩阵a88×88进行降维,从能量矩阵e88×1中找出前n个较大值,得到其对应的琴键序号,然后从琴键单音样本音色矩阵a88×88中找出相应琴键序号的列,把琴键单音样本音色矩阵a88×88降维到88×n,得到琴键单音样本音色降维矩阵b88×n。

4)计算和声系数向量,得到主音符以及和声:对已经计算出来的能量矩阵e88×1和琴键单音样本音色降维矩阵b88×n,计算和声系数向量wn×1,使得琴键单音样本音色降维矩阵b88×n与和声系数向量wn×1的乘积逼近能量矩阵e88×1,如公式(4)所示,其中,e88×1代表能量矩阵,b88×n代表音色降维矩阵,wn×1代表和声系数向量。其物理意义是:将一个音符段的能量矩阵e88×1表示成n个琴键单音样本的能量分布的组合,因此,和声系数向量wn×1中的元素代表对应琴键的音量,故可以设置一个阈值,小于阈值的元素设置为0,最后不为零的元素所对应的琴键组合成一个和声,而最大的元素值所对应的琴键的音符,就是主音符。

如图6所示,是本发明基于深度学习的钢琴和声自动编配系统的工作流程图。具体的工作流程如下:

(1)根据88个琴键的单音样本生成琴键单音样本音色矩阵:每个样本在经过傅里叶变换后获取幅度谱,通过音色滤波器组,得到一个88维向量,即是每一个琴键对应一个88维向量,因此88个琴键可得到88×88的琴键单音样本音色矩阵,用于音符估计模块提取主音符以及和声。

(2)输入多首风格相似的wav格式的钢琴音乐,用于训练模型。

(3)音符检测模块提取音符起点和音符终点,将一首音乐分割成多个音符段,每个音符段包含一个或者多个音符。

(4)音符估计模块根据88×88的琴键单音样本音色矩阵,提取每个音符段的主音符以及和声,按照时间顺序拼接得到主音符序列以及和声序列。

(5)将上述提取到的主音符序列以及和声序列,分别作为神经网络的输入和输出对模型进行训练。

(6)模型训练完成后,输入需要编配和声的wav格式的钢琴音乐,重复(3)-(4)的过程,将提取的主音符序列输入到神经网络模块,此时神经网络模块将输出对应风格的和声序列,从而实现和声自动编配。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1