一種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法
【專利摘要】本發(fā)明公開了一種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,所述【技術(shù)領(lǐng)域】涉及音頻檢索和哼唱檢索技術(shù),該方法包括兩部分,一是通過(guò)MIDI音樂(lè)文件來(lái)構(gòu)建音樂(lè)數(shù)據(jù)庫(kù)。二是提取哼唱片段的特征,并與音樂(lè)數(shù)據(jù)庫(kù)模型進(jìn)行基于二分逼近動(dòng)態(tài)時(shí)間歸整的匹配并返回檢索結(jié)果。包括以下步驟:首先對(duì)哼唱片段進(jìn)行歸一化、帶通濾波、預(yù)加重、加窗分幀等處理;接著進(jìn)行濾除靜音段、基音檢測(cè)、中值平滑等處理;最后進(jìn)行基于二分逼近動(dòng)態(tài)時(shí)間歸整的匹配,根據(jù)匹配率由大到小排序并返回結(jié)果。本發(fā)明的優(yōu)點(diǎn)是解決了音樂(lè)檢索的音符序列時(shí)間點(diǎn)對(duì)齊問(wèn)題和音符相對(duì)音高兩大難題;能顯著提高檢索命中率。
【專利說(shuō)明】—種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,屬于音頻檢索和哼唱檢索【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]傳統(tǒng)的檢索音樂(lè)的方法是基于文本的檢索,當(dāng)前主流的搜索引擎,如Baidu、Yahoo和Google等,在文本檢索領(lǐng)域非常強(qiáng)大,但檢索多媒體數(shù)據(jù)使用的是基于文本檢索的方法。研究更加高效的、基于人類交流習(xí)慣的多媒體信息檢索技術(shù),是信息技術(shù)發(fā)展的必然趨勢(shì)。音頻檢索作為多媒體信息檢索的重要組成部分之一,是國(guó)內(nèi)外信息檢索【技術(shù)領(lǐng)域】關(guān)注的重要課題。
[0003]哼唱檢索是音頻檢索的ー個(gè)分支。當(dāng)用戶利用搜索引擎檢索一首音樂(lè)時(shí),如果用戶忘記了該音樂(lè)的歌曲名和歌手名等信息,將很難通過(guò)搜索引擎找到這首音樂(lè),這時(shí)用戶可以哼唱這首音樂(lè)在用戶腦海中印象最深刻的一段旋律,使用在線哼唱檢索系統(tǒng)來(lái)找到這首音樂(lè),這種檢索的方法是哼唱檢索。哼唱檢索是ー種基于內(nèi)容的音頻檢索,用戶通過(guò)麥克風(fēng)哼唱一段音樂(lè)片段作為輸入,哼唱檢索系統(tǒng)對(duì)輸入的音樂(lè)片段與數(shù)據(jù)庫(kù)模板音樂(lè)進(jìn)行匹配,檢索出音樂(lè)片段所對(duì)應(yīng)的歌曲。相對(duì)于傳統(tǒng)的基于文本的音樂(lè)檢索方法,哼唱檢索更加自然高效,更加符合人對(duì)音樂(lè)的印象,相比于歌曲名和歌手名等文字信息,人更加容易記住音樂(lè)的旋律,特別是音樂(lè)的高潮旋律部分。
[0004]哼唱檢索進(jìn)行較早研究的Asif Ghias和R.J.McNab等人,采用時(shí)域上的自相關(guān)法提取音高,根據(jù)音高差用符號(hào)串(U,D,S)來(lái)表示旋律,采用近似字符串算法來(lái)進(jìn)行音樂(lè)哼唱片段和音樂(lè)數(shù)據(jù)庫(kù)模板的匹配,這種方法解決了音符相對(duì)音高的問(wèn)題,但插入音符和丟失音符等會(huì)造成較大的誤差,因此該方法無(wú)法解決音符的時(shí)間伸展問(wèn)題。
[0005]Lie Lu和Hong You等人,`用基音輪廓、音程、基音持續(xù)時(shí)間表示旋律特征,提出了一種兩級(jí)匹配的算法,先用動(dòng)態(tài)規(guī)劃(Dynamic Programming, DP)算法對(duì)齊音高輪廓,過(guò)濾一些誤差大于等于規(guī)定閾值的音樂(lè)數(shù)據(jù)庫(kù)模板,而對(duì)于誤差小于規(guī)定閾值的音樂(lè)數(shù)據(jù)庫(kù)的模板,再使用更加精確的算法比較對(duì)應(yīng)的音程和基音持續(xù)時(shí)間,從而篩選出音樂(lè),他們要求用戶按照“DaDa…”來(lái)發(fā)音。該算法同樣存在Asif Ghias和R.J.McNab等人所使用算法的問(wèn)題,即無(wú)法解決音符的伸展問(wèn)題,而且需要用戶按照“DaDa…”來(lái)發(fā)音,使得用戶在哼唱時(shí)很不自然,在不經(jīng)過(guò)哼唱學(xué)習(xí)的情況下,容易在哼唱的時(shí)候出錯(cuò)。
[0006]William Rand和Wi 11 lam Birmingham等人提出了利用Markov統(tǒng)計(jì)模型進(jìn)行旋律相似性的比較,因?yàn)樗麄兊南到y(tǒng)是對(duì)頻率符號(hào)進(jìn)行建模,所以他們的方法對(duì)哼唱的音高比較敏感,但較好地解決插入和丟失音符等造成的哼唱誤差。Markov統(tǒng)計(jì)模型方法解決了音符的伸展問(wèn)題,但無(wú)法解決音符相對(duì)音高的問(wèn)題。
[0007]Mai din等人提出一種基于音高輪廓幾何相似性的匹配方法,根據(jù)音樂(lè)哼唱片段提取音高,并按時(shí)間的變化畫出音高曲線,而后在二維空間中比較兩條音高曲線的幾何相似性。通過(guò)在音高軸上的平移對(duì)齊音樂(lè)哼唱片段和音樂(lè)數(shù)據(jù)庫(kù)模板的平均音高,再通過(guò)計(jì)算夾在兩條曲線間的面積,判斷兩段旋律的匹配相似程度,面積越小相似度越高。音高輪廓幾何相似性的匹配算法解決了音符相對(duì)音高問(wèn)題,但無(wú)法解決音符序列時(shí)間點(diǎn)對(duì)齊問(wèn)題,對(duì)插入音符和丟失音符等誤差較大。
[0008]臺(tái)灣清華大學(xué)的張智星等人采用時(shí)間上限定音符的方法,采取避開音符切分的策略,避免因錯(cuò)誤的音符切分對(duì)旋律匹配造成負(fù)面影響。他們以每I / 16秒對(duì)音高旋律特征進(jìn)行采樣,然后采用兩層匹配算法對(duì)提取的音高值進(jìn)行匹配處理。這樣首先排除掉一部分候選音樂(lè),然后采用動(dòng)態(tài)時(shí)間歸整算法進(jìn)行精確匹配。這種方法避免了音符切分帶來(lái)的錯(cuò)誤,但同時(shí)也導(dǎo)致了匹配速度的不足。動(dòng)態(tài)時(shí)間歸整算法解決了音符序列時(shí)間點(diǎn)對(duì)齊問(wèn)題,但是無(wú)法解決音符相對(duì)音高問(wèn)題。
[0009]因此,有必要設(shè)計(jì)一種新型的音樂(lè)哼唱檢索方法。
【發(fā)明內(nèi)容】
[0010]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,該基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法易于實(shí)施,而且檢索命中率高。
[0011]發(fā)明的技術(shù)解決方案如下:
[0012]一種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,包括以下步驟:
[0013]步驟1:原始數(shù)據(jù)的獲??;
[0014]從用戶哼唱的音樂(lè)片段中,提取所有的采樣電平數(shù)據(jù),并將采樣電平數(shù)據(jù)進(jìn)行歸一化處理,得到歸一化數(shù)據(jù);
[0015]歸一化過(guò)程為:`
[0016]首先將每個(gè)電平數(shù)據(jù)除以32768.0f,接著找出進(jìn)行了除法運(yùn)算操作的所有數(shù)據(jù)中的最大值,最后將所有的數(shù)據(jù)乘以“0.9 /最大值”;
[0017]步驟2:預(yù)處理;
[0018]對(duì)所述的歸一化數(shù)據(jù)采用巴特沃斯帶通濾波器濾除量化噪聲;【用于去除工頻干擾、混疊干擾等】;
[0019]再進(jìn)行預(yù)加重處理;【用于提升頻率的高頻部分,恢復(fù)原來(lái)的信號(hào)功率分布】;
[0020]最后采用漢明窗對(duì)音樂(lè)信號(hào)進(jìn)行加窗和分幀處理;【使得幀與幀之間的平滑過(guò)渡保持連續(xù)性;】
[0021]步驟3:過(guò)濾靜音段;
[0022]采用公式EnergyVec[i]= V fabs(samplc[i]) S/tv卜:V 計(jì)算每一數(shù)據(jù)幀的平
i—s
均能量值;
[0023]其中EnergyVec[i]為第i數(shù)據(jù)幀的平均能量值;N為每一數(shù)據(jù)幀的數(shù)據(jù)個(gè)數(shù),即幀長(zhǎng),Len為采樣點(diǎn)的總個(gè)數(shù);
[0024]并由此得出所有數(shù)據(jù)幀的平均能量值fMeam,取閾值threshold=。.3f*fMean,【0.3f中的f表示浮點(diǎn)數(shù)】將小于該閾值的數(shù)據(jù)幀舍棄掉,小于該閾值的數(shù)據(jù)幀為靜音幀,從過(guò)過(guò)濾靜音段,得到了音樂(lè)信號(hào)samplew[i];步驟4:頻率轉(zhuǎn)換;
[0025]采用峰值檢測(cè)來(lái)提取每一幀數(shù)據(jù)的基音周期,從而獲得基音頻率;再采用中值平滑方法來(lái)濾除頻率提取造成的誤差,最后將音樂(lè)哼唱片段的基音頻率利用頻率轉(zhuǎn)換函數(shù)轉(zhuǎn)換到音樂(lè)數(shù)據(jù)庫(kù)音高的同一水準(zhǔn);即:
[0026]轉(zhuǎn)換后的音高為semttone=12*log2(fy(n) / 440)+69,其中fy (n)是音樂(lè)哼唱片段的基音頻率【進(jìn)行轉(zhuǎn)換的目的是使得整體音高輪廓曲線接近音樂(lè)數(shù)據(jù)庫(kù)模板的音高輪廓曲線,因而可以忽略不同的起調(diào)造成的整體音高偏高或偏低的影響,解決了音符相對(duì)音高問(wèn)題。
[0027]對(duì)原來(lái)的samplew[i]幾乎沒有影響,調(diào)用頻率轉(zhuǎn)換函數(shù)即可?!?br>
[0028]步驟5:數(shù)據(jù)匹配,返回結(jié)果:
[0029]從經(jīng)過(guò)頻率轉(zhuǎn)換后的哼唱片段中提取出音高輪廓曲線,采用二分逼近的動(dòng)態(tài)時(shí)間歸整方法對(duì)該哼唱片段和音樂(lè)數(shù)據(jù)庫(kù)中的音樂(lè)模板一一進(jìn)行匹配,并根據(jù)匹配率進(jìn)行排序,最后返回結(jié)果,完成首樂(lè)哼唱的檢索。
[0030]步驟4中,定義Samplew[i]的自相關(guān)函數(shù)Rw[k]為:
[0031]
【權(quán)利要求】
1.一種基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,其特征在于,包括以下步驟: 步驟1:原始數(shù)據(jù)的獲取; 從用戶哼唱的音樂(lè)片段中,提取所有的采樣電平數(shù)據(jù),并將采樣電平數(shù)據(jù)進(jìn)行歸一化處理,得到歸一化數(shù)據(jù); 歸一化過(guò)程為: 首先將每個(gè)電平數(shù)據(jù)除以32768.0f,接著找出進(jìn)行了除法運(yùn)算操作的所有數(shù)據(jù)中的最大值,最后將所有的數(shù)據(jù)乘以“0.9 /最大值”; 步驟2:預(yù)處理; 對(duì)所述的歸一化數(shù)據(jù)采用巴特沃斯帶通濾波器濾除量化噪聲; 再進(jìn)行預(yù)加重處理; 最后采用漢明窗對(duì)音樂(lè)信號(hào)進(jìn)行加窗和分幀處理; 步驟3:過(guò)濾靜音段; 采用公式
2.根據(jù)權(quán)利要求1所述的基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,其特征在于,步驟4中,定義Samplew[i]的自相關(guān)函數(shù)Rw[k]為:
3.根據(jù)權(quán)利要求2所述的基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,其特征在于,步驟2中的巴特沃斯帶通濾波器,其上下截止頻率分別是fH=1000hz和f!=60hz ; 預(yù)加重處理通過(guò)采用具有6dB /倍頻程的提升高頻特性的預(yù)加重?cái)?shù)字濾波器來(lái)實(shí)現(xiàn), 預(yù)加重?cái)?shù)字濾波器數(shù)學(xué)表達(dá)式如下: sample [i] = sample [i] - a *sample [i_l」 其中,a =0.97, sample[i]表示第i個(gè)點(diǎn)的采樣值,sample[i_l]表示第i_l個(gè)點(diǎn)的采樣值。
4.根據(jù)權(quán)利要求3所述的基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,其特征在于,步驟4中中值平滑處理的窗ロ大小為3或5。
5.根據(jù)權(quán)利要求3所述的基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,其特征在于,步驟5中的匹配過(guò)程為: al:對(duì)哼唱旋律片段進(jìn)行處理提取出該哼唱旋律片段對(duì)應(yīng)的音高輪廓曲線,哼唱旋律片段的音高輪廓曲線上有效點(diǎn)的數(shù)量為m ; 音高輪廓曲線為音高在時(shí)間上的變化,音高輪廓曲線是在一個(gè)二維坐標(biāo)系中的曲線,橫軸表示時(shí)間,縱軸表示音高; 有效點(diǎn)的數(shù)量為以IOms為單位劃分得到的音高點(diǎn)的總數(shù)量;10ms為姆ー幀所對(duì)應(yīng)的時(shí)間長(zhǎng)度; a2:從音樂(lè)數(shù)據(jù)庫(kù)文件中獲取一首歌曲的音高輪廓曲線,該首歌曲的音高輪廓曲線上有效點(diǎn)的數(shù)量為n ;
a3:初始化閾值 fCenter=0.0f, fSpan=0.4f, fMinDist=2147483647 ;其中 fCenter 表不哼唱旋律片段音高輪廓曲線在縱向上偏移的距離;fSpan表示哼唱旋律片段音高輪廓曲線相對(duì)于fCenter的偏移距離;fMinDist表示哼唱旋律片段與該首歌曲的最小動(dòng)態(tài)時(shí)間歸整值; a4:將哼唱旋律片段的初始音高加上fCenter+fSpan,根據(jù)動(dòng)態(tài)時(shí)間規(guī)整采用迭代計(jì)算的方式計(jì)算狀態(tài)轉(zhuǎn)換方程計(jì)算D[n,m]的值;狀態(tài)轉(zhuǎn)換方程為:D[n,m]=min{D[n-2,m-l],D[n-1, m-1], D[n-1, m_2]}+d[n, m],初始化公式為D(I, l)=d(l, I),迭代運(yùn)算采用動(dòng)態(tài)時(shí)間歸整的狀態(tài)轉(zhuǎn)移方程來(lái)進(jìn)行運(yùn)算,終止運(yùn)算為D(T,R)=D[n, m],T=觀測(cè)序列長(zhǎng)度,R為對(duì)應(yīng)的具體位置;其中d[n,m]為音樂(lè)數(shù)據(jù)庫(kù)模板位置n與哼唱片段位置m處音高的歐氏距離;上規(guī)整值Dup=D [n,J ; a5:將哼唱旋律片段的初始音高加上fCenter,計(jì)算中心動(dòng)態(tài)時(shí)間歸整值; Dcentel=DDi, m];再將哼唱旋律片段的初始音高加上fCenter-fSpan,計(jì)算下動(dòng)態(tài)時(shí)間歸整值 Ddwn=D [n, m]; a6:將 fMinDist 置為 fMinDist、Dup, Duenter 和 Dd_4 個(gè)值中的最小值; a7:將fCenter置為Dup、Dcenter, Ddown三者中的最小值并減去偏移值; a8:設(shè)置fSpan=fSpan / 2,如果fSpan > 0.01,則跳到a4繼續(xù)執(zhí)行,否則跳到a9執(zhí)行; a9 JffMinDist的值置為哼唱旋律片段與該首歌曲音高輪廓曲線的二分逼近動(dòng)態(tài)時(shí)間歸整值;alO:將音樂(lè)數(shù)據(jù)庫(kù)里面的每首歌曲與哼唱旋律片段進(jìn)行a3到a9的匹配,根據(jù)fMinDist的值由小到大排列,越排前面的歌曲表示匹配率越高,最后將結(jié)果進(jìn)行返回。fMinDist的值越小表示該動(dòng)態(tài)時(shí)間歸整的值越小,表示匹配率越高。
6.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的基于二分逼近動(dòng)態(tài)時(shí)間歸整匹配的音樂(lè)哼唱檢索方法,其特征在于,所述音樂(lè)數(shù)據(jù)庫(kù)的構(gòu)建方法為:以多首MIDI歌曲為基本素材,按照MIDI的文件格式進(jìn)行解析,將解析獲得的每首歌曲音高輪廓曲線作為高級(jí)特征,并將每首歌曲的高級(jí)特征存放在文件中作為音樂(lè)數(shù)據(jù)庫(kù)文件,以便進(jìn)行基于二分逼近動(dòng)態(tài)時(shí)間歸整的音樂(lè)檢索。
【文檔編號(hào)】G06F17/30GK103559232SQ201310505428
【公開日】2014年2月5日 申請(qǐng)日期:2013年10月24日 優(yōu)先權(quán)日:2013年10月24日
【發(fā)明者】鄒北驥, 周義洪, 王磊 申請(qǐng)人:中南大學(xué)