首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际检索单位 / 一种基于音符建模的哼唱式音乐检索方法及系统

一种基于音符建模的哼唱式音乐检索方法及系统

阅读:30发布:2020-06-21

专利汇可以提供一种基于音符建模的哼唱式音乐检索方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 适用于计算机应用技术领域,提供了一种基于音符建模的哼唱式音乐检索方法及系统。本发明采用高斯混合模型技术对标准音符进行建模和参数训练,将从哼唱语音中解析出来的音符及其时长序列与库中各关键旋律的标准音符及其时值序列进行相似度计算,取出最优结果。其最突出的特点是,当歌曲库新增歌曲时不需要进行新增模型和参数训练工作,具有推广应用前景。,下面是一种基于音符建模的哼唱式音乐检索方法及系统专利的具体信息内容。

1.一种基于音符建模的哼唱式音乐检索方法,其特征在于,所述哼唱识别方法包括下述步骤:
步骤A,于用户的哼唱语音中,提取各语音的音高,并保存为哼唱语音音高序列;
步骤B,根据预先建立的音符模型参数库,利用步骤A提取的音高分别计算出当前语音帧属于所述音符模型参数库中各个音符模型的概率值,根据计算的概率值以及音符模型参数库对当前语音帧进行音符模型匹配识别,若当前语音帧与其前一相邻语音帧分属不同的音符模型时,记录下当前语音帧的帧号;
步骤C,重复步骤A到步骤B,当哼唱语音依序逐语音帧全部处理完毕后,得出所述哼唱语音所对应的音符模型序列以及序列中各个音符模型的起始语音帧号,依次计算出每个音符模型所持续的语音帧数,对应为该音符模型持续的时长;
步骤D,结合步骤A中得到的哼唱语音音高序列对步骤C中得到的音符模型及其时长序列进行修正处理,最终确定出所述哼唱语音所包含的音符模型序列及其相对应的时长序列,并表示成<音符,时长>的二元组序列形式;
步骤E,对步骤D中得到的<音符,时长>二元组序列在预先建立的歌曲及旋律乐素结构库中进行匹配和相似度计算,按照相似度值由高到低进行排序,选取前若干名相似度最高的旋律作为最终的识别结果进行输出。
2.如权利要求1所述的方法,其特征在于,所述歌曲及旋律乐素结构库包括每首歌曲的歌曲索引、歌名、演唱者、类型、放音文件存储位置以及该歌曲所包含的若干段关键旋律的旋律乐素结构,库中歌曲按照各自唯一的索引号进行分类和组织,歌曲与其对应的旋律乐素结构通过索引号进行关联,所述旋律乐素结构是指由在关键旋律中依次出现的每一个音符的音符名称和该音符的演唱时值构成的<音符,时值>单元结构依次形成的一个二元组序列,各旋律乐素结构通过歌谱或歌曲配套的MIDI文件按照乐理常识解析得出,按照自身所包含的二元组单元结构的个数多少进行排序;
在所述歌曲及旋律乐素结构库中,采用下述步骤F1至F3将每首歌曲的关键旋律所对应歌谱中的音符逐一解析成<音符,时值>二元组序列结构中的音符元素:
步骤F1,对于有调号标识的歌谱,将各个音符按照指定的调号进行平移;
步骤F2,对于音符上有上弧线标识的连音线时,若连音线作用在同一个音符上,解析时不产生新音符,若连音线连接两个以上不同的音符,则解析时不考虑该连音线的影响,各自进行音符解析;
步骤F3,歌谱中的休止符解析成静音,仍采用该休止符具有的时值;
在所述歌曲及旋律乐素结构库中,采用下述步骤F4至F8将每首歌曲的关键旋律所对应歌谱中音符的时值逐一解析成<音符,时值>二元组序列结构中的时值元素:
步骤F4,以每秒60拍的中等演唱速度作为转化的基准,将基准速度下演唱一拍的四分音符其时值表示为1数据单位,其余节拍音符据此类推出表示其时值的数据值;
步骤F5,对于无特定速度标记的歌谱,其音符时值默认按照基准演唱速度进行转化;
步骤F6,对于标记为快速、慢速的歌谱,根据乐理以基准演唱作为基准,对标记速度进行折算,计算出各音符的相对基准演唱速度的时值数据;
步骤F7,对于附点音符,则多增加附点前面音符所对应时值的一半;
步骤F8,对于音符上面有上弧线标识的连音线时,若连音线作用在同一个音符上,解析时不产生新音符,把前后所连的音符的时值相加,作为该音符的时值。
3.如权利要求1所述的方法,其特征在于,所述音符模型参数库包含分别为处于低八度、中八度、高八度区段中的各个标准音符以及一个静音所建立的统计模型,每一个模型基于高斯混合建模技术进行建模,采用多个单高斯分布进行混合,通过如下公式对音符模型的概率密度函数G(x)进行加权混合计算:
其中,M为包含的单一高斯分布的个数,αj为各个单一高斯分布的概率密度函数的混合权重,Pj(x,μj,Σj)的定义如下:
其中,T表示矩阵的转置,x为待估算的哼唱语音帧的音高特征列向量,μ为模型期望,Σ为模型方差,μ、Σ均由若干训练样本语音帧的音高特征列向量cj得出, 为均值向量, 是协方差矩阵,n为训练样本的个数。
4.如权利要求3所述的方法,其特征在于,所述音符模型的计算参数通过如下步骤训练得到:
步骤G1,进行音符模型高斯混合概率密度函数计算参数的初始化,对于每一个音符模型,将该音符的国际标准音高作为所述计算参数的初始期望均值;
步骤G2,在步骤G1音符模型计算参数初始化的基础上,利用从哼唱语料中提取出来的该音符的音高作为观察样本值,利用期望最大化算法进行最大似然估计,确定音符模型高斯混合概率密度函数的各个计算参数;
步骤G3,依次根据步骤G1和G2训练得到的每一个音符模型,将哼唱语料中提取出来的所有音高观察样本值划分成两类,一类是属于该音符模型的接受域,另一类是不属于该音符模型的拒绝域,利用后验概率和似然比分析的方法对所述接受域和拒绝域所包含的观察样本值进行处理以确定该音符模型的拒识阈值
5.如权利要求1所述的方法,其特征在于,所述步骤E包括如下步骤:
步骤E1,利用步骤D中得到的哼唱语音的<音符,时长>结构序列,提取出哼唱语音的音符前向间距序列DS[m]和音符时长序列TS[m],其中m为所述哼唱语音所包含的<音符,时长>二元结构的个数,所述音符前向间距是指关键旋律或哼唱语音所对应的音符序列中当前音符与下一相邻的音符之间的位置序号之差;
步骤E2,在歌曲及旋律乐素结构库中依次选取出某一关键旋律的乐素结构,从中提取出所述关键旋律的音符前向间距序列DB[n]和音符时值序列TB[n],其中n为所述关键旋律所包含的<音符,时值>二元结构的个数;
步骤E3,在哼唱语音的音符前向间距序列DS[m]和当前关键旋律的音符前向间距序列DB[n]之间搜索出最长公共音符子序列LCNS以及最长相似音符子序列LSNS,得出最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS在DB[n]中的起始位置LC_DB、最长公共音符子序列LCNS在DS[m]中的起始位置LC_DS、最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS在DB[n]中的起始位置LS_DB、最长相似音符子序列LSNS在DS[m]中的起始位置LS_Ds,并计算哼唱语音对当前关键旋律的最长公共音符子序列的音符相似度Lc/n和最长相似音符子序列的音符相似度Ls/n;
步骤E4,对于步骤E3中得到的最长公共音符子序列LCNS、长度Lc、起始位置LC_DB和LC_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TcBK,按照DTW动态规划方法,计算出最长公共音符子序列LCNS所对应的TcSK和TcBK序列区间的匹配度DTWc;
步骤E5,对于步骤E3中得到的最长相似音符子序列LSNS、长度Ls、起始位置LS_DB和LS_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TSBK,按照DTW动态规划方法,计算出最长公共音符子序列LSNS所对应的TSSK和TSBK序列区间的匹配度DTWs;
步骤E6,根据步骤E3至步骤E5得出的最长公共音符子序列的音符相似度Lc/n、最长相似音符子序列的音符相似度Ls/n、哼唱语音与当前关键旋律之间在最长公共音符子序列上的时间匹配度DTWc、哼唱语音与当前关键旋律之间在最长相似音符子序列上的时间匹配度DTWs,加权运算得到哼唱语音对当前关键旋律的综合相似度TScore,计算公式如下:
TScore=w1*Lc/n+w2*Ls/n+w3/DTWc+w4/DTWs
其中,w1,w2,w3,w4分别为预设的各项的权重系数;
步骤E7,重复步骤E2至E6,直到歌曲及旋律乐素结构库中所有关键旋律都处理完毕,最后得到哼唱语音对所有关键旋律的综合相似度,并进行综合相似度排序,从中选取前若干名相似度高的作为旋律识别的结果进行输出;
在所述步骤E3中,根据如下步骤搜索出最长公共音符子序列LCNS和最长相似音符子序列LSNS:
步骤E31,建立搜索矩阵MatrixC[mxn]和MatrixS[mxn],初始化LCNS、LSNS的长度Lc、Ls以及起点位置均为0;
步骤E32,设定步号i从1到m,步长为1,从DS[1]到DS[m]逐序列项与DB[n]中每项依次比较分析;
步骤E33,设定步号j从1到n,步长为1,从DB[1]到DB[n]逐序列项与DS[i]进行比对处理,记录下中间结果;
步骤E34,按照以下方法迭代生成公共音符子序列:
当DS[i]=DB[j]时,LCNS[i,j]=LCNS[i-1,j-1]+DS[i],形成新的极长公共子序列,保存在搜索矩阵MatrixC中,更新极长公共子序列的长度Lc和分别在DS[m]及DB[n]中的起点位置;
步骤E35,把音高紧邻,即音符之间的序位距离为1或-1的音符,作为音高相似音符,按照以下方法迭代生成相似音符子序列:
当DS[i]=DB[j]或DS[i]=DB[j]+1或DS[i]=DB[j]-1时,LSNS[i,j]=LSNS[i-1,j-1]+DS[i],形成新的极长相似子序列,保存在搜索矩阵MatrixS中,更新极长相似子序列的长度Ls和分别在DS[m]及DB[n]中的起点位置;
步骤E36,重复步骤E33到步骤E35,直到步号j进行到第n步为止;
步骤E37,重复步骤E32到步骤E35,直到步号i进行到第m步为止;
步骤E38,动态迭代完毕后,得到最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS对应于旋律模板DB[n]的起始位置,同时得到最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS对应于旋律模板DB[n]的起始位置;
所述音符前向间距序列根据如下步骤生成:
步骤H1,预先在从低八度到高八度的区间上按音高从低到高的顺序对音乐中全部音符依序排列,记录下各个音符的位置序号;
步骤H2,对于歌曲及旋律乐素结构库中每一关键旋律的旋律乐素结构,从其<音符,时值>序列中依序逐一从中取出一个音符,计算该音符与其下一个邻音音符之间的位置序号之差,所述<音符,时值>序列处理完毕后,得出该关键旋律的音符前向间距序列;
步骤H3,对于哼唱语音,根据在步骤D中识别出来的<音符,时长>序列,依序逐一从中取出一个音符,计算该音符与其下一个邻音音符之间的位置序号之差,所述<音符,时长>序列处理完毕后,得出该哼唱语音的音符前向间距序列。
6.如权利要求1所述的方法,其特征在于,所述步骤B包括如下步骤:
步骤B1,根据预先建立的音符模型参数库,对步骤A提取的当前语音帧的音高分别代入所述音符模型参数库中各个音符模型的高斯混合概率密度函数计算出所述语音帧属于各个音符模型的概率值;
步骤B2,将当前语音帧与所述概率值中最大者所对应的音符模型进行匹配,当该最大概率值低于相应音符模型的拒识阈值时进行拒识处理;
步骤B3,若匹配结果为当前语音帧与前一语音帧分属不同的音符模型时,记录下当前语音帧的帧号。
7.一种基于音符建模的哼唱式音乐检索系统,其特征在于,包括:
哼唱输入采集器,用于采集用户的哼唱语音;
音高特征提取器,用于从用户的哼唱语音中,逐语音帧提取音高,并保存成哼唱语音音高序列;
音符匹配识别器,用于根据预先建立的音符模型参数库,利用提取的音高分别计算出当前语音帧属于所述音符模型参数库中各个音符模型的概率值,根据计算的概率值以及音符模型参数库对当前语音帧进行音符模型匹配识别,若当前语音帧与其前一相邻语音帧分属不同的音符模型时,记录下当前语音帧的帧号;重复上述过程直到哼唱语音依序逐语音帧全部处理完毕,得出所述哼唱语音所对应的音符模型序列以及序列中各个音符模型的起始语音帧号,依次计算出每个音符模型所持续的语音帧数,对应为该音符模型持续的时长;
结合得到的哼唱语音音高序列对得到的音符模型及其时长序列进行修正处理,最终确定出所述哼唱语音所包含的音符模型序列及其相对应的时长序列,并表示成<音符,时长>的二元组序列形式;
旋律识别器,用于对得到的<音符,时长>二元组序列在预先建立的歌曲及旋律乐素结构库中进行匹配和相似度计算,按照相似度值由高到低进行排序,选取前若干名相似度最高的旋律作为最终的识别结果进行输出。
8.如权利要求7所述的系统,其特征在于,所述歌曲及旋律乐素结构库包括歌曲索引、歌名、演唱者、类型、放音文件存储位置以及每首歌曲所包含的若干段关键旋律的旋律乐素结构,库中歌曲按照各自唯一的索引号进行分类和组织,歌曲与其对应的旋律乐素结构通过索引号进行关联,所述旋律乐素结构是指由在关键旋律中依次出现的每一个音符的音符名称和该音符的演唱时值构成的<音符,时值>单元结构依次形成的一个二元组序列,各旋律乐素结构通过歌谱或歌曲配套的MIDI文件解析得出,按照自身所包含的二元组单元结构的个数多少进行排序;
所述旋律识别器采用以下方式将所述各关键旋律所对应歌谱中的音符逐一解析成<音符,时值>旋律乐素结构中的音符元素:对于有调号标识的歌谱,将各个音符按照指定的调号进行平移;对于音符上有上弧线标识的连音线时,若连音线作用在同一个音符上,解析时不产生新音符,若连音线连接两个以上不同的音符,则解析时不考虑该连音线的影响,各自进行音符解析;歌谱中的休止符解析成静音,仍采用该休止符具有的时值;
所述旋律识别器采用以下方式将所述各关键旋律所对应歌谱中音符的时值逐一解析成<音符,时值>旋律乐素结构中的时值元素:以每秒60拍的中等演唱速度作为转化的基准,将基准速度下演唱一拍的四分音符其时值表示为1数据单位,其余节拍音符据此类推出表示其时值的数据值;对于无特定速度标记的歌谱,其音符时值默认按照基准演唱速度进行转化;对于标记为快速、慢速的歌谱,根据乐理以基准演唱作为基准,对标记速度进行折算,计算出各音符的相对基准演唱速度的时值数据;对于附点音符,则多增加附点前面音符所对应时值的一半;对于音符上面有上弧线标识的连音线时,若连音线作用在同一个音符上,解析时不产生新音符,把前后所连的音符的时值相加,作为该音符的时值。
9.如权利要求7所述的系统,其特征在于,所述音符模型参数库包含分别为处于低八度、中八度、高八度区段中的各个标准音符以及一个静音所建立的统计模型,每一个模型基于高斯混合建模技术进行建模,采用多个单高斯分布进行混合,通过如下公式对音符模型的概率密度函数G(x)进行加权混合计算:
其中,M为包含的单一高斯分布的个数,αj为各个单一高斯分布的概率密度函数的混合权重,Pj(x,μj,Σj)的定义如下:
其中,T表示矩阵的转置,x为待估算的哼唱语音帧的音高特征列向量,μ为模型期望,Σ为模型方差,μ、Σ均由若干训练样本语音帧的音高特征列向量cj得出, 为均值向量, 是协方差矩阵,n为训练样本的个数。
10.如权利要求9所述的系统,其特征在于,所述系统还包括一个音符混合高斯模型训练单元,所述音符混合高斯模型训练单元,包括:
音符信息标注器,用于将训练语料库中采集的每一个哼唱样本按照其对应的歌谱标注好音符名称,保存到标注文件中;
哼唱样本音高特征提取器,用于从哼唱语料中,逐语音帧提取音高,并根据标注文件的定义按照音符名称进行分类保存;
先验知识导入器,用于进行音符模型高斯混合概率密度函数计算参数的初始化,对于每一个音符模型,将该音符的国际标准音高作为所述计算参数的初始期望均值;
音符模型参数训练器,用于在音符模型计算参数初始化的基础上,利用从哼唱语料中提取出来的该音符的音高作为观察样本值,利用期望最大化算法进行最大似然估计,确定音符模型高斯混合概率密度函数的各个计算参数,然后依次根据上述方式训练得到的每一个音符模型,将哼唱语料中提取出来的所有音高观察样本值划分成两类,一类是属于该音符模型的接受域,另一类是不属于该音符模型的拒绝域,利用后验概率和似然比分析的方法对所述接受域和拒绝域所包含的观察样本值进行处理以确定该音符模型的拒识阈值。
11.如权利要求7所述的系统,其特征在于,所述旋律识别器包括:
哼唱语音结构表示模,用于利用得到的哼唱语音的<音符,时长>结构序列,提取并生成出哼唱语音的音符前向间距序列DS[m]和音符时长序列TS[m],其中m为所述哼唱语音所包含的<音符,时长>二元结构的个数,所述音符前向间距是指关键旋律或哼唱语音所对应的音符序列中当前音符与下一相邻的音符之间的位置序号之差;
关键旋律结构表示模块,用于在歌曲及旋律乐素结构库中依次选取出某一关键旋律的乐素结构,从中提取并生成出所述关键旋律的音符前向间距序列DB[n]和音符时值序列TB[n],其中n为所述关键旋律所包含的<音符,时值>二元结构的个数;
音符子序列搜索模块,用于在哼唱语音的音符前向间距序列DS[m]和当前关键旋律的音符前向间距序列DB[n]之间搜索出最长公共音符子序列LCNS以及最长相似音符子序列LSNS,得出最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS在DB[n]中的起始位置LC_DB、最长公共音符子序列LCNS在DS[m]中的起始位置LC_DS、最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS在DB[n]中的起始位置LS_DB、最长相似音符子序列LSNS在DS[m]中的起始位置LS_Ds,并计算哼唱语音对当前关键旋律的最长公共音符子序列的音符相似度Lc/n和最长相似音符子序列的音符相似度Ls/n;
最长公共音符子序列匹配度计算模块,用于对得到的最长公共音符子序列LCNS、长度Lc、起始位置LC_DB和LC_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TcBK,按照DTW动态规划方法,计算出最长公共音符子序列LCNS所对应的TcSK和TcBK序列区间的匹配度DTWc;
最长相似音符子序列匹配度计算模块,用于对得到的最长相似音符子序列LSNS、长度Ls、起始位置LS_DB和LS_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TSBK,按照DTW动态规划方法,计算出最长公共音符子序列LSNS所对应的TSSK和TSBK序列区间的匹配度DTWs;
综合相似度计算模块,用于根据得出的最长公共音符子序列的音符相似度Lc/n、最长相似音符子序列的音符相似度Ls/n、哼唱语音与当前关键旋律之间在最长公共音符子序列上的时间匹配度DTWc、哼唱语音与当前关键旋律之间在最长相似音符子序列上的时间匹配度DTWs,加权运算得到哼唱语音对当前关键旋律的综合相似度TScore,计算公式如下:
TScore=w1*Lc/n+w2*Ls/n+w3/DTWc+w4/DTWs
其中,w1,w2,w3,w4分别为预设的各项的权重系数;
结果输出模块,用于在上述各个模块将歌曲及旋律乐素结构库中所有关键旋律都处理完毕,最后得到哼唱语音对所有关键旋律的综合相似度,并进行综合相似度排序,从中选取前若干名相似度高的作为旋律识别的结果进行输出;
所述音符子序列搜索模块进一步根据如下方式搜索出最长公共音符子序列LCNS和最长相似音符子序列LSNS:建立搜索矩阵MatrixC[mxn]和MatrixS[mxn],初始化LCNS、LSNS的长度Lc、Ls以及起点位置均为0;设定步号i从1到m,步长为1,从DS[1]到DS[m]逐序列项与DB[n]中每项依次比较分析;设定步号j从1到n,步长为1,从DB[1]到DB[n]逐序列项与DS[i]进行比对处理,记录下中间结果;按照以下方法迭代生成公共音符子序列:当DS[i]=DB[j]时,LCNS[i,j]=LCNS[i-1,j-1]+DS[i],形成新的极长公共子序列,保存在搜索矩阵MatrixC中,更新极长公共子序列的长度Lc和分别在DS[m]及DB[n]中的起点位置;把音高紧邻,即音符之间的序位距离为1或-1的音符,作为音高相似音符,按照以下方法迭代生成相似音符子序列:当DS[i]=DB[j]或DS[i]=DB[j]+1或DS[i]=DB[j]-1时,LSNS[i,j]=LSNS[i-1,j-1]+DS[i],形成新的极长相似子序列,保存在搜索矩阵MatrixS中,更新极长相似子序列的长度Ls和分别在DS[m]及DB[n]中的起点位置;重复上述过程,直到步号j进行到第n步为止;重复上述过程,直到步号i进行到第m步为止;动态迭代完毕后,得到最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS对应于旋律模板DB[n]的起始位置,同时得到最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS对应于旋律模板DB[n]的起始位置;
所述旋律识别器还包括一个音符前向间距序列生成单元,所述音符前向间距序列生成单元包括:
音符标序模块,用于预先在从低八度到高八度的区间上按音高从低到高的顺序对音乐中全部音符依序排列,记录下各个音符的位置序号;
关键旋律解析模块,用于对于歌曲及旋律乐素结构库中每一关键旋律的旋律乐素结构,从其<音符,时值>序列中依序逐一从中取出一个音符,计算该音符与其下一个邻音音符之间的位置序号之差,所述<音符,时值>序列处理完毕后,得出该关键旋律的音符前向间距序列;
哼唱语音解析模块,用于对于哼唱语音,根据识别出来的<音符,时长>序列,依序逐一从中取出一个音符,计算该音符与其下一个邻音音符之间的位置序号之差,所述<音符,时长>序列处理完毕后,得出该哼唱语音的音符前向间距序列。
12.如权利要求7所述的系统,其特征在于,所述音符匹配识别器用于根据预先建立的音符模型参数库,对提取的当前语音帧的音高分别代入所述音符模型参数库中各个音符模型的高斯混合概率密度函数计算出所述语音帧属于各个音符模型的概率值;将当前语音帧与所述概率值中最大者所对应的音符模型进行匹配,当该最大概率值低于相应音符模型的拒识阈值时进行拒识处理;若匹配结果为当前语音帧与前一语音帧分属不同的音符模型时,记录下当前语音帧的帧号。

