一种基于旋律特征聚类与优化的哼唱检索方法

文档序号:26588587发布日期:2021-09-10 20:07阅读:95来源:国知局
一种基于旋律特征聚类与优化的哼唱检索方法

1.本发明涉及声音与音乐的信号处理技术、音乐声学理论、机器学习、人工智能技术领域,具体涉及一种哼唱检索方法。


背景技术:

2.哼唱检索是近年来新兴的检索方法,是一项通过哼唱歌曲来进行音乐检索的技术。具体而言,哼唱检索需要检索出与哼唱旋律特征相匹配的歌曲旋律特征,从而根据旋律特征的匹配程度来确定哼唱歌曲的所属类别。然而,不同人哼唱同一旋律将会产生较大差异,从而导致同首歌在不同版本之间的旋律特征具有极强的不一致性。因此,并无法保证哼唱歌曲与其对应歌曲的旋律特征完全一致,进而导致检索结果不准确。研究者们针对旋律匹配问题,jang首先尝试了动态时间归整(dynamic time warping,dtw)与线性伸缩(linear scaling,ls)等近邻检索算法。接着,wu提出了一种具有优越性的递归对齐(recursive align,ra)方法。而ryynanen提出的局部敏感哈希(locally sensitive hashing,lsh)方法则是目前应用最为广泛的近邻检索方法。lsh方法需要通过旋律特征在多个方向上的投影来获取近邻,因此并无法保证其得到的近邻候选集是旋律特征的真正近邻。
3.针对上述问题,可以直接在特征空间中对旋律特征进行聚类,将空间距离近的旋律特征划分到同一聚类,使得划分到同一聚类内的旋律特征均互为真正近邻,从而有效保证检索结果的正确性。在众多旋律特征聚类方法中,使用最广泛的方法为k

均值聚类算法(k

means)。虽然k

means算法简单高效,但随机选取初始聚类中心将引入更多的不确定因素,且易陷入局部最优解。针对k

means算法初始簇心敏感和无法很好处理密度差异较大的数据集问题,本文将优化初始聚类中心的k

means(optimized initial clustering center k

means,oicc k

means)算法引入到哼唱检索中,其能够依据高密度优先聚类的思想,提升密度差异较大数据集的聚类效果,增强算法的稳定性。
4.经过特征聚类后,同簇的旋律特征具有更高的结构相似性。对旋律特征进行聚类后,本文将聚类结果作为标签,并采用深度置信网络(deep beliefnetworks,dbn)来进行旋律特征提取,以获得区分性更强的高层旋律特征。进行哼唱检索时,利用哼唱旋律特征匹配到最相似的聚类特征,在该聚类内的歌曲旋律特征结构相似,正确检索结果包含在其中。实验结果表明所提出的方法能够有效提升哼唱检索系统的性能。


技术实现要素:

5.本发明要解决的技术问题是哼唱检索不稳定的问题,提出了一种基于旋律特征聚类与优化的哼唱检索方法。
6.为了达到上述目的,本发明采用的技术方案是:
7.s1、对歌曲库midi文件提取音高向量;
8.s2、利用基于优化初始聚类中心的k

