一种基于音符瞬态字典和稳态字典的多音高估计方法与流程
2021-01-28 12:01:08|255|起点商标网
[0001]
本发明涉及钢琴音乐的音符起点检测、多音高估计、非负矩阵分解技术领域,具体涉及一种基于音符瞬态字典和稳态字典的多音高估计方法。
背景技术:
[0002]
音乐是人类表达感情和相互传递信息的重要手段,它是人类智慧与感性思维的体现,许多无法用语言准确描述的思想感情可以通过音乐表达出来,因此音乐是人们思想交流和情感表达的重要组成部分。
[0003]
随着计算机网络和多媒体技术的发展,数字音乐的创作和传播不断加快。数字音乐产业的蓬勃发展及海量音乐数据的涌现,使得音乐的分类、检索、推荐、内容分析等技术越来越重要,并成为数字音频处理领域的研究热点。而在数字化、信息化时代,获取各种音乐的最重要底层手段是通过音乐信息检索(music information retrieval,mir)技术。其中的音符起点检测和多音高估计的准确性,奠定了数字音频处理领域的基石,对于进一步分析音乐结构分析、音乐检索、音乐风格分类、翻唱识别等方面具有非常重要的作用。
[0004]
在打击乐器中,一般可以将音符的变化过程分为瞬态和稳态两个阶段,更进一步地划分为四个基本阶段,分别是起音(attack)、衰减(decay)、保持(sustain)和消失(release)。其中起音阶段到衰减阶段的幅度随时间变化比较快,为瞬态阶段;保持阶段到消失阶段的幅度随时间变化比较平稳,为稳态阶段。音符起点检测是要检测出音符起音开始的瞬间,而多音高估计是提取同一时刻弹奏的音符数量及其音高值。
[0005]
针对从wav格式的钢琴音乐中提取同一时刻弹奏的音符数量及其音高值,首先需要检测音符的起点时间和结束时间,将音符起点和终点之间作为一个音符事件段,每个音符事件段包含同一时刻弹奏的一个或者多个音符。以往音符起点检测有以下方法:基于短时能量和过零率、基于相位特征、基于频谱差值和高频加权成分分析等。其中,通过短时能量和过零率来判断音符起点是借鉴语音信号的做法,准确率不高;基于相位特征的方法易受低频能量噪声影响,不适合钢琴这种复调音乐;基于频谱差值的方法需要处理大量频率点,计算量较大,且难以检测较弱的起音;高频加权成分分析方法由于赋予高频较大的加权系数,会导致低频处的较弱的音符难以检测。
[0006]
其次,音符事件检测得到的音符事件段需要进行多音高估计,提取每个音符事件段的音符数量及其音高值。以往的多音高估计方法分为特征法、统计模型法和谱分解法。但是这些方法都有各自的缺陷,其中特征法通常采用固定的筛选规则,不能自适应的对待待测文件进行处理;统计模型法的计算复杂度较高,八度错误现象比较突出,并且音符个数的估计结果也不是很理想;传统谱分解法通常使用短时傅里叶变换谱进行矩阵分解,且在音符特征字典中使用单原子构建字典,即一个音符由一个谱基原子表示,从而未能充分利用音符变化过程中随时间变化的频谱信息。
技术实现要素:
[0007]
本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于音符瞬态字典和稳态字典的多音高估计方法,该多音高估计方法包括音符事件检测步骤和多音高估计步骤。其中,音符事件检测步骤利用钢琴的八度音阶划分音频为6个子频带,以各子频带能量加权的功率缩放频谱通量(power-scaled spectral flux)作加窗求差处理后的结果为起点检测函数,以此增强音乐信号中较弱的起音并抑制较强的起音,同时也增强了检测方法的鲁棒性,达到更精确的音符起点检测;多音高估计步骤根据音符的时变性,利用单个音符样本的瞬态阶段和稳态阶段的频谱特征构建音符瞬态特征字典基矩阵和稳态特征字典基矩阵,通过对待测音符事件段的瞬态阶段和稳态阶段的频谱应用范数稀疏约束的非负矩阵分解方法,求出相应部分的系数矩阵,以此来提高钢琴多音符估计的性能。
[0008]
本发明的目的可以通过采取如下技术方案达到:
[0009]
一种基于音符瞬态字典和稳态字典的多音高估计方法,所述的多音高估计方法包括:
[0010]
音符事件检测步骤,输入一首wav格式的钢琴音乐,采用一个八度滤波器组检测音符事件的发生,提取其音符的起点时间和结束时间,将音符起点和终点之间作为一个音符事件段,将一首wav格式的钢琴音乐分割成多个音符事件段,每个音符事件段包含同一时刻弹奏的一个或者多个音符;
[0011]
多音高估计步骤,提取每个音符事件段的音符数量及其音高值,按照时间顺序拼接得到包含多音符的音符序列。
[0012]
进一步地,所述音符事件检测步骤中的八度滤波器组包含多个带通滤波器,其中,带通滤波器的数量以及每个带通滤波器的截止频率由钢琴琴键个数和八度十二平均律决定。
[0013]
进一步地,由于标准钢琴是十二平均律制乐器,有88个琴键,每一个琴键的音高就是根据十二平均律定音;同时考虑到钢琴前三个八度的基频分布相近和带通滤波器在前三个八度的间隔频率处的衰减情况,整合前三个八度为一个频带。因此,所述八度滤波器组中带通滤波器数量是6个,截止频率为每个八度相隔的相邻两个音的基频均值。
[0014]
进一步地,所述音符事件检测步骤的工作过程为:
[0015]
s101、输入一首wav格式的钢琴音乐,经过八度滤波器组后将音频分为6个子频带,对各子频带进行归一化、分帧加窗以及变q变换(variable q transform,vqt)和功率缩放步骤,获取每一帧的功率缩放能量谱,并计算相邻帧的一阶差分,将特定帧的所有行加起来得到该子频带的新奇函数(novelty function);
[0016]
s102、计算每个子频带每帧的均方根能量并求和得到该子频带的能量,取各子频带相对于整个音乐频带的能量比重为权重系数,将各子频带新奇函数加权求和;
[0017]
s103、对加权求和后的新奇函数进行加窗处理,求和窗口中的各帧,对其进行一阶差分,然后计算加权求和后的新奇函数与加窗后一阶差分的差值,将其结果作为音符起点检测函数;
[0018]
s104、对起点检测函数进行归一化处理并检测其峰值,该峰值对应的时间就是音符的起点时间,设置一个时间阈值,将相邻时间差小于阈值的音符的起点进行合并,作为一
个音符起点;
[0019]
s105、根据音符起点开始第一帧的短时能量设置阈值,逐帧判断,如果发现短时能量小于阈值的帧则视为音符终点,如果在第二个音符起点之前所有帧的短时能量都大于阈值,则把第二个音符起点视为第一个音符的终点;
[0020]
s106、将每个音符的起点和终点作为一个音符事件段,该音符事件段包含同一时刻弹奏的一个或者多个音符。
[0021]
进一步地,所述多音高估计步骤的工作过程为:
[0022]
s201、利用单个音符样本的瞬态阶段和稳态阶段的频谱特征构建音符瞬态特征字典基矩阵与音符稳态特征字典基矩阵;
[0023]
s202、根据得到的音符瞬态特征字典基矩阵与音符稳态特征字典基矩阵,基于待识别的音符事件段的瞬态阶段和稳态阶段归一化的频谱应用范数稀疏约束的非负矩阵分解方法进行多音符结果估计,即检测音符事件段中存在的音符数量及其音高值。
[0024]
进一步地,所述步骤s201的过程如下:
[0025]
s2011、对88个钢琴单音符样本信号的瞬态阶段和稳态阶段分别进行变q变换,得到各自的频谱矩阵,并进行归一化处理;
[0026]
s2012、分别对归一化后的瞬态阶段和稳态阶段的频谱矩阵进行非负矩阵分解估计,得到该音符样本的谱基原子,从而得到该音符相应阶段的频谱特征矩阵;
[0027]
s2013、对每个音符特征矩阵的每个谱基原子进行归一化处理;
[0028]
s2014、按照钢琴88个音符的音高从小到大顺序排序,分别拼接得到音符瞬态阶段和稳态阶段的音符瞬态特征字典基矩阵和音符稳态特征字典基矩阵。
[0029]
进一步地,所述步骤s202的过程如下:
[0030]
s2021、对音符事件检测步骤得到的音符事件段的瞬态阶段和稳态阶段分别进行变q变换,得到各自的频谱矩阵,并进行归一化处理;
[0031]
s2022、采用音符瞬态特征字典基矩阵和音符稳态特征字典基矩阵对归一化的瞬态阶段和稳态阶段的频谱矩阵进行范数稀疏约束的非负矩阵分解估计,得到相对应阶段的系数矩阵,相加得到该音符事件段的系数矩阵;
[0032]
s2023、对得到的系数矩阵进行阈值后处理,当一个单音符的系数超过设定的阈值时,则判定在该音符事件段中存在该单音符;
[0033]
s2024、按照时间顺序拼接得到包含多音符的音符序列,从而得到多音高估计结果。
[0034]
与现有技术相比,本发明具有以下优点及效果:
[0035]
1)在音符事件检测步骤中,检测音符事件的发生并提取其音符的起点时间和结束时间,考虑到有些低频音符的起音通常非常柔和,因此采用频带分割加权和功率缩放,不仅增强了音乐信号中较弱的起音和抑制了较强的起音,而且还增强了检测方法的鲁棒性;进一步的通过加窗求差处理,增加了正确检测到的音符起音,而且会减少误报,从而提升整体的检测性能。
[0036]
2)在多音高估计步骤中,多音高估计是基于音符事件发生的音符事件段进行分解估计的,提前考虑了钢琴弹奏过程中音符的打击瞬间、音高值和结束瞬间,避免了出现伪弹
奏的错误;考虑到音乐的连续性和音符的时变性,将音符划分为两个主要阶段:瞬态阶段和稳态阶段,分别处理音符事件段的瞬态阶段和稳态阶段,并使用多原子的音符特征字典和引入范数稀疏约束,在保持基于非负矩阵分解方法的快速过程的同时,实现了更高的精度估计。
附图说明
[0037]
图1是本发明中公开的一种基于音符瞬态字典和稳态字典的多音高估计方法的流程图;
[0038]
图2是本发明实施例中八度滤波器组的频率响应图;
[0039]
图3是本发明实施例中音符各阶段组成的示意图;
[0040]
图4是本发明实施例中对部分音频的音符事件划分图;
[0041]
图5是本发明实施例中音符事件检测步骤的结构框图;
[0042]
图6是本发明实施例中多音高估计步骤中音符特征字典基矩阵构建的结构框图;
[0043]
图7是本发明实施例中多音高估计步骤中音符事件段谱分解的结构框图。
具体实施方式
[0044]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]
实施例
[0046]
如图1所示,公开了本实施例中基于音符瞬态字典和稳态字典的多音高估计方法的流程图。具体步骤如下:
[0047]
音符事件检测步骤,输入一首wav格式的钢琴音乐,采用一个八度滤波器组检测音符事件的发生,提取其音符的起点时间和结束时间,将音符的起点和终点之间作为一个音符事件段(如图4所示,音符的起点和终点之间构成一个音符事件段),将一首wav格式的钢琴音乐分割成多个音符事件段,每个音符事件段包含同一时刻弹奏的一个或者多个音符;
[0048]
多音高估计步骤,提取每个音符事件段的音符数量及其音高值,按照时间顺序拼接得到包含多音符的音符序列。
[0049]
如图2所示,是本发明实施例中八度滤波器组的频率响应图。它包含多个带通滤波器,其中,带通滤波器的数量以及每个带通滤波器的截止频率由钢琴琴键个数和八度十二平均律决定。由于标准钢琴是十二平均律制乐器,有88个琴键,每一个琴键的音高就是根据十二平均律定音;考虑钢琴前三个八度的基频分布在27.5hz~207.652hz之间,且带通滤波器在这三个八度的间隔频率处衰减较大,整合前三个八度为一个频带。因此,滤波器组的带通滤波器数量是6个,截止频率为每个八度相隔的相邻两个音的基频均值。
[0050]
如图3所示,是本发明实施例中音符各阶段组成的示意图,表现为音符从起始到结束过程中的幅值变化。一般将音符的变化过程分为瞬态阶段和稳态阶段,更进一步地划分为四个基本阶段,分别是起音、衰减、保持和消失。其中音符起音阶段到衰减阶段的幅度随
时间变化比较快,为瞬态阶段;保持阶段到消失阶段的幅度随时间变化比较平稳,为稳态阶段。图中瞬态阶段的开始点就是音符的起始点,音符事件检测步骤的目标就是检测这一开始点。
[0051]
如图5所示,是本发明实施例中音符事件检测步骤的结构框图,具体过程如下:
[0052]
s101、输入一首wav格式的钢琴音乐,经过八度滤波器组后将音频分为6个子频带;
[0053]
s102、对各子频带进行归一化、分帧加窗等预处理,其参数设置考虑到wav格式的音乐的采样率一般为44.1khz,且为了避免频谱泄露,对信号使用汉明窗,因此,窗口长度取2048个采样点,帧移取512个采样点,则相邻帧的时间差约为11.6毫秒,即预测值与实际结果的误差时间最多为11.6毫秒;
[0054]
s103、对经过预处理的信号进行变q变换得到相应的频谱x(k,n),并进行归一化处理,其中,k表示每帧的频数,n表示帧数。常用的时频变换中,短时傅里叶变换采用固定长度窗口使得其容易产生频率分辨率问题,同时其频率点是线性分布的,与呈指数分布的钢琴音符的频率并不能一一对应上,这导致了某些音符频率的估计误差会比较大;常数q变换的频率点分布并非线性分布而是呈指数分布,但由于低频处选择的采样点很多导致时间分辨率比较低。所以,采用在低频处也有较高时间分辨率的变q变换,其第k个频率分量的带宽与中心频率的关系如下:
[0055][0056]
δ
k
=α
·
f
k
+γ
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(2)
[0057]
其中,f
k
是频率带k的中心频率;δ
k
是第k个频率分量的带宽;f
min
是分析音乐信号频率区间内的最低频率,取27.5hz;b是每个八度音程内的频率点数,通常为12的倍数,为了得到更为丰富的频谱特征信息,取48;k是变q变换谱中划分的频带数目;为恒定值,仅与b的取值有关;γ是补偿参数,当γ>0时,提高在低频处的时间分辨率;
[0058]
s104、对归一化后的每帧频谱进行功率缩放,并计算相邻帧的一阶差分,将特定帧的所有行加起来得到该子频带的新奇函数,采用公式如下:
[0059]
sf(k,n)=|x(k,n+1)|
p-|x(k,n)|
p
ꢀꢀꢀꢀꢀꢀꢀ
公式(3)
[0060][0061]
其中,sf(k,n)表示为相邻功率缩放能量谱的频谱通量;x(k,n)表示输入信号的变q变换谱;nf
i
(n)表示为该子频带的新奇函数;|x|
p
表示x中元素的p次方;h(x)=(x+|x|)/2表示为半波整流函数;k表示每帧的频数;p表示功率缩放指数,一般取0.5;
[0062]
s105、计算每个子频带的每帧的均方根能量并求和得到该子频带的能量,取各子频带相对于整个音乐频带的能量比重为权重系数,将各子频带新奇函数加权求和,采用公式如下:
[0063]
[0064][0065]
其中,ω
i
是第i个子频带相对于整个音乐频带的能量比重,即权重系数;nf
i
(n)是第i个子频带的新奇函数;rmse
i
是第i个子频带的均方根能量;nf(n)是加权求和后的新奇函数;
[0066]
s106、对加权求和后的新奇函数nf(n)进行加窗处理,求和窗口中的各帧,对其进行一阶差分,然后计算加权求和后的新奇函数与加窗后一阶差分的差值,将其结果作为音符起点检测函数,采用公式如下:
[0067][0068]
odf(n)=nf(n)-{w(n)-w(n-1)}
ꢀꢀꢀꢀꢀ
公式(8)
[0069]
其中,w(n)是对新奇函数在帧n之后长度为w帧窗口中的和;odf(n)为音符起点检测函数;
[0070]
s107、对起点检测函数进行归一化处理并检测其峰值,该峰值对应的时间就是音符的起点时间,设置一个时间阈值,将相邻时间差小于阈值的音符的起点进行合并,作为一个音符起点,其中,该时间阈值通常为50毫秒;
[0071]
s108、根据音符起点开始第一帧的短时能量设置阈值,逐帧判断,如果发现短时能量小于阈值的帧则视为音符终点,如果在第二个音符起点之前所有帧的短时能量都大于阈值,则把第二个音符起点视为第一个音符的终点,其中,阈值大小通常为第一帧短时能量的十分之一;
[0072]
s109、将每个音符的起点和终点作为一个音符事件段,该音符事件段包含同一时刻弹奏的一个或者多个音符。
[0073]
如图6所示,是本发明实施例中多音高估计步骤中音符特征字典基矩阵构建的结构框图,具体过程如下:
[0074]
s2011、对88个钢琴单音符样本信号x(n)的瞬态阶段和稳态阶段分别进行变q变换,得到各自的频谱矩阵x
m
×
n
,并进行归一化处理,其中m=1,
…
,m表示频数,n=1,
…
,n表示帧数;
[0075]
s2012、分别对归一化后的瞬态阶段和稳态阶段的频谱矩阵x
m
×
n
进行非负矩阵分解得到该音符样本相应阶段的谱基原子。假设第k个音符样本相应阶段的频谱矩阵表示为对矩阵进行非负矩阵分解,取秩为r:
[0076][0077]
其中,表示该音符样本相应阶段的频谱特征矩阵;表示该音符样本相应阶段的频谱特征矩阵相对应的系数矩阵;秩r表示构建字典时的原子个数。分解运算采用基于β散度的代价函数,如公式(10)所示;为了获得首先采用随机的非负值初始化,
然后用公式(11)和公式(12)迭代更新矩阵和每次迭代使得代价函数c
β
(x|z)的值减小,直到其收敛停止迭代;
[0078][0079][0080][0081]
其中,z=wh;运算符
°
表示两个矩阵对应元素乘积;运算符
←
表示用其右边对象赋值左边对象;h
t
表示矩阵h的转置;z
a
表示矩阵z中元素的a次方;β取值为0.5;
[0082]
s2013、对每个音符相应阶段的频谱特征矩阵的每个谱基原子进行l
2
范数的归一化处理,如下所示:
[0083][0084]
s2014、按照钢琴88个音符的音高从小到大顺序排序,分别拼接得到音符瞬态阶段和稳态阶段的音符瞬态特征字典基矩阵和音符稳态特征字典基矩阵如下所示:
[0085][0086][0087]
其中,表示第k个音符样本瞬态阶段的音符瞬态频谱特征矩阵;表示第k个音符样本稳态阶段的音符稳态频谱特征矩阵。
[0088]
如图7所示,是本发明实施例中多音高估计步骤中音符事件段谱分解的结构框图,具体过程如下:
[0089]
s2021、对音符事件检测步骤得到的音符事件段的瞬态阶段和稳态阶段分别进行变q变换,得到瞬态阶段的频谱矩阵和稳态阶段的频谱矩阵并进行归一化处理,其中m=1,
…
,m表示频数,n=1,
…
,n表示帧数;
[0090]
s2022、对归一化后的瞬态阶段的频谱矩阵和稳态阶段的频谱矩阵分别应用准备好的音符瞬态特征字典基矩阵和音符稳态特征字典基矩阵进行范数稀疏约束的非负矩阵分解估计,得到音符瞬态阶段的系数矩阵和音符稳态阶段的系数矩阵相加得到该音符事件段的系数矩阵其中,采用公式如下所示:
[0091][0092][0093][0094]
其中,运算符
°
表示两个矩阵对应元素乘积;运算符
←
表示用其右边对象赋值左边对象;表示使目标函数f取最小值时的变量值x;h
t
表示瞬态阶段的系数矩阵;h
s
表示稳态阶段的系数矩阵;w
t
表示音符瞬态特征字典基矩阵;w
s
表示音符稳态特征字典基矩阵;λ
1
和λ
2
表示稀疏约束的强度;和表示添加的范数约束项,其参数取p=2,q=0.5;和表示对相应系数矩阵添加范数约束项的梯度;β取值为0.5;
[0095]
s2023、对得到的系数矩阵h的值按从大到小的顺序排列,取前m个作为候选基频的系数,然后计算阈值λ
·
δs,当一个单音符的系数超过设定的阈值时,则判定在音符事件段中存在该单音;其中,λ为常数,取值范围为0<λ<1,δs为最大系数与第m大系数之差,即δs=s(1)-s(m);
[0096]
s2024、按照时间顺序拼接得到包含多音符的音符序列,从而得到多音高估计结果。
[0097]
如上即可较好地实现本发明并取得前述的技术优点。
[0098]
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除
热门咨询
tips