说明书全文

一种基于音符建模的哼唱式音乐检索方法及系统

技术领域

[0001] 本发明属于计算机应用技术领域,尤其涉及一种基于音符建模的哼唱式音乐检索方法及系统,具体对音乐旋律中包含的音符进行建模、通过模型训练和解码识别两个关键过程实现哼唱式旋律识别。

背景技术

[0002] 近年来,计算和智能嵌入式软硬件技术的迅速兴起进一步推动了数字娱乐应用的发展,音乐娱乐服务日益走近人们的生活。一方面,利用云计算平台上的虚拟化、云存储等技术可以建立歌曲库,部署音乐服务系统,在互联网和移动网络上提供高性能的音乐搜索和下载服务。另一方面,ARM、OMAP、PXA、Adreno等嵌入式微处理器的快速发展以及Android、iOS、Windows phone8等嵌入式操作系统的推出,催生了智能手机、平板电脑、智能电视、智能机顶盒等智能终端设备的发展,促进了借助智能终端开展的音乐娱乐应用。
[0003] 互联网及智能终端设备上的音乐服务应用中,以哼唱识别为代表的音乐内容检索技术是一个关键,传统的基于文本或按照分类目录进行检索的方式已经不能满足应用的需求。基于哼唱的音乐检索技术是一种最直接、最自然的人机交互方式,得到人们的重视,国内相关专利申请逐年增加。通过查新以及对相关技术的持续跟踪,可以在总体上将国内外代表性研究方法划分为两类:一类是特征模板匹配法。直接利用歌曲旋律的声学特征参数及乐理特征,建立起各旋律的特征模板(或者特征串),形成模板库,识别时利用从哼唱语音中提取的声学特征参数或音符串与各个特征模板/特征串进行匹配计算,得出判别结果。另一类是声学统计建模法。事先对歌曲旋律进行统计建模,采集代表性的哼唱语料训练出各旋律的声学模型,形成模型参数库,识别时逐计算用户哼唱语音对各个旋律声学模型的最大累积概率,取最优结果。
[0004] 实际应用中,采用特征模板匹配法的方式较多,利用从哼唱语音中提取的声学特征参数,进而求出音高轮廓或者进行音符切分,然后与特征模板进行匹配,相关技术有线性对齐旋律匹配、DTW(Dynamic Time Warping,动态时间归整)等方法。以DTW为代表的模板匹配动态规划算法能够有效的解决哼唱歌曲与标准模板长度不一样而带来的匹配问题,工程实施也较为简便,然而不足之处在于:DTW等算法需使用不包含错误的标准歌曲模板,这些模板的参数事先通过MIDI原始音乐或专业平的歌曲语料来提取,识别时与人们哼唱的语音进行匹配。这样,对于唱歌水平高的人识别率会高,对于大多数唱歌水平一般的人来说识别率不佳,适应性受到限制。因为大多数业余听歌者在歌唱时会出现节奏不准、多音漏音和跑调的现象,与标准歌曲模板匹配偏差较大,造成系统识别率下降明显,不利于向广大用户推广使用。另外,DTW等模板匹配法方法的计算量较大,不利于处理大规模歌曲库的识别,其中某些方法需要对哼唱语音先做音符切分,不仅导致计算量增大,同时音符切分难以精确,会导致误差传递最终引起识别率下降。
[0005] 为解决DTW等算法采用与标准模板进行匹配,导致适应性能低、不利于大多数人使用、不利于市场推广这一固有问题,人们开始利用声学统计建模的方法研究哼唱识别问题。统计建模法目前主要是利用HMM(Hidden Markov Model,隐尔可夫模型)进行歌曲旋律的声学建模,HMM建模及识别技术在语音识别中取得了巨大成功,被借鉴过来应用于哼唱检索,以减少用户歌唱水平不高对识别率的影响。国际上代表性的解决方案是Shifrin等人在研究和实验中构建了一种有跳转的HMM模型来表示歌曲旋律,把不同类的音符作为HMM的不同状态,根据歌谱进行状态跳转,匹配过程中通过计算阈值来激活相应的状态,从而进行旋律匹配查询。然而这种HMM模型的拓扑结构较为复杂,不同的旋律所建立的模型不同一,对识别算法的复杂度和运行性能造成影响,不利于处理大规模歌曲库的识别。国内代表性的解决方案见“一种基于隐马尔可夫模型的哼唱式旋律识别方法”(中国发明专利,授权号:
ZL200910301120.4),采用一种便于计算的HMM拓扑结构为歌曲库中的旋律建立声学模型,以逐帧计算哼唱语音对旋律模型累积概率为特征进行识别解码,回避了音符切分过程,检索时间短、效率高,有效地解决业余歌唱者哼唱不准对检索准确率产生的影响,取得了令人满意的结果。有所不足的是,这种方法对于新出的歌曲需要新增旋律模型并采样训练,工程上需要维护模型参数库,对网络上的音乐检索服务尚且容易实施,但在嵌入式系统中的应用就受到很大限制。
[0006] HMM旋律建模方法的特色之一是对使用者的歌唱水平没有要求,容易为大多数人所使用,但当歌曲集中新增歌曲后需要采集通过样本训练新建对应的旋律模型,才能保持较好的识别效果,带来了维护模型参数库的工作量,会给应用工作带来不便。