means算法,对步骤s1中提取的音高向量进行
聚类,获取聚类标签;
9.s3、利用步骤s1中提取的音高向量及步骤s2中获取的聚类标签训练dbn模型;
10.s4、利用步骤s3中得到的dbn模型,提取步骤s1中音高向量所对应的高层旋律特征及其类别信息,利用这些信息构成歌曲特征库;
11.s5、对哼唱wav文件提取音高向量;
12.s6、利用步骤s3中得到的dbn模型,提取步骤s5中音高向量所对应的高层旋律特征及其类别信息;
13.s7、利用步骤s6中得到的类别信息,将步骤s6中提取的高层旋律特征与步骤s4歌曲特征库中同类别的高层旋律特征进行匹配,最终得到匹配结果。
14.进一步的,所述步骤s1中对歌曲库midi文件提取音高向量,其具体方法包括:
15.s11、midi文件由不同音符值p
i
持续t
i
时间所构成的音符序列(p1,t1),...,(p
i
,t
i
)表示,音符持续时间t
i
又可以转换为持续帧数f
i
,因此可以根据帧移数将时间音符序列转换为帧移音符序列(p1,f1),...,(p
i
,f
i
)。
16.s12、所有的二维帧移音符序列均可由一维音高序列来表示:
[0017][0018]
其中,p
i
表示任意音符,f
i
表示音符持续帧数。
[0019]
s13、每个midi文件由不同音符值p
w
构成一维音高序列(p1,...,p
w
,...,p
w
),对其提取音高向量时,需要选取一个h秒的窗,在窗内提取一个固定时间间隔的高维音高向量,然后移动窗去提取下一个音高向量,以此类推,最终即可获得全部音高向量,表示为:
[0020]
x=(p1,...,p
w+t
,...,p
w+t(d

1)
)
[0021]
其中,x为音高向量,t为采样间隔,d为音高向量维数。
[0022]
进一步的,所述步骤s2中对步骤s1中提取的音高向量进行聚类,其具体方法包括:
[0023]
s21、将样本数据集合定义表示为d={x1,x2,...,x
n
},k个簇类定义表示为c={c1,c2,...,c
k
},m个集合定义表示为m={m1,m2,...,m
m
},根据上述的符号定义,首先应该计算出两数据对象间的欧式距离:
[0024][0025]
式中,x
i
,x
j
表示为数据对象,x
il
表示为x
i
的第l个特征属性,x
jl
表示为x
j
的第l个特征属性;接着将距离最短的两个数据对象组成一个样本集合m
m
(0≤m≤k),k表示为簇类数,从总的数据集d中将它们删除,同时计算出样本集合m
m
内所有数据对象的均值。
[0026]
s22、计算数据集d中每个对象与样本集合m
m
间的距离:
[0027][0028]
其中,m为距离最短的两点组成的集合,d'为删除集合m中数据后的样本数据集,为第m个集合m
m
的均值;找到距离最近的点加入集合m
m
,将它从数据集d中删除,并计算集合m
m
内所有数据对象的均值;重复执行直到m
m
内数据对象大于等于α
·
(n/k),(0<α≤1);若m<k,则重复以上步骤直到m≥k,即当集合的数目等于簇类数目时,结束寻找初始聚类中
心。
[0029]
s23、经过上述步骤即可获得最优的初始聚类中心,利用这些聚类中心进行音高向量聚类从而获得最优聚类结果;音高向量集x={x1,...,x
n
,...,x
n
},每个数据对象x
n
有d维,在半径r内数据对象数目与总数据集的比值(占比率)为p(0≤p≤1),相邻两次误差平方和之差为β,计算每个数据对象与中心的距离:
[0030][0031]
并把它划分给最近的聚类中心,得到k个簇类,重新计算每个簇类的中心:
[0032][0033]
重新划分簇并更新中心,直到聚类中心不再变化或者连续两次e值差小于阈值,聚类完成得到聚类后的簇。
[0034]
进一步的,所述步骤s3中训练dbn模型的具体内容是:
[0035]
将步骤s1中提取的音高向量{x1,x2,...,x
n
}作为训练数据,训练数据标签则采用步骤s2中对应的聚类标签,采用sigmoid激活函数,如下所示:
[0036][0037]
目标函数则采用softmax损失函数,其分类过程如下所示:
[0038][0039]
其中,z是上一层的输出,softmax的输入,维度为c,y
i
为某一类别的概率值,i的取值代表了类别数,n代表聚类后簇的数量。
[0040]
进一步的,步骤s4中构成歌曲特征库的具体方法为:
[0041]
s41、将步骤s1中提取的音高向量{x1,x2,...,x
n
}送入dbn模型,提取全连接层的输入作为高层旋律特征{e1,e2,...,e
n
},并将softmax输出结果作为类别信息。
[0042]
s42、利用音高向量、高层旋律特征、类别信息、所属歌曲id一起构成歌曲特征库。
[0043]
进一步的,所述步骤s5中提取wav文件音高向量,其具体方法为:
[0044]
s51、利用短时自相关方法从wav文件中提取音高序列,短时自相关函数r(o)表现方式如下:
[0045][0046]
其中,y(j)表示一段语音信号,j为窗长,o=(

j+1)~(j

1)且为偶数时,r(o)不为零。
[0047]
s52、需要经过中值滤波、去均值等操作,使音高序列变得平滑,在此之后,为了与步骤s1中midi文件的音高序列匹配,还需要对音高序列进行半音处理,将其转化为midi文件中音符的半音表示:
[0048]
s=log2(f/440)
×
12+69
[0049]
其中,s为音高值,f为基音频率。
[0050]
s53、每个wav文件由不同音符值p
w
构成一维音高序列(p1,...,p
w
,...,p
w
),对其提取音高向量时,需要选取一个h秒的窗,在窗内提取一个固定时间间隔的高维音高向量,然后移动窗去提取下一个音高向量,以此类推,最终即可获得全部音高向量,表示为:
[0051]
x=(p1,...,p
w+t
,...,p
w+t(d

1)
)
[0052]
其中,x为音高向量;t为采样间隔;d为音高向量维数。
[0053]
进一步的,所述步骤s6中提取步骤s5中音高向量所对应的高层旋律特征及其类别信息如下所示:
[0054]
将步骤s5中提取的音高向量{x1,x2,...,x
n
}送入dbn模型,提取全连接层的输入作为高层旋律特征{e1,e2,...,e
n
},并将softmax输出结果作为类别信息。
[0055]
进一步的,所述步骤s7中高层旋律特征匹配过程如下所示:
[0056]
s71、利用线性伸缩方法粗略计算步骤s6中获得的高层旋律特征与步骤s4歌曲特征库中同类别的高层旋律的距离,筛选掉大部分伪候选。
[0057]
s72、使用边界对齐线性伸缩算法和重音移位递归对齐算法精确计算高层旋律特征的距离。
[0058]
s73、按照高层旋律特征的距离大小对所有候选进行排序,排序结果即为哼唱检索系统的检索结果。
[0059]
本发明的先进点在于:
[0060]
1、本发明采用iocck

