[发明专利]一种基于最长匹配子序列算法的哼唱计算机音乐检索方法有效
申请号: | 201110382159.0 | 申请日: | 2011-11-25 |
公开(公告)号: | CN102521281A | 公开(公告)日: | 2012-06-27 |
发明(设计)人: | 王醒策;陈卓然;周明全;武仲科 | 申请(专利权)人: | 北京师范大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G10L15/08;G10L15/02 |
代理公司: | 北京中海智圣知识产权代理有限公司 11282 | 代理人: | 曾永珠 |
地址: | 100875 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 最长 配子 序列 算法 哼唱 计算机 音乐 检索 方法 | ||
1.一种基于最长匹配子序列算法的哼唱计算机音乐检索方法,其特征在于,包括以下步骤:
(1)基音频率序列提取及处理;
1)对输入的WAV波形文件应用RAPT算法进行基音频率提取,从而得到基音频率序列;
2)将原始的基音频率序列将经过高通滤波器和低通滤波器处理,去除毛刺和噪声点,平滑基频曲线,人类的音域宽度范围一般在E2(82Hz)~C6(1047Hz)之间,根据人类自然发声范围,将高通滤波的阈值设置为80Hz,低通滤波的阈值设置为1100Hz,用以除去处在高低阈值之外的基频值;
3)用线性平滑处理对基音频率序列进行线性滤波处理,去除基音频率序列中的噪声点并且对基音频率序列的曲线轮廓进一步平滑;
4)将所得到的基音频率序列,通过中值滤波去除噪声点,有效地去除了基音频率序列中的噪声点,且完好地保留基音频率序列中连续曲线之间的阶跃变化;
(2)音乐特征表达;
1)基音频率曲线的特征表达;
以半音作为单位,以相邻两个音之间的音程所构成的序列作为旋律特征。包含n个自然音符的旋律片断,可被表达为n-1个实数构成的音程序列,以量化的方式表达旋律特征,不同旋律的音乐特征具有区分度,为后续的相似度计算提供有效的结果;对整体音高整体偏移不敏感,允许用户在任意调式中哼唱,相同的旋律特征仍能被提取;具有良好的稳定性,对用户通过哼唱输入的音频信息,音程计算定义如公式(1)所示:
根据以上定义,可将音高频率序列Fx=(freq1,freq2,freq3,...,freqn)映射到音程序列Pi=(pitch_interval1,pitch_interval2,pitch_interval3,...,pitch_intervaln-1);
对于音乐特征数据库中存储的MIDI文件,需要采用同样的旋律特征表达方式,使得从用户输入端和从数据库端提取的旋律特征具有相同的格式,对MIDI文件,音程计算定义如公式(2)所示,其中MIDI_noten+1和MIDI_noten代表MIDI文件中的音高值:
Pitch Intervaln=MIDI_noten+1-MIDI_noten (2)
经过以上转化,可将不同调式下的同一旋律特征进行归一化,同时消除了不同哼唱调式对旋律特征提取的影响,不同调式中同一旋律的特征被成功的以归一化的方式提取出来,基于相同的特征表达方式可以设计一个相似度评价机制,来完成检索信息与数据库中的特征信息的匹配,对经过处理的基音频率序列进行旋律建模,得到一组由离散点构成的旋律骨架;旋律骨架经过对数转化,输入的相邻音之间音程被提取出来,并以此作为输入音频的特征序列,最终提取出的旋律特征,被送入匹配模块与音乐特征数据库中的信息进行相似度计算,得到匹配结果;
2)旋律的特征表达;
通过基音频率提取、滤波的得到基音频率轮廓曲线,可被拆分成为两种相互独立旋律成份的组合:宏观旋律成份和微观旋律成份;其定义分别如下:
宏观旋律成份:反应语音信息中的声调模式,与基音频率的全局音高变化密切相关;
微观旋律成份:反应语音信息中的音素成份,影响基音频率曲线的局部变化;
同理,哼唱信息作为语音信息的一种,亦视为两种旋律成份的组合,对于人声哼唱的音乐旋律,音高变化只和其基频曲线的宏观旋律成份相关,而哼唱的音标、歌词等音素信息,则由其基音频率曲线微观旋律成份决定,利用二次样条函数,通过插值近似得到基音频率曲线的宏观旋律,所得到的宏观旋律以离散目标点序列的形式呈现,并代表了该基音频率序列对应的音高旋律特征,哼唱旋律特征基于音高序列而与音标、音素信息无关,所以,利用MOMEL算法对经过滤波的基音频率轮廓曲线进行处理,可以获取基音频率轮廓曲线中的宏观旋律序列,并作为后续旋律特征表达的基础;
MOMEL算法输出的直接结果对于后续的旋律特征表达仍存在明显不足,因此再设置一个参数化的阈值,用以控制相邻音之间的音程,当两个音之间的音程低于此阈值的时候,这个音程会基于具体情况被删除或者与其他相邻音程进行合并;
(3)相似度计算-检索匹配算法
(a)最长匹配子序列算法(Longest Matched Subsequence,LMS);
基于特征提取方法所获得的旋律特征是一组实数序列,而音乐特征数据库中存储的旋律特征均为整数序列,此时,如果机械的利用最长公共子序列算法计算两个序列的相似度,那么很多原本可以匹配的元素可能被遗漏;
最长匹配子序列算法正可解决最长公共子序列算法(LCS)在应用中存在问题,最长匹配子序列算法作为对最长公共子序列算法的一种改进,其输出结果是独立的两个子序列A’、B’,分别是输入序列A、B的子序列;
按照如下方式定义最长匹配子序列:
给定输入序列A=(a1,a2,a3,...,an)和B=(b1,b2,b3,...,bm),
即产生子序列A’=(a’1,a’2,a’3,...,a’l)和B’=(b’1,b’2,b’3,...,b’l);
子序列A’、B’满足如下条件:
其一,子序列A’、B’中的每个元素都在另一子序列中有与之匹配的元素,且符合如下条件:
在子序列A’、B’中:
A’的元素a’k对应A的元素ai;
B’的元素b’k对应B的元素bj;
满足:LD(ai,bj)≤δ,其中δ为给定局部相似度最大值;
其二,子序列A’和B’分别在各自的原始序列中相对连续,即符合如下条件:
在子序列A’、B’中:
A’的元素a’k对应A的元素ai,A’的的元素a’k+1对应A的元素as;
B’的元素b’l对应B的元素bj,B’的的元素b’l+1对应B的元素at;
满足:s-i≤L且t-j≤L,其中L为子序列中允许插入元素的最大值;
其三,子序列A’和B’具有相同的长度。并且A’、B’分别是A、B所有满足条件1)和2)的子序列中最长的,即|A’|=|B’|=max{|Ak|,|Bl|};
在最长匹配子序列算法中,元素相等的概念被匹配的概念所替换。与最长公共子序列算法不同,A’与B’并非机械地完全相等,而是A、B所有子序列中最长且拥有相似度最高的一组;
(b)局部相似度计算;
作为最长匹配子序列算法的基础,下面是局部相似度的计算方式;
首先,定义实数序列的编辑距离算法:
对给定输入的实数序列:X=(x1,x2,x3,...,xm)、Y=(y1,y2,y3,...,yn);
按照公式(3)定义实数序列中元素之间相互转化的权值,其中δ为判定相等的阈值:
初始化编辑距离矩阵Dm,n,初始化条件如下所示:
d0,0=0;
di,0=di-1,0+w(xi,0),其中1≤i≤m;
d0,j=d0,j-1+w(0,yj),其中1≤j≤n;
对1≤i≤m且1≤j≤n的矩阵单元,计算编辑距离矩阵Dm,n,递归方程如公式(4)所示,其中Wdel、Wsub和Wins分别为删除、替换、插入三种操作的权值:
最终,输入的实数序列X和Y之间的编辑距离ED(X,Y)可以从矩阵Dm,n的右下角dm,n得到,如公式(5)所示:
ED(X,Y)=dm,n。(5)
然后,给出元素的局部相似度的具体定义:
对给定输入的旋律特征序列:A=(a1,a2,a3,...,an),B=(b1,b2,b3,...,bm);
从A、B中各取一个元素构成二元组(ai,bj),对于每一对二元组,其局部相似度定义如下,其中k为局部半径:
定义局部子序列X=(ai-k,...,ai,...,ai+k)和Y=(bj-k,...,bj,...,bj+k);
则二元组(ai,bj)附近的局部相似度LD(ai,bj)可由局部子序列X和Y之间的编辑距离ED(X,Y)得到,如公式(6)所示:
LD(ai,bj)=ED(X,Y);(6)
(c)动态规划计算最长匹配子序列;
明确了原始序列A、B中元素ai、bj附近局部相似度的计算规则,可以利用动态规划(Dynamic Programming)的策略计算出符合定义的最长匹配子序列A’、B’;
首先,利用动态规划结算最长公共子序列算法(LCS)的计算流程:
给定输入序列A=(a1,a2,a3,...,am)和B=(b1,b2,b3,...,bn);
构造LCS矩阵Cm,n,按照如下条件初始化该矩阵:
ci,0=0,c0,j=0,其中0≤i≤m且0≤j≤n;
利用公式(7)中的递归方程计算矩阵,其中1≤i≤m且1≤j≤n:
最终,最长公共子序列可由Cm,n的右下角cm,n得出;
最长匹配子序列算法(LMS)可按如下方式计算:
给定输入序列A=(a1,a2,a3,...,am)和B=(b1,b2,b3,...,bn);
定义矩阵Cm,n、Rm,n和Sm,n,用以计算最长匹配子序列,详细定义分别如下:
整形矩阵Cm,n,其单元ci,j储存子序列(a1,a2,a3,...,ai)和(b1,b2,b3,...,bj)之间的最长匹配子序列长度;
整数矩阵Rm,n,其单元ri,j储存这两个子序列中不连续元素的个数;
字符矩阵Sm,n,其单元si,j储存矩阵Cm,n、Rm,n的内部演算路径,对每一次计算记录正常最长匹配子序列增长的方向;
按照以下条件初始化这≤个矩阵:
ci,0=0,c0,j=0,r0,j=0,ri,0=0,s0,j=‘_’,si,0=‘_’,其中0≤i≤m且0≤j≤n;
利用公式(8)中的递归方程计算矩阵Cm,n、Rm,n和Sm,n,其中1≤i≤m且1≤j≤n:
最终,最长匹配子序列算法的输出结果可通过对符号矩阵Sm,n的记录的路径和Cm,n中储存的数值计算得到,而最长匹配子序列的长度则可由cm,n直接获得。
2.根据权利要求1所述的一种基于最长匹配子序列算法的哼唱计算机音乐检索方法,其特征在于,所述最长匹配子序列算法的具体步骤如下:
(1):给定输入旋律特征序列A、B,采用LMS算法计算取得A、B之间彼此相似度最高的子序列A’、B’,即最长匹配子序列;
(2)通过原始特征序列A、B的长度和匹配子序列A’、B’的长度计算出原始特征序列A、B之间的匹配部分所占比率;
(3)采用实数域的编辑距离算法计算A’、B’之间编辑距离;
(4):对检索过程中每一组参与匹配的特征序列,以A、B之间的匹配部分所占比率作为第一关键字进行降序排列,A’、B’之间编辑距离作为第二关键字进行升序排列,对其相似度进行排序,构成相似度降序列表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京师范大学,未经北京师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110382159.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种腻子的精制方法
- 下一篇:摩托车电瓶车位移告警器