发明内容

[0007] 鉴于上述原因,本发明所要解决的技术问题在于提供一种基于音符建模的哼唱式音乐检索方法,该方法实用性强、识别率高且免于维护歌曲库。
[0008] 本发明是这样实现的,一种基于音符建模的哼唱式音乐检索方法,包括下述步骤:
[0009] 步骤A,于用户的哼唱语音中,提取各语音帧的音高,并保存为哼唱语音音高序列;
[0010] 步骤B,根据预先建立的音符模型参数库,利用步骤A提取的音高分别计算出当前语音帧属于所述音符模型参数库中各个音符模型的概率值,根据计算的概率值以及音符模型参数库对当前语音帧进行音符模型匹配识别,若当前语音帧与其前一相邻语音帧分属不同的音符模型时,记录下当前语音帧的帧号;
[0011] 步骤C,重复步骤A到步骤B,当哼唱语音依序逐语音帧全部处理完毕后,得出所述哼唱语音所对应的音符模型序列以及序列中各个音符模型的起始语音帧号,依次计算出每个音符模型所持续的语音帧数,对应为该音符模型持续的时长;
[0012] 步骤D,结合步骤A中得到的哼唱语音音高序列对步骤C中得到的音符模型及其时长序列进行修正处理,最终确定出所述哼唱语音所包含的音符模型序列及其相对应的时长序列,并表示成<音符,时长>的二元组序列形式;
[0013] 步骤E,对步骤D中得到的<音符,时长>二元组序列在预先建立的歌曲及旋律乐素结构库中进行匹配和相似度计算,按照相似度值由高到低进行排序,选取前若干名相似度最高的旋律作为最终的识别结果进行输出。
[0014] 本发明还提供了一种基于音符建模的哼唱式音乐检索系统,包括:
[0015] 哼唱输入采集器,用于采集用户的哼唱语音;
[0016] 音高特征提取器,用于从用户的哼唱语音中,逐语音帧提取音高,并保存成哼唱语音音高序列;
[0017] 音符匹配识别器,用于根据预先建立的音符模型参数库,利用提取的音高分别计算出当前语音帧属于所述音符模型参数库中各个音符模型的概率值,根据计算的概率值以及音符模型参数库对当前语音帧进行音符模型匹配识别,若当前语音帧与其前一相邻语音帧分属不同的音符模型时,记录下当前语音帧的帧号;重复上述过程直到哼唱语音依序逐语音帧全部处理完毕,得出所述哼唱语音所对应的音符模型序列以及序列中各个音符模型的起始语音帧号,依次计算出每个音符模型所持续的语音帧数,对应为该音符模型持续的时长;结合得到的哼唱语音音高序列对得到的音符模型及其时长序列进行修正处理,最终确定出所述哼唱语音所包含的音符模型序列及其相对应的时长序列,并表示成<音符,时长>的二元组序列形式;
[0018] 旋律识别器,用于对得到的<音符,时长>二元组序列在预先建立的歌曲及旋律乐素结构库中进行匹配和相似度计算,按照相似度值由高到低进行排序,选取前若干名相似度最高的旋律作为最终的识别结果进行输出。
[0019] 本发明针对HMM旋律建模方法在实际应用中体现出的不足,采用对标准音符进行建模和模型参数训练的方式,识别过程利用从用户哼唱语音中解析出来的音符及时长序列与歌曲集中标准的音符及时值序列进行匹配计算,得出最优结果。当歌曲库新增歌曲时,本发明不需要进行模型参数库的增加及修改工作,具有产业化前景。附图说明
[0020] 图1是本发明提供的基于音符建模的哼唱式音乐检索方法的实现流程图
[0021] 图2是图1所示检索方法中旋律乐素结构相似度评判方法的流程图;
[0022] 图3是本发明提供的基于音符建模的哼唱式音乐检索系统的结构原理图;
[0023] 图4是图3中旋律识别器的结构原理图;
[0024] 图5是本发明提供的音符前向间距序列生成单元的结构原理图。