means算法对音高向量进行聚类,使得同一聚类内的音高向量互为准确的近邻,可以用相似的特征来表示这个聚类,在检索时找到与哼唱旋律特征相似的聚类,即可得到全部候选集,只需在聚类内检索即可得到检索结果。
[0061]
2、iocck

means算法有效避免k

means算法对初始簇心敏感和无法很好处理密度差异较大数据集的问题,其能够依据高密度优先聚类的思想,有效提升密度差异较大数据集的聚类效果,增强算法的稳定性。
[0062]
3、考虑到聚类后的旋律特征可以进行进一步的特征表示,因此将聚类后的标签作为dbn的输入标签并进行特征提取,以获取具有更强区分性的高层旋律特征,从而有效提升旋律特征的鲁棒性。
附图说明
[0063]
图1为哼唱检索系统示意图。
[0064]
图2为提取音高向量过程示意图。
[0065]
图3为dbn模型结构图。
具体实施方式
[0066]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0067]
实施例1,
[0068]
参见图1

图3,本实施例1提供了一种基于旋律特征聚类与优化的哼唱检索方法,
[0069]
包括如下步骤:
[0070]
s1、对歌曲库midi文件提取音高向量;
[0071]
参见图1,midi文件执行图1左侧,选取合适的帧移将时间音符序列转化为帧移音符序列,对其提取音高向量时,选取一个包含60个音高的窗,采样间隔为3,窗移为15,在窗内提取一个20维的音高向量,不断移动窗得到全部音高向量。
[0072]
步骤s1中歌曲库midi文件使用国际中一些哼唱检索公开数据集,比如ioacas_qbh,jang,和hidden jang等,并将midi文件用于提取音高向量,具体步骤为:
[0073]
s11、midi文件由不同音符值p
i
持续t
i
时间所构成的音符序列(p1,t1),...,(p
i
,t
i
)表示,音符持续时间t
i
又可以转换为持续帧数f
i
,因此可以根据帧移数将时间音符序列转换为帧移音符序列(p1,f1),...,(p
i
,f
i
)。
[0074]
s12、所有的二维帧移音符序列均可由一维音高序列来表示:
[0075][0076]
其中,p
i
表示任意音符,f
i
表示音符持续帧数。
[0077]
s13、每个midi文件由不同音符值p
w
构成一维音高序列(p1,...,p
w
,...,p
w
),对其提取音高向量时,需要选取一个h秒的窗,在窗内提取一个固定时间间隔的高维音高向量,然后移动窗去提取下一个音高向量,以此类推,最终即可获得全部音高向量,表示为:
[0078]
x=(p1,...,p
w+t
,...,p
w+t(d

1)
)
[0079]
其中,x为音高向量,t为采样间隔,d为音高向量维数。
[0080]
具体的说,s1步骤是从歌曲数据库中,获取midi文件,然后根据帧移数将时间音符序列转换为帧移音符序列(p1,p2,...,p
w
),选取的窗内包含60个音高,采样间隔为3,窗移为15,最终获取大小为20维的音高向量,抽取的音高向量:(p1,p4,...,p
58
),(p
16
,p
19
,...,p
73
),...。
[0081]
s2、利用基于优化初始聚类中心的k

means算法,对步骤s1中提取的音高向量进行聚类,获取聚类标签;
[0082]
步骤s2具体包括:
[0083]
s21、将样本数据集合定义表示为d={x1,x2,...,x
n
},k个簇类定义表示为c={c1,c2,...,c
k
},m个集合定义表示为m={m1,m2,...,m
m
},根据上述的符号定义,首先应该计算出两数据对象间的欧式距离:
[0084][0085]
式中,x
i
,x
j
表示为数据对象,x
il
表示为x
i
的第l个特征属性,x
jl
表示为x
j
的第l个特征属性;接着将距离最短的两个数据对象组成一个样本集合m
m
(0≤m≤k),k表示为簇类数,从总的数据集d中将它们删除,同时计算出样本集合m
m
内所有数据对象的均值。
[0086]
s22、计算数据集d中每个对象与样本集合m
m
间的距离:
[0087]
[0088]
其中,m为距离最短的两点组成的集合,d'为删除集合m中数据后的样本数据集,为第m个集合m
m
的均值;找到距离最近的点加入集合m
m
,将它从数据集d中删除,并计算集合m
m
内所有数据对象的均值;重复执行直到m
m
内数据对象大于等于α
·
(n/k),(0<α≤1);若m<k,则重复以上步骤直到m≥k,即当集合的数目等于簇类数目时,结束寻找初始聚类中心。
[0089]
s23、经过上述步骤即可获得最优的初始聚类中心,利用这些聚类中心进行音高向量聚类从而获得最优聚类结果;音高向量集x={x1,...,x
n
,...,x
n
},每个数据对象x
n
有d维,在半径r内数据对象数目与总数据集的比值(占比率)为p(0≤p≤1),相邻两次误差平方和之差为β,计算每个数据对象与中心的距离:
[0090][0091]
并把它划分给最近的聚类中心,得到k个簇类,重新计算每个簇类的中心:
[0092][0093]
重新划分簇并更新中心,直到聚类中心不再变化或者连续两次e值差小于阈值,聚类完成得到聚类后的簇。
[0094]
s3、利用步骤s1中提取的音高向量及步骤s2中获取的聚类标签训练dbn模型;
[0095]
参见图2,dbn模型采用6层,每层1024个节点,每层之后都加入了sigmoid激活函数,之后接入全连接层,最后采用softmax作为输出层。将全连接层的输入作为高层旋律特征,用来后续进行高层旋律特征匹配。通过softmax输出结果作为类别信息,用来记录音高向量所属类别。
[0096]
具体的说,将步骤s1中提取的音高向量{x1,x2,...,x
n
}作为训练数据,训练数据标签则采用步骤s2中对应的聚类标签,采用sigmoid激活函数,如下所示:
[0097][0098]
目标函数则采用softmax损失函数,其分类过程如下所示:
[0099][0100]
其中,z是上一层的输出,softmax的输入,维度为c,y
i
为某一类别的概率值,i的取值代表了类别数,n代表聚类后簇的数量。
[0101]
s4、利用步骤s3中得到的dbn模型,提取步骤s1中音高向量所对应的高层旋律特征及其类别信息,利用这些信息构成歌曲特征库;
[0102]
步骤s4具体包括:
[0103]
s41、将步骤s1中提取的音高向量{x1,x2,...,x
n
}送入dbn模型,提取全连接层的输入作为高层旋律特征{e1,e2,...,e
n
},并将softmax输出结果作为类别信息。
[0104]
s42、利用音高向量、高层旋律特征、类别信息、所属歌曲id一起构成歌曲特征库。
[0105]
具体的说,将歌曲库midi文件的音高向量输入到dbn模型中,得到高层旋律特征及
其类别信息,构成歌曲特征库,为高层旋律特征匹配做准备。
[0106]
s5、对哼唱wav文件提取音高向量;
[0107]
参见图1,wav文件执行图1右侧,选取短时自相关方法获取音符序列,对其提取音高向量时,选取一个包含60个音高的窗,采样间隔为3,窗移为15,在窗内提取一个20维的音高向量,不断移动窗得到全部音高向量。提取音高向量具体过程如下所示:
[0108]
s51、利用短时自相关方法从wav文件中提取音高序列,短时自相关函数r(o)表现方式如下:
[0109][0110]
其中,y(j)表示一段语音信号,j为窗长,o=(

j+1)~(j

1)且为偶数时,r(o)不为零。
[0111]
s52、需要经过中值滤波、去均值等操作,使音高序列变得平滑,在此之后,为了与步骤s1中midi文件的音高序列匹配,还需要对音高序列进行半音处理,将其转化为midi文件中音符的半音表示:
[0112]
s=log2(f/440)
×
12+69
[0113]
其中,s为音高值,f为基音频率。
[0114]
s53、每个wav文件由不同音符值p
w
构成一维音高序列(p1,...,p
w
,...,p
w
),对其提取音高向量时,需要选取一个h秒的窗,在窗内提取一个固定时间间隔的高维音高向量,然后移动窗去提取下一个音高向量,以此类推,最终即可获得全部音高向量,表示为:
[0115]
x=(p1,...,p
w+t
,...,p
w+t(d

1)
)
[0116]
其中,x为音高向量;t为采样间隔;d为音高向量维数。
[0117]
s6、利用步骤s3中得到的dbn模型,提取步骤s5中音高向量所对应的高层旋律特征及其类别信息;
[0118]
步骤s6具体包括:
[0119]
将步骤s5中提取的音高向量{x1,x2,...,x
n
}送入dbn模型,提取全连接层的输入作为高层旋律特征{e1,e2,...,e
n
},并将softmax输出结果作为类别信息。
[0120]
s7、利用步骤s6中得到的类别信息,将步骤s6中提取的高层旋律特征与步骤s4歌曲特征库中同类别的高层旋律特征进行匹配,最终得到匹配结果;
[0121]
步骤s7具体包括:
[0122]
s71、利用线性伸缩方法粗略计算步骤s6中获得的高层旋律特征与步骤s4歌曲特征库中同类别的高层旋律的距离,筛选掉大部分伪候选。
[0123]
s72、使用边界对齐线性伸缩算法和重音移位递归对齐算法精确计算高层旋律特征的距离。
[0124]
s73、按照高层旋律特征的距离大小对所有候选进行排序,排序结果即为哼唱检索系统的检索结果。
[0125]
具体的说,利用哼唱wav音频的高层旋律特征匹配到最相似的聚类特征,在该聚类内的歌曲高层旋律特征结构相似,正确检索结果包含在其中。因此,在该类内检索即可得到准确检索结果,使得该系统不仅检索稳定高效,而且检索精度高。
[0126]
本发明未详述之处,均为本领域技术人员的公知技术。
[0127]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1