具体实施方式

[0025] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0026] 本发明针对HMM旋律建模方法在实际应用中体现出的不足,本发明对标准音符进行建模(如采用混合高斯模型),识别过程利用从用户哼唱语音中解码出来的音符及时长序列与歌曲集中标准的音符及时值序列进行匹配计算,得出最优结果。建模过程和具体的歌曲无关,新增歌曲时,不需要进行模型参数库的增加及修改工作,具有产业化前景。
[0027] 图1示出了本发明提供的基于音符建模的哼唱式音乐检索方法的实现流程,详述如下。
[0028] 在步骤A中,于用户的哼唱语音中,提取各语音帧的音高,并保存到哼唱语音音高序列中。
[0029] 本发明中,采用一种高精度、抗干扰的方法提取哼唱语音帧音高,具体步骤是:首先针对哼唱语音数据在数字信号经典功率谱估计方法的基础上进行自相关运算,快速提取若干基音周期候选值。然后针对这些候选值实施多重后处理方法,具体为:先利用通过预设的峰值阈参数对候选值进行初步的筛选,接着利用通过预设的一次均值参数将语音分为不同的音高段,再使用通过预设的二次均值参数为每个音高段确定合适的频率范围,最后提取出语音的基音周期。上述峰值阈参数、一次均值参数、二次均值参数均可以通过实验预先确定。
[0030] 在步骤B中,根据预先建立的音符模型参数库,利用步骤A提取的音高分别计算出当前语音帧属于所述音符模型参数库中各个音符模型的概率值,进行音符模型匹配识别,若当前语音帧与其前一相邻语音帧分属不同的音符模型时,记录下当前语音帧的帧号。
[0031] 本发明中,根据歌谱均由处于不同八度区间的CDEFGAB七个基本音符组成这一乐理常识,并考虑到的大众歌曲的特点和人们的发音规律,主要对处于低八度、中八度、高八度这一区段的各个音符进行建模。作为本发明的一个实施例,对国际标准中的1 1 1 1 1 1 2 2 2 2 2 2 2
CDEFGABCD1E FGABCDE FGAB ,也就是简谱中123456712345671234567这21个音符进
行建模,还增加一个静音模型,用于休止音符以及表示旋律段的开头和结束。针对这些音符模型,基于高斯混合模型技术进行建模,即采用多个单高斯分布进行混合,通过如下公式对音符音高模型的概率密度输出函数G(x)进行加权混合计算:
[0032]
[0033] 其中,M为包含的单高斯分布的个数,αj为各个单高斯分布的概率密度函数的混合权重,μ为均值向量,Σ是协方差矩阵,Ρj(x,μj,Σj)是单高斯分布的概率密度函数,其计算方法如下:
[0034]
[0035] 其中,T表示矩阵的转置,x为待估算的哼唱语音帧的音高特征列向量,μ为模型期望,Σ为模型方差,μ、Σ均由若干训练样本音符语音帧的音高特征列向量cj得出,为均值向量, 是协方差矩阵。
[0036] 对于音符模型,事先需要采集足够的哼唱样本作为训练语料,并按照歌谱对训练语料进行音符标注,采用音符的音高作为训练用的样本特征值。训练音符模型参数的具体过程是:
[0037] 首先,进行音符模型高斯混合概率密度输出函数计算参数的初始化,对于每一个音符模型,将该音符的国际标准音高看作先验知识,作为模型计算参数的初始期望均值,以便加快训练速度,稳定模型参数。
[0038] 然后,进行音符模型高斯混合概率密度输出函数计算参数的训练,对于每一个音符模型,在音符模型参数初始化的基础上,利用从哼唱语料中提取出来的该音符的音高值作为观察样本值,利用期望最大化算法进行最大似然估计,确定音符模型高斯混合概率密度输出函数的各个计算参数,即确定模型的期望、方差和混合权重等参数。核心过程就是通过迭代计算,不断更新权值αj、均值μj和方差矩阵Σj,满足 的要求,使期望值最大。
[0039] 最后,进行音符模型的拒识阈值参数的训练。依次对按照以上方式训练得到的每一个音符模型,将哼唱语料中提取出来的所有音高观察样本值划分成两类,一类是属于该音符模型的接受域,另一类是不属于该音符模型的拒绝域,利用后验概率和似然比分析的方法确定该音符模型的拒识阈值。
[0040] 在事先完成各音符音高模型参数训练的基础上,才可以实施步骤B中的哼唱语音帧匹配识别过程,具体方法是:首先,根据预先建立的音符模型参数库,对步骤A提取的当前语音帧的音高分别代入所述音符模型参数库中各个音符模型的混合概率密度输出函数计算出所述语音帧属于各个音符模型的概率值;然后,将当前语音帧与所述概率值中最大者所对应的音符模型进行匹配,当该最大概率值低于相应音符模型的拒识阈值时进行拒识处理;最后,若匹配结果为当前语音帧与前一语音帧分属不同的音符模型时,记录当前语音帧号。
[0041] 在步骤C中,重复步骤A到步骤B,当哼唱语音依序逐语音帧全部处理完毕后,得出所述哼唱语音所对应的音符模型序列以及序列中各个音符模型的起始语音帧号,依次计算出每个音符模型所持续的语音帧数,对应为该音符模型持续的时长。
[0042] 在步骤D中,结合步骤A中得到的哼唱语音音高序列对步骤C中得到的音符模型及其时长序列进行修正处理,最终确定出所述哼唱语音所包含的音符模型序列及其相对应的时长序列,并表示成<音符,时长>的二元组序列形式。
[0043] 在步骤E中,对步骤D中得到的<音符,时长>二元组序列在预先建立的歌曲及旋律乐素结构库中进行匹配和相似度计算,按照相似度值由高到低进行排序,选取前若干名相似度最高的旋律作为最终的识别结果进行输出。
[0044] 本发明中,歌曲及旋律乐素结构库包含有歌曲信息、歌曲的标准旋律模板以及歌曲旋律各个乐素之间的音符前向间距序列,所述歌曲旋律各个乐素之间的音符前向间距序列用于表征歌曲旋律中各音符与其前面相邻音符之间的乐理偏移距离。
[0045] 本发明中,将供检索的全部歌曲进行有序组织,特别是根据歌谱将歌曲旋律表示成一种乐素间距序列与时值序列结构,形成歌曲及旋律乐素结构库。库中歌曲按照各自唯一的索引号进行分类和组织,歌曲与其旋律乐素间距序列结构通过索引号进行关联。本发明的歌曲及旋律乐素结构库包括歌曲名称、演唱者、放音文件存储位置等歌曲信息以及歌曲所包含的几段关键旋律的乐素结构。歌曲由音符组成,每个音符有自己的音符名称和演唱时长,本发明将歌谱中某音符所固有的<音符名称,时值>关系定义为一个乐素单元。本发明针对某一旋律,由其对应的歌谱或配套的MIDI文件解析成一组<音符,时值>序列:音符解析过程考虑了调号、连音、附点音符、休止音符等乐理常识。调号是变音的标识,对于有调号标识的歌谱解析时需要将各个音符按照指定的调号进行平移。如,1=F就表示简谱中的音符“1”要解析成标准音高Fa,音符“2”则表示Sol,以此类推。用上弧线标记在音符的上面的连音线,当作用在同一个音符上,解析时不产生新音符,只扩展该音符的时值,对于连接两个以上不同音符的连音线,解析时则不考虑它的影响。附点音符,表示增加前面音符时值的一半。歌谱中的休止符解析成静音,当做一个特殊的音符,仍采用该休止符具有的时值。识别过程中可以分别使用其中的音符名称字符串序列或相对应的音符时值序列。时值解析过程考虑旋律的演唱速度,默认是按照每秒60拍的速度进行转化,即演唱一拍的四分音符其时值表示为1数据单位,其余节拍的音符类推出其时值数据值。对于有特定速度标记的歌谱,各音符的时值数据要进行折算。
[0046] 本发明先从旋律的<音符,时值>序列中生成乐素间距序列,方法是从该组<音符,时值>序列中依次取出各个音符,计算当前音符与其相邻音符间的乐理偏移距离,形成一个间距序列。供人们演唱的歌曲一般由CDEFGABC1D1E1F1G1A1B1C2D2E2F2G2A2B2这21个音符组成,按照音高由低到高的排列,每个音符都有自己的位置序号,本发明中的音符间的乐理偏移距离就是音符各自位置序号之差。例如,对如下旋律对应的歌谱:
[0047]
[0048] 首先,按照乐理常识将它解析成这样一个二元组序列。然后,从中分别提取出音符名称序列和对应的音符时值序列<1,0.5,0.5,1,0.5,0.5,1.5,0.5,2,1.5,0.5,1,0.5,0.5,1.5,0.5,2>。对应其中的音符名称序列,依次计算各音符与前面相邻音符之间的位置序号之差,旋律最后一个音符不进行位置序号计算,得出音符前向间距序列<0,0,0,
3,-1,-1,2,-1,-2,0,0,3,-1,-1,2,-1>。
[0049] 本发明采用旋律乐素结构相似度综合评判的方法计算哼唱语音与歌曲集中各旋律的相似度,按照相似度排名取前若干名最优者作为识别结果。该方法的关键是针对音符前向间距序列进行哼唱语音与库中标准旋律模板进行最长公共音符子序列以及最长相似音符子序列搜索,然后分别对搜索出的最长公共音符子序列和最长相似音符子序列在哼唱语音与标准旋律的公共片段之间进行采用动态时间归整DTW算法计算它们之间在各个音符哼唱时长方面的相似度。具体如图2所示,具体分为以下步骤:
[0050] 步骤E1,利用步骤D中得到的哼唱语音的<音符,时长>结构序列,提取并生成出哼唱语音的音符前向间距序列DS[m]和音符时长序列TS[m],其中m为所述哼唱语音所包含的<音符,时长>二元结构的个数,所述音符前向间距是指关键旋律或哼唱语音所对应的音符序列中当前音符与下一相邻的音符之间的位置序号之差;
[0051] 步骤E2,在歌曲及旋律乐素结构库中依次选取出某一关键旋律的乐素结构,从中提取并生成出所述关键旋律的音符前向间距序列DB[n]和音符时值序列TB[n],其中n为所述关键旋律所包含的<音符,时值>二元结构的个数;
[0052] 步骤E3,在哼唱语音的音符前向间距序列DS[m]和当前关键旋律的音符前向间距序列DB[n]之间搜索出最长公共音符子序列LCNS以及最长相似音符子序列LSNS,得出最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS在DB[n]中的起始位置LC_DB、最长公共音符子序列LCNS在DS[m]中的起始位置LC_DS、最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS在DB[n]中的起始位置LS_DB、最长相似音符子序列LSNS在DS[m]中的起始位置LS_Ds,并计算哼唱语音对当前关键旋律的最长公共音符子序列的音符相似度Lc/n和最长相似音符子序列的音符相似度Ls/n;
[0053] LCNS的搜索采用动态迭代的方法,开辟一个搜索矩阵MatrixC[m x n],DS[m]中的每一数据项逐一与DB[n]中的每一数据项进行比对分析。每次迭代操作中,若DS[m]中的某项数据与DB[n]中的某项数据相等时,则形成新的极长公共子序列,把它保存在搜索矩阵MatrixC中,更新极长公共子序列的长度和分别在DS[m]及DB[n]中的起点位置信息。
[0054] 最长相似音符子序列LSNS的搜索方法与LSNS搜索流程类似,在同一个动态迭代过程中同步进行,需要另行开辟一个搜索矩阵MatrixS[m x n]。把音高紧邻的音符作为音高相似音符,即音符间的位置距离为1或-1。在音符前向间距序列DS[m]和DB[n]之间的搜索中,每次当前操作中,若DS[m]中的某项数据与DB[n]中的某项数据相等,或者两者数据值偏差为±1时,就认为能形成新的极长相似子序列,把它保存在搜索矩阵MatrixS中,更新极长相似子序列的长度和分别在DS[m]及DB[n]中的起点位置信息。
[0055] 动态迭代完毕后,得到最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS对应于旋律模板DB[n]的起始位置、最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS对应于旋律模板DB[n]的起始位置。分别依据LSNS和LSNS搜索结果,计算出哼唱语音对该旋律模板DB[n]的两个相似度Lc/n和Ls/n。
[0056] 步骤E4,对于步骤E3中得到的最长公共音符子序列LCNS、长度Lc、起始位置LC_DB和LC_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TcBK,按照DTW动态规划方法,计算出最长公共音符子序列LCNS所对应的TcSK和TcBK序列区间的匹配度DTWc;
[0057] 本发明中,根据搜索出的LCNS序列的起始点和长度,在哼唱语音时值序列和该旋律模板的时值序列上定位出对应的时值序列区间,然后,进行DTW计算,得到这两个序列区间的DTW距离DTWc。
[0058] 步骤E5,对于步骤E3中得到的最长相似音符子序列LSNS、长度Ls、起始位置LS_DB和LS_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TSBK,按照DTW动态规划方法,计算出最长公共音符子序列LSNS所对应的TSSK和TSBK序列区间的匹配度DTWs;
[0059] 本发明中,根据搜索出的LSNS序列的起始点和长度,在哼唱语音时值序列和该旋律模板的时值序列上定位出对应的时值序列区间,然后,进行DTW计算,得到这两个序列区间的DTW距离DTWs。
[0060] 步骤E6,根据步骤E3至步骤E5得出的最长公共音符子序列的音符相似度Lc/n、最长相似音符子序列的音符相似度Ls/n、哼唱语音与当前关键旋律之间在最长公共音符子序列上的时间匹配度DTWc、哼唱语音与当前关键旋律之间在最长相似音符子序列上的时间匹配度DTWs,加权运算得到哼唱语音对当前关键旋律的综合相似度TScore,计算公式如下:
[0061] TScore=w1*Lc/n+w2*Ls/n+w3/DTWc+w4/DTWs   (3)
[0062] 其中,w1,w2,w3,w4分别为预设的各项的权重系数。
[0063] 本发明中,针对以上步骤得到的结果进行加权处理,得出哼唱语音对该旋律模板的相似度综合得分,公式(3)中w1,w2,w3,w4为预设的各项的权重系数,它们的数值均是通过实验确定。
[0064] 步骤E7,重复步骤E2至E6,直到歌曲及旋律乐素结构库中所有关键旋律都处理完毕,最后得到哼唱语音对所有关键旋律的综合相似度,并进行综合相似度排序,从中选取前若干名相似度高的作为旋律识别的结果进行输出;
[0065] 在所述步骤E3中,根据如下步骤搜索出最长公共音符子序列LCNS和最长相似音符子序列LSNS:
[0066] 步骤E31,建立搜索矩阵MatrixC[m x n]和MatrixS[m x n],初始化LCNS、LSNS的长度Lc、Ls以及起点位置均为0;
[0067] 步骤E32,设定步号i从1到m,步长为1,从DS[1]到DS[m]逐序列项与DB[n]中每项依次比较分析;
[0068] 步骤E33,设定步号j从1到n,步长为1,从DB[1]到DB[n]逐序列项与DS[i]进行比对处理,记录下中间结果;
[0069] 步骤E34,按照以下方法迭代生成公共音符子序列:
[0070] 当DS[i]=DB[j]时,LCNS[i,j]=LCNS[i-1,j-1]+DS[i],形成新的极长公共子序列,保存在搜索矩阵MatrixC中,更新极长公共子序列的长度Lc和分别在DS[m]及DB[n]中的起点位置;
[0071] 步骤E35,把音高紧邻,即音符之间的序位距离为1或-1的音符,作为音高相似音符,按照以下方法迭代生成相似音符子序列:
[0072] 当DS[i]=DB[j]或DS[i]=DB[j]+1或DS[i]=DB[j]-1时,LSNS[i,j]=LSNS[i-1,j-1]+DS[i],形成新的极长相似子序列,保存在搜索矩阵MatrixS中,更新极长相似子序列的长度Ls和分别在DS[m]及DB[n]中的起点位置;
[0073] 步骤E36,重复步骤E33到步骤E35,直到步号j进行到第n步为止;
[0074] 步骤E37,重复步骤E32到步骤E35,直到步号i进行到第m步为止;
[0075] 步骤E38,动态迭代完毕后,得到最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS对应于旋律模板DB[n]的起始位置,同时得到最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS对应于旋律模板DB[n]的起始位置。
[0076] 本领域普通技术人员可以理解实现上述各实施例提供的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该存储介质可以为ROM/RAM、磁盘、光盘等。
[0077] 图3示出了本发明提供的基于音符建模的哼唱式音乐检索系统的结构原理,为了便于描述,仅示出了与本发明相关的部分。
[0078] 参照图3,该系统至少包括哼唱输入采集器1、音高特征提取器2、音符匹配识别器3、旋律识别器4、音符模型参数库5。其中,哼唱输入采集器1用于采集用户的哼唱语音,音高特征提取器2从用户的哼唱语音中逐语音帧提取音高,然后音符匹配识别器3根据音符模型参数库,对所述音高特征提取器2提取的音高逐语音帧进行匹配识别处理,得到所述哼唱语音所包含的音符模型序列以及各个音符模型持续的时长信息,最后,旋律识别器4结合所述音高特征提取器2提取的音高特征,对所述音符匹配识别器3得到的音符序列以及各个音符模型持续的时长信息在歌曲及旋律乐素结构库中进行匹配运算,选取相似度符合要求的旋律作为最终的识别结果进行输出。如上文所述,本发明的歌曲及旋律乐素结构库包含歌曲索引、歌名、演唱者、类型、放音文件存储位置以及每首歌曲所包含的若干段关键旋律的旋律乐素结构,库中歌曲按照各自唯一的索引号进行分类和组织,歌曲与其对应的旋律乐素结构通过索引号进行关联,所述旋律乐素结构是指由在关键旋律中依次出现的每一个音符的音符名称和该音符的演唱时值构成的<音符,时值>单元结构依次形成的一个二元组序列,各旋律乐素结构通过歌谱或歌曲配套的MIDI文件解析得出,按照自身所包含的二元组单元结构的个数多少进行排序。
[0079] 进一步地,音高特征提取器2从用户的哼唱语音信息中提取语音帧的音高,采用的具体步骤是:首先针对哼唱语音数据在数字信号经典功率谱估计方法的基础上进行自相关运算,快速提取若干基音周期候选值。然后针对这些候选值实施多重后处理方法,具体为:先利用通过预设的峰值阈参数对候选值进行初步的筛选,接着利用通过预设的一次均值参数将语音分为不同的音高段,再使用通过预设的二次均值参数为每个音高段确定合适的频率范围,最后提取出语音的基音周期。上述峰值阈参数、一次均值参数、二次均值参数均可以通过实验预先确定。
[0080] 进一步地,音符模型参数库5包含分别为处于低八度、中八度、高八度区段中的CDEFGAB等各个标准音符以及一个静音所建立的统计模型,每一个模型基于高斯混合建模技术进行建模,采用多个单高斯分布进行混合,通过公式(1)和公式(2)对音符模型的概率密度函数G(x)进行加权混合计算。
[0081] 该系统还包括一音符混合高斯模型训练单元6,用于完成对每一个音符模型参数的训练,其全部工作内容是:事先采集若干哼唱语料并按照对应的歌谱进行音符标注,然后从哼唱语料中,逐语音帧提取音高,按照标注的音符名称进行分类保存,接下来启动音符模型参数的训练过程,具体是:首先,进行音符模型高斯混合概率密度函数计算参数的初始化,对于每一个音符模型,将该音符的国际标准音高作为所述计算参数的初始期望均值;然后,在音符模型计算参数初始化的基础上,利用从哼唱语料中提取出来的该音符的音高作为观察样本值,利用期望最大化算法进行最大似然估计,确定音符模型高斯混合概率密度函数的各个计算参数;最后,依次对按照上述方式训练得到的每一个音符模型,将哼唱语料中提取出来的所有音高观察样本值划分成两类,一类是属于该音符模型的接受域,另一类是不属于该音符模型的拒绝域,利用后验概率和似然比分析的方法确定该音符模型的拒识阈值。
[0082] 相应地,音符匹配识别器3用于根据预先建立的音符模型参数库,对音高特征提取器2提取的当前语音帧的音高分别代入所述音符模型参数库中各个音符模型的高斯混合概率密度函数计算出所述语音帧属于各个音符模型的概率值,将当前语音帧与所述概率值中最大者所对应的音符模型进行匹配,当该最大概率值低于相应音符模型的拒识阈值时进行拒识处理,若匹配结果为当前语音帧与前一语音帧分属不同的音符模型时,记录下当前语音帧的帧号。
[0083] 进一步地,如图4所示,旋律识别器4包括哼唱语音结构表示模41、关键旋律结构表示模块42、音符子序列搜索模块43、最长公共音符子序列匹配度计算模块44、最长相似音符子序列匹配度计算模块45、综合相似度计算模块46、结果输出模块47。其中,哼唱语音结构表示模块41,用于利用得到的哼唱语音的<音符,时长>结构序列,提取并生成出哼唱语音的音符前向间距序列DS[m]和音符时长序列TS[m],其中m为所述哼唱语音所包含的<音符,时长>二元结构的个数,所述音符前向间距是指关键旋律或哼唱语音所对应的音符序列中当前音符与下一相邻的音符之间的位置序号之差。
[0084] 关键旋律结构表示模块42,用于在歌曲及旋律乐素结构库中依次选取出某一关键旋律的乐素结构,从中提取并生成出所述关键旋律的音符前向间距序列DB[n]和音符时值序列TB[n],其中n为所述关键旋律所包含的<音符,时值>二元结构的个数。
[0085] 音符子序列搜索模块43,用于在哼唱语音的音符前向间距序列DS[m]和当前关键旋律的音符前向间距序列DB[n]之间搜索出最长公共音符子序列LCNS以及最长相似音符子序列LSNS,得出最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS在DB[n]中的起始位置LC_DB、最长公共音符子序列LCNS在DS[m]中的起始位置LC_DS、最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS在DB[n]中的起始位置LS_DB、最长相似音符子序列LSNS在DS[m]中的起始位置LS_Ds,并计算哼唱语音对当前关键旋律的最长公共音符子序列的音符相似度Lc/n和最长相似音符子序列的音符相似度Ls/n。
[0086] 最长公共音符子序列匹配度计算模块44,用于对得到的最长公共音符子序列LCNS、长度Lc、起始位置LC_DB和LC_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TcBK,按照DTW动态规划方法,计算出最长公共音符子序列LCNS所对应的TcSK和TcBK序列区间的匹配度DTWc。
[0087] 最长相似音符子序列匹配度计算模块45,用于对得到的最长相似音符子序列LSNS、长度Ls、起始位置LS_DB和LS_DS,在哼唱语音TS[m]中定位出相应的时长序列区间TSSK,在当前关键旋律TB[n]中定位出相应的时值序列区间TSBK,按照DTW动态规划方法,计算出最长公共音符子序列LSNS所对应的TSSK和TSBK序列区间的匹配度DTWs。
[0088] 综合相似度计算模块46,用于根据得出的最长公共音符子序列的音符相似度Lc/n、最长相似音符子序列的音符相似度Ls/n、哼唱语音与当前关键旋律之间在最长公共音符子序列上的时间匹配度DTWc、哼唱语音与当前关键旋律之间在最长相似音符子序列上的时间匹配度DTWs,加权运算得到哼唱语音对当前关键旋律的综合相似度TScore,计算公式使用公式(3)。
[0089] 结果输出模块47,用于在上述各个模块将歌曲及旋律乐素结构库中所有关键旋律都处理完毕,最后得到哼唱语音对所有关键旋律的综合相似度,并进行综合相似度排序,从中选取前若干名相似度高的作为旋律识别的结果进行输出。
[0090] 具体地,上述音符相似度计算模块43根据如下方式搜索出最长公共音符子序列LCNS和最长相似音符子序列LSNS:建立搜索矩阵MatrixC[m x n]和MatrixS[m x n],初始化LCNS、LSNS的长度Lc、Ls以及起点位置均为0;设定步号i从1到m,步长为1,从DS[1]到DS[m]逐序列项与DB[n]中每项依次比较分析;设定步号j从1到n,步长为1,从DB[1]到DB[n]逐序列项与DS[i]进行比对处理,记录下中间结果;按照以下方法迭代生成公共音符子序列:当DS[i]=DB[j]时,LCNS[i,j]=LCNS[i-1,j-1]+DS[i],形成新的极长公共子序列,保存在搜索矩阵MatrixC中,更新极长公共子序列的长度Lc和分别在DS[m]及DB[n]中的起点位置;把音高紧邻,即音符之间的序位距离为1或-1的音符,作为音高相似音符,按照以下方法迭代生成相似音符子序列:当DS[i]=DB[j]或DS[i]=DB[j]+1或DS[i]=DB[j]-1时,LSNS[i,j]=LSNS[i-1,j-1]+DS[i],形成新的极长相似子序列,保存在搜索矩阵MatrixS中,更新极长相似子序列的长度Ls和分别在DS[m]及DB[n]中的起点位置;重复上述过程,直到步号j进行到第n步为止;重复上述过程,直到步号i进行到第m步为止;动态迭代完毕后,得到最长公共音符子序列LCNS的长度Lc、最长公共音符子序列LCNS对应于旋律模板DB[n]的起始位置,同时得到最长相似音符子序列LSNS的长度Ls、最长相似音符子序列LSNS对应于旋律模板DB[n]的起始位置。
[0091] 进一步地,如图5所示,旋律识别器4还包括一供哼唱语音结构表示模块41及关键旋律结构表示模块42调用的音符前向间距序列生成单元400,用于从库中关键旋律的<音符,时值>结构序列以及哼唱语音中识别出来的<音符,时长>结构序列中提取出音符前向间距序列,方法是从这些结构序列中依次取出各个音符,计算每个音符与其前面相邻音符之间的位置序号之差,从而生成相对应的音符前向间距序列。具体又包括音符标序模块401、关键旋律解析模块402和哼唱语音解析模块403,音符标序模块401用于预先在从低八度到高八度的区间上按音高从低到高的顺序对音乐中全部音符依序排列,记录下各个音符的位置序号。关键旋律解析模块402用于从歌曲及旋律乐素结构库中关键旋律的旋律乐素结构的<音符,时值>序列中依序逐一从中取出一个音符,计算该音符与其下一个邻音音符之间的位置序号之差,最后得出该关键旋律的音符前向间距序列。哼唱语音解析模块403用于对在音符匹配识别器3中识别出来的哼唱语音的<音符,时长>序列,依序逐一从中取出一个音符,计算该音符与其下一个邻音音符之间的位置序号之差,最后得出该哼唱语音的音符前向间距序列。
[0092] 综上所述,本发明提出的基于哼唱识别的音乐检索技术不仅可以应用在Internet网络上歌曲搜索服务、3G以及WiMax等移动通信网络中彩铃、音乐搜索服务等热点领域,解决目前基于文本进行音乐搜索的许多不便之处,具有广阔的市场前景。可以应用在有线电视网络中,嵌入到智能机顶盒或数字电视机中,提高音乐搜索及播放功能。还可以应用于卡啦OK点歌系统或设备中,解决输入功能简单、歌曲搜索方式落后等问题。也可以作为歌唱评价技术,设计音乐教学与培训产品。还可以应用于教育部、数字化图书馆、多媒体数据中心等领域,提供一个便捷的检索音频资源的新手段,具有良好的社会效益。
[0093] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