两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于音樂(lè)指紋特征的音樂(lè)檢索方法及系統(tǒng)的制作方法

文檔序號(hào):6540605閱讀:157來(lái)源:國(guó)知局
一種基于音樂(lè)指紋特征的音樂(lè)檢索方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于音樂(lè)指紋特征的音樂(lè)檢索方法及系統(tǒng),其方法包括:構(gòu)建音樂(lè)指紋索引,輸入音頻信號(hào)并進(jìn)行預(yù)處理獲取音頻頻譜圖,在頻譜圖內(nèi)選取第一錨點(diǎn)、第二錨塊和第三錨塊進(jìn)行組合,得到指紋并將其插入到哈希表內(nèi),記錄該指紋出現(xiàn)的歌曲ID和在歌曲內(nèi)的位置;音樂(lè)檢索,提取待檢索音樂(lè)片段的指紋序列,通過(guò)查找哈希表得到各指紋對(duì)應(yīng)的歌曲ID和歌曲位置鏈表,構(gòu)建歌曲ID與指紋對(duì)應(yīng)的匹配表,將匹配表內(nèi)重復(fù)最多的歌曲內(nèi)位置作為命中數(shù),將命中數(shù)最多的歌曲作為檢索結(jié)果。本發(fā)明實(shí)現(xiàn)當(dāng)音樂(lè)庫(kù)達(dá)到百萬(wàn)級(jí)時(shí)快速檢索;克服信道漂移的問(wèn)題;提高指紋的抗噪性、魯棒性;解決最少錄音時(shí)間的限制;獲得更緊致,占更少內(nèi)存空間的指紋特征。
【專(zhuān)利說(shuō)明】一種基于音樂(lè)指紋特征的音樂(lè)檢索方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及音頻信號(hào)處理和多媒體信息檢索系統(tǒng)【技術(shù)領(lǐng)域】,更具體地,涉及一種基于音樂(lè)指紋特征的音樂(lè)檢索方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),大數(shù)據(jù)越來(lái)越成為了一個(gè)熱門(mén)的課題。在音樂(lè)檢索領(lǐng)域,面對(duì)百萬(wàn)級(jí)的音樂(lè)數(shù)據(jù),如何實(shí)現(xiàn)快速檢索成為了一個(gè)十分具有價(jià)值的問(wèn)題?,F(xiàn)實(shí)應(yīng)用中,錄音環(huán)境可能非常嘈雜,如何選取抗噪的、魯棒性高的指紋成了一個(gè)難題。
[0003]目前市場(chǎng)上現(xiàn)有的音樂(lè)指紋算法包括Philips公司的音樂(lè)檢索算法,參見(jiàn)Haitsma J, Kalker T.A Highly Robust Audio Fingerprinting System[C]ISMIR.2002。其方法是獲得音樂(lè)的頻譜圖,為每一幀提取一個(gè)特征。頻譜圖切分成了若干頻帶,取頻帶間能量的差值的符號(hào)作為特征。Philips算法的缺點(diǎn)包括:1.在靜音部分特征提取的準(zhǔn)確率較低。2.由于手機(jī)等錄音設(shè)備高低頻區(qū)域內(nèi)信道失真嚴(yán)重,導(dǎo)致準(zhǔn)確率較低。3.音樂(lè)信號(hào)實(shí)際上是稀疏的,Philips算法為每一幀提取特征,造成了指紋特征的冗余,使得檢索變慢。
[0004]Shazam 算法是市場(chǎng)上另一種算法,參見(jiàn) Wang A.An Industrial Strength AudioSearch Algorithm[C]//ISMIR.2003:7-13。其基本原理是獲得音樂(lè)的頻譜圖,在頻譜圖某個(gè)區(qū)域內(nèi)選中一個(gè)錨點(diǎn),在此錨點(diǎn)附近的區(qū)域內(nèi)再選擇若干個(gè)重要點(diǎn),以這些錨點(diǎn)和這重要點(diǎn)的點(diǎn)對(duì)的組合作為特征。Shazam的指紋特征冗余度較Philips算法低,但是有以下缺點(diǎn):1.當(dāng)曲庫(kù)達(dá)到百萬(wàn)級(jí)時(shí),由于點(diǎn)對(duì)組成的桶的空間上限限制,使得搜索速度變慢。2.當(dāng)錄音源抖動(dòng)或錄音信道不穩(wěn)定時(shí),錨點(diǎn)及重要點(diǎn)發(fā)生漂移,導(dǎo)致識(shí)別準(zhǔn)確率下降。3.存在最少錄音時(shí)間限制,如至少錄音3秒才能識(shí)別。

【發(fā)明內(nèi)容】

[0005]本發(fā)明為克服上述現(xiàn)有技術(shù)所述的至少一種缺陷(不足),提供一種快速檢索百萬(wàn)級(jí)音樂(lè)庫(kù)的音樂(lè)檢索方法,是基于音樂(lè)指紋特征的音樂(lè)檢索方法。
[0006]本發(fā)明的又一目的是提出一種基于音樂(lè)指紋特征的音樂(lè)檢索系統(tǒng)。
[0007]本發(fā)明的具體技術(shù)方案為:
[0008]一種基于音樂(lè)指紋特征的音樂(lè)檢索方法,包括:
[0009]構(gòu)建音樂(lè)指紋索引,輸入音頻信號(hào)并進(jìn)行預(yù)處理獲取音頻頻譜圖,在頻譜圖內(nèi)選取第一錨點(diǎn)、第二錨塊和第三錨塊進(jìn)行組合,得到指紋并將其插入到哈希表內(nèi),記錄該指紋出現(xiàn)的歌曲ID和在歌曲內(nèi)的位置;
[0010]音樂(lè)檢索,提取待檢索音樂(lè)片段的指紋序列,通過(guò)查找哈希表得到各指紋對(duì)應(yīng)的歌曲ID和歌曲位置鏈表,構(gòu)建歌曲ID與指紋對(duì)應(yīng)的匹配表,將匹配表內(nèi)重復(fù)最多的歌曲內(nèi)位置作為命中數(shù),將命中數(shù)最多的歌曲作為檢索結(jié)果;
[0011]所述第一錨點(diǎn)的獲取方式為:將頻譜圖切分為MXN塊,其中M是指將頻譜圖縱向頻域均勻劃分為M個(gè)頻帶,每個(gè)頻帶為a個(gè)點(diǎn);N是指將頻譜圖橫向時(shí)域以步長(zhǎng)b為單位切割為N個(gè)部分;
[0012]在每塊中選取一個(gè)幅值最大的點(diǎn)最為第一錨點(diǎn),并將第一錨點(diǎn)附近R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ;
[0013]所述第二錨塊的獲取方式為:以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第二錨塊;將該矩形區(qū)域劃分為X個(gè)3*3小塊,在每個(gè)3*3小塊內(nèi)選擇最大的幅值作為該3*3小塊的小塊代表值,在該矩形區(qū)域內(nèi)選擇小塊代表值最大的3*3小塊的作為第二錨塊,并以第二錨塊為中心將R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ;
[0014]所述第三錨塊的獲取方式為:以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第三錨塊;將該矩形區(qū)域劃分為Y個(gè)小矩形區(qū)域,每個(gè)小矩形區(qū)域劃分為I個(gè)2*2小塊;在每個(gè)2*2小塊內(nèi)選擇最大的幅值作為該2*2小塊的小塊代表值,在小矩形區(qū)域內(nèi)選取出幅值最大的2*2小塊,在大矩形內(nèi)選擇Z個(gè)2*2小塊。
[0015]采用該方法能在音樂(lè)庫(kù)達(dá)到百萬(wàn)級(jí)時(shí)實(shí)現(xiàn)快速檢索,在頻譜圖中采用2*2小塊代替1*1點(diǎn),從而克服了錄音源抖動(dòng)及信道不穩(wěn)定的問(wèn)題。采用一個(gè)錨點(diǎn)和兩個(gè)錨塊作為集合,擴(kuò)大了桶的取值空間,使得檢索倒排表的鏈長(zhǎng)縮短,可以實(shí)現(xiàn)在百萬(wàn)級(jí)的數(shù)據(jù)量下大幅加快檢索速度;在選擇特征點(diǎn)及特征塊時(shí),考慮到了信道的局部平穩(wěn)性,抗噪性更強(qiáng),識(shí)別率更高。不存在最少錄音時(shí)間的限制。使得用戶體驗(yàn)更好。當(dāng)音樂(lè)數(shù)據(jù)庫(kù)巨大時(shí),由于指紋信息是緊致的,冗余度低,因此更節(jié)省內(nèi)存。
[0016]上述第一錨點(diǎn)選出后,在其附近R*R的區(qū)域內(nèi)的點(diǎn)賦值為O是基于以下原因:若不設(shè)禁忌,可能會(huì)出現(xiàn)相鄰的兩個(gè)錨點(diǎn)。實(shí)驗(yàn)顯示,此情況下錯(cuò)誤的hit數(shù)可能會(huì)翻倍,如hit從4變到8。產(chǎn)生上述情況的原因是錨點(diǎn)相關(guān)性大。選點(diǎn)盡量要去相關(guān),讓點(diǎn)獨(dú)立(即熵大),這樣才能減少碰撞,且獲得較好的桶。
[0017]同理,選擇第二個(gè)錨塊之后,以該錨塊中心的為中心點(diǎn),周?chē)鶵*R區(qū)域置O。這樣做的原因是:避免第三個(gè)錨塊和第二個(gè)錨塊重疊,選點(diǎn)盡量要去相關(guān),讓點(diǎn)獨(dú)立(即熵大),這樣才能減少碰撞,且獲得較好的桶。
[0018]在一種優(yōu)選的方案中,所述預(yù)處理是通過(guò)對(duì)輸入的音頻信號(hào)進(jìn)行短時(shí)傅里葉變換獲取音頻頻譜圖,在頻譜圖尾部進(jìn)行補(bǔ)白,對(duì)補(bǔ)白后的頻譜圖進(jìn)行濾波。
[0019]在音頻信號(hào)處理中,時(shí)域-頻域分析是非常有力的工具,符合人耳的感知特性。在語(yǔ)音識(shí)別中,MFCC和LPCC是經(jīng)常使用的特征。但其丟掉了許多細(xì)節(jié)。在音樂(lè)檢索中,音樂(lè)的音高很精確,故不適宜用這些特征。本方法采用短時(shí)傅里葉變換(STFT)作為特征,由于STFT是完備變換,包含了所有細(xì)節(jié),更適宜于音樂(lè)檢索需求。同時(shí)采用補(bǔ)白的方式代替切掉尾部,可以充分利用信息。
[0020]在一種優(yōu)選的方案中,所述對(duì)補(bǔ)白后音頻頻譜圖進(jìn)行濾波方式是梯形帶通濾波。由于在真實(shí)環(huán)境中,信道失真非常嚴(yán)重,尤其是在低頻、高頻,本方法采用梯形帶通濾波來(lái)對(duì)頻譜圖進(jìn)行濾波,目的是保留平坦的頻帶,去除高頻和低頻。
[0021]在一種優(yōu)選的方案中,所述在音樂(lè)檢索時(shí),對(duì)待檢索音樂(lè)片段在前端補(bǔ)白若干次分別進(jìn)行檢索,具體是對(duì)待檢索音樂(lè)片段在前端補(bǔ)白8次分別進(jìn)行檢索。
[0022]公知的,只有在BLOCK的邊界對(duì)齊的情況下才能得到最佳匹配,假如輸入片段如上所示,BLOCK的邊界不對(duì)齊,特征點(diǎn)的提取就會(huì)不一致。本方法在待檢索音樂(lè)片段在前端8次補(bǔ)白中,總有一次能使得邊界與原曲重合,此時(shí)的特征點(diǎn)重合最多,hit數(shù)也最多,因此需要進(jìn)行8次補(bǔ)白檢索。
[0023]在一種優(yōu)選的方案中,所述b=8,R=5, Z=4。
[0024]在一種優(yōu)選的方案中,還包括對(duì)音樂(lè)指紋索引中構(gòu)建的哈希表進(jìn)行剪枝。由于指紋在空間上分布是不均勻的(良好的指紋可以使其盡量均勻),所以桶的鏈長(zhǎng)也是不相同的,存在一定程度的病態(tài)。在病態(tài)的鏈上遍歷會(huì)很慢,因此在加載完大哈希表之后剪去這些病態(tài)的鏈,剪枝會(huì)使得正確曲目hit數(shù)目有細(xì)微減少,但可以提高搜索速度。
[0025]一種基于音樂(lè)指紋特征的音樂(lè)檢索系統(tǒng),包括:
[0026]音樂(lè)指紋索引模塊,用于對(duì)輸入的音頻信號(hào)進(jìn)行預(yù)處理獲取音頻頻譜圖,在頻譜圖內(nèi)選取第一錨點(diǎn)、第二錨塊和第三錨塊進(jìn)行組合,得到指紋并將其插入到哈希表內(nèi),記錄該指紋出現(xiàn)的歌曲ID和在歌曲內(nèi)的位置;
[0027]音樂(lè)檢索模塊,用于提取待檢索音樂(lè)片段的指紋序列,通過(guò)查找哈希表得到各指紋對(duì)應(yīng)的歌曲ID和歌曲位置鏈表,構(gòu)建歌曲ID與指紋對(duì)應(yīng)的匹配表,將匹配表內(nèi)重復(fù)最多的歌曲內(nèi)位置作為命中數(shù),將命中數(shù)最多的歌曲作為檢索結(jié)果;
[0028]所述音樂(lè)指紋索引模塊還包括第一錨點(diǎn)選取模塊、第二錨塊選取模塊和第三錨塊選取模塊;
[0029]所述第一錨點(diǎn)選取模塊,是將頻譜圖切分為MXN ±夾,其中M是指將頻譜圖縱向頻域均勻劃分為M個(gè)頻帶,每個(gè)頻帶為a個(gè)點(diǎn)#是指將頻譜圖橫向時(shí)域以步長(zhǎng)b為單位切割為N個(gè)部分;
[0030]在每塊中選取一個(gè)幅值最大的點(diǎn)最為第一錨點(diǎn),并將第一錨點(diǎn)附近R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ;
[0031]所述第二錨塊選取模塊,是以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第二錨塊;將該矩形區(qū)域劃分為X個(gè)3*3小塊,在每個(gè)3*3小塊內(nèi)選擇最大的幅值作為該3*3小塊的小塊代表值,在該矩形區(qū)域內(nèi)選擇小塊代表值最大的3*3小塊的作為第二錨塊,并以第二錨塊為中心將R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ;
[0032]所述第三錨塊選取模塊,是以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第三錨塊;將該矩形區(qū)域劃分為Y個(gè)小矩形區(qū)域,每個(gè)小矩形區(qū)域劃分為I個(gè)2*2小塊;在每個(gè)2*2小塊內(nèi)選擇最大的幅值作為該2*2小塊的小塊代表值,在小矩形區(qū)域內(nèi)選取出幅值最大的2*2小塊,在大矩形內(nèi)選擇Z個(gè)2*2小塊。
[0033]與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是:
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0034]圖1為本發(fā)明實(shí)施例中獲取指紋的流程圖。
[0035]圖2為本發(fā)明實(shí)施例中音樂(lè)檢索示意圖。
[0036]圖3為本發(fā)明實(shí)施例中輸入的時(shí)域波形示意圖。
[0037]圖4為時(shí)域波形圖轉(zhuǎn)換為的頻譜示意圖。
[0038]圖5為對(duì)圖4中的頻譜圖進(jìn)行補(bǔ)白后的頻譜示意圖。
[0039]圖6為本發(fā)明實(shí)施例中帶通濾波器的增益示意圖。
[0040]圖7為本發(fā)明實(shí)施例中經(jīng)過(guò)帶通濾波器后的頻譜圖。
[0041]圖8為本發(fā)明實(shí)施例中第一錨點(diǎn)的選擇示意圖。[0042]圖9為本發(fā)明實(shí)施例中第二錨塊的選擇示意圖。
[0043]圖10為本發(fā)明實(shí)施例中第三錨塊的選擇示意圖。
[0044]圖11為本發(fā)明實(shí)施例的哈希表示意圖。
[0045]圖12為本發(fā)明實(shí)施例中音樂(lè)檢索正確的匹配示意圖。
[0046]圖13為本發(fā)明實(shí)施例中音樂(lè)檢索錯(cuò)誤的匹配示意圖。
[0047]圖14為本發(fā)明實(shí)施例中構(gòu)建的歌曲ID與指紋對(duì)應(yīng)的匹配表示意圖。
[0048]圖15為本發(fā)明實(shí)施例中輸入音頻片段錯(cuò)位示意圖。
【具體實(shí)施方式】
[0049]附圖僅用于示例性說(shuō)明,不能理解為對(duì)本專(zhuān)利的限制;
[0050]為了更好說(shuō)明本實(shí)施例,附圖某些部件會(huì)有省略、放大或縮小,并不代表實(shí)際產(chǎn)品的尺寸;
[0051]對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),附圖中某些公知結(jié)構(gòu)及其說(shuō)明可能省略是可以理解的。
[0052]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的說(shuō)明。
[0053]1.預(yù)處理,輸入的wav必須是單聲道,采樣率必須為8000Hz,如圖3 ;
[0054]2.計(jì)算音頻頻譜圖,其窗長(zhǎng)1024點(diǎn),步長(zhǎng)400點(diǎn),加漢明窗,如圖4 ;
[0055]在音頻信號(hào)處理中,時(shí)域-頻域分析是非常有力的工具,符合人耳的感知特性。在語(yǔ)音識(shí)別中,MFCC和LPCC是經(jīng)常使用的特征。但其丟掉了許多細(xì)節(jié)。在音樂(lè)檢索中,音樂(lè)的音高很精確,故不適宜用這些特征。本方法采用短時(shí)傅里葉變換(STFT)作為特征,由于STFT是完備變換,包含了所有細(xì)節(jié),更適宜于音樂(lè)檢索需求。參數(shù)如下:
[0056]窗長(zhǎng)(window): 1024點(diǎn)。兼顧頻域分辨率與時(shí)域短時(shí)平穩(wěn)性,經(jīng)測(cè)試此參數(shù)較好。
[0057]步長(zhǎng)(step_length):400點(diǎn)。使得頻譜是連續(xù)的。
[0058]漢明窗:防止頻域主瓣泄露。
[0059]3.在頻譜圖尾部補(bǔ)白,如圖5,在本實(shí)施例中采用補(bǔ)白代替切掉尾部,在識(shí)別的時(shí)候常常只有5秒左右錄音,可以充分利用信息。在本實(shí)施例中其補(bǔ)白長(zhǎng)度為:(int) (len/BLOCK1_LEN)*BL0CK1_LEN+AREA23_DELAY (8 幀)+AREA3_LEN (48 幀),
[0060]4.梯形帶通濾波,如圖6,由于在真實(shí)環(huán)境中,信道失真非常嚴(yán)重,尤其是在低頻、高頻。梯形帶通濾波目的是保留平坦的頻帶。去除高頻和低頻。在本實(shí)施例中的參數(shù):上升帶 600Hz-lIOOHz;平坦帶 1100Hz_2500Hz ;下降帶:2500Hz_3000Hz
[0061]5.第一個(gè)錨點(diǎn)的選取,經(jīng)過(guò)帶通濾波器后的頻譜圖如圖7。為顯示清楚,本實(shí)施例以100-200幀的局部區(qū)域?yàn)槔?,?jiàn)方框區(qū)域,將其放大后如圖8。網(wǎng)格為選擇第一個(gè)錨點(diǎn)時(shí)做的分割,將在下面詳述。
[0062]網(wǎng)格縱向?qū)㈩l域均勻切成三個(gè)部分,每個(gè)頻帶約102個(gè)點(diǎn)。橫向時(shí)域每8巾貞做分害I]。如此將頻譜圖切為若干塊,如圖6的矩形塊。每塊選取一個(gè)幅值最大(該幅值是指能量值)的點(diǎn)作為錨點(diǎn),如圖7的黑色點(diǎn)位置。如果區(qū)域內(nèi)所有點(diǎn)值為0,則隨機(jī)選擇一個(gè)點(diǎn)作為錨點(diǎn)。第一個(gè)錨點(diǎn)取值空間大小約為306。平均每秒選取7.5個(gè)第一錨點(diǎn)。
[0063]禁忌搜索:在每選取一個(gè)錨點(diǎn)之后,即將該點(diǎn)及附近5*5的區(qū)域賦O值。這樣做的原因是:[0064]1.若不設(shè)禁忌,可能會(huì)出現(xiàn)相鄰的兩個(gè)錨點(diǎn)。實(shí)驗(yàn)顯示,此情況下錯(cuò)誤的hit數(shù)可能會(huì)翻倍,如hit從4變到8。
[0065]2.產(chǎn)生上述情況的原因是錨點(diǎn)相關(guān)性大。選點(diǎn)盡量要去相關(guān),讓點(diǎn)獨(dú)立(即熵大),這樣才能減少碰撞,且獲得較好的桶。
[0066]6.第二錨塊選取,如圖9,選定第一個(gè)錨點(diǎn),在時(shí)移8幀后的矩形區(qū)域內(nèi)搜索第二錨塊,將矩形區(qū)域切分成若干個(gè)3*3小塊。在每個(gè)3*3小塊內(nèi)選擇最大的幅值作為該小塊值的代表。在區(qū)域內(nèi)選擇小塊值最大的小塊的作為第二錨塊。若區(qū)域內(nèi)所有小塊值為0,則隨機(jī)選擇一個(gè)小塊最為第二錨塊。
[0067]在矩形內(nèi)搜索的原因:第二個(gè)錨塊要保準(zhǔn)。矩形太大的話,由于信道不平穩(wěn),找的點(diǎn)就不準(zhǔn)了。矩形太小的話,可能音樂(lè)在此區(qū)域不存在頻譜。因此矩形大小需適中,經(jīng)試驗(yàn)如圖7中的參數(shù)大小較好,第二個(gè)錨塊取值空間大小為25*8=200。
[0068]使用3*3小塊代替1*1點(diǎn)的原因:(I)如上矩形內(nèi)取值空間6000個(gè)點(diǎn)太多了,hit的概率較低。使用3*3小塊可以使取值空間降至25*8=200,提高了 hit概率。(2)峰值點(diǎn)有時(shí)會(huì)上下左右漂移,使用3*3可以抗抖動(dòng)。
[0069]禁忌搜索:選擇第二個(gè)錨點(diǎn)之后,以該小塊中心的為中心點(diǎn),周?chē)?*5區(qū)域置O。這樣做的原因是:
[0070]避免第三個(gè)點(diǎn)塊和第二個(gè)錨點(diǎn)塊重疊,選點(diǎn)盡量要去相關(guān),讓點(diǎn)獨(dú)立(即熵大),這樣才能減少碰撞,且獲得較好的桶。
[0071]7.第三個(gè)錨塊的選取,如圖10,第三個(gè)錨塊依然以第一個(gè)錨點(diǎn)為參考,在時(shí)移8中貞后的大矩形區(qū)域內(nèi)搜索第三個(gè)2*2小塊。首先把大矩形區(qū)域分成了 8*4=32個(gè)小矩形區(qū)域。每個(gè)小矩形區(qū)域分為若干個(gè)2*2小塊。每個(gè)小矩形區(qū)域中只允許選擇一個(gè)小塊。在每個(gè)2*2小塊內(nèi)選擇最大的幅值作為該小塊值的代表。在小矩形內(nèi)選擇值最大的小塊。最后在大矩形內(nèi)一共選擇4個(gè)小塊,這4個(gè)小塊都是2*2的小塊。若大矩形內(nèi)所有小塊值為0,則隨機(jī)選擇剩余小塊。第三個(gè)小塊取值空間大小為24*72=1728。
[0072]大矩形區(qū)域中選4個(gè)點(diǎn)原因:理論上大矩形中選的點(diǎn)越多,hit的數(shù)目越高??紤]到內(nèi)存占用不能太大,故選4個(gè)點(diǎn),此時(shí)每秒的指紋數(shù)為7.5*4=30個(gè)。
[0073]細(xì)分成32個(gè)小矩形區(qū)域原因:若不作小矩形限制,常常有可能選擇的四個(gè)2*2小塊相鄰,相關(guān)性很大。若強(qiáng)行限制每個(gè)小矩形區(qū)域內(nèi)只能有一個(gè)2*2小塊,則2*2小塊在大矩形中分布更均勻,相關(guān)性降低,熵增大。
[0074]使用2*2小塊代替1*1點(diǎn)原因:(I)大矩形內(nèi)取值空間48*144=6912個(gè)點(diǎn)太多了,hit的概率較低。使用2*2小塊可以使取值空間降至8*25=200,提高了 hit概率。(2)峰值點(diǎn)有時(shí)會(huì)上下左右漂移,使用2*2小塊可以抗抖動(dòng)。
[0075]8.合并得到指紋
[0076]由第一錨點(diǎn)、第二錨塊和第三個(gè)小塊組合得到最終的指紋[fl,At2, Af2,At3, Af3],在本實(shí)施例中,fl是指第一錨點(diǎn)的取值空間,fl=306,At2是第二錨塊的時(shí)域取值空間,At2=8,Af2是第二錨塊的頻域取值空間,Af2=25 ;At3是第三錨塊的時(shí)域取值空間,At3=24,Λ f3是第三錨塊的頻域取值空間,Af3=72;取值空間為306*200*1728=105753600 約 2'26.65。
[0077]三、基于哈希表的快速檢索原理[0078]1.建表
[0079]為了實(shí)現(xiàn)快速檢索,故采用哈希表的方法。實(shí)現(xiàn)方法如圖11。記指紋空間為Ω大小,在指紋提取一節(jié)中講到Ω =105753600。
[0080]指紋值為索引,從O~(Ω-1)順序排列,每個(gè)指紋值對(duì)應(yīng)一個(gè)指針,因此對(duì)于給定的指紋值,可以在0(1)時(shí)間內(nèi)完成查找。在64為系統(tǒng)中,指針大小占8byte,桶的占用大小為 Ω X8byte ^ 846Mb。
[0081]每個(gè)指紋值對(duì)應(yīng)一個(gè)指針,指向一個(gè)〈songID,loct>鏈,代表此指紋出現(xiàn)在哪首歌曲的哪個(gè)位置。本系統(tǒng)使用一個(gè)int型代表〈songID, loct>。由于每秒20幀,故一分鐘歌曲需要的1ct空間大小為20X60 = 1200。本系統(tǒng)選擇1ct占14bit ^ 16384,支持最大歌曲長(zhǎng)度13分半左右。songID占18bit,支持歌曲數(shù)25萬(wàn)左右(若曲目多可以自行定義位數(shù))。
[0082]2.剪枝
[0083]由于指紋在空間Ω上分布是不均勻的(良好的指紋可以使其盡量均勻),所以桶的鏈長(zhǎng)也是不相同的,存在一定程度的病態(tài)。在病態(tài)的鏈上遍歷會(huì)很慢,因此在加載完大哈希表之后剪去這些病態(tài)的鏈,剪枝長(zhǎng)度常設(shè)為1000-3000。剪枝會(huì)使得正確曲目hit數(shù)目有細(xì)微減少,但可以提高搜索速度。
[0084]3.識(shí)別
[0085](1)對(duì)于輸入的音樂(lè)片段,首先提取指紋序列。如果輸入的片段和某首樂(lè)曲匹配,則如圖12,匹配的點(diǎn)落在一條線上。如果輸入片段與某首樂(lè)曲不匹配,則如圖13,只有零星的匹配點(diǎn)。
[0086]對(duì)每個(gè)指紋搜索時(shí),若發(fā)現(xiàn)匹配的〈songID,loct>,則更新匹配表,圖14。插入songID,并添加(1ct-片段的1ct)。對(duì)所有指紋搜索完畢后,可以得到一張最終的匹配表。
[0087](2)將匹配表的重復(fù)最多的1ct (及+1,-1位置)作為該曲目的hit數(shù)。
[0088](3)對(duì)hit數(shù)進(jìn)行排序,選擇最多的作為搜索結(jié)果。
[0089]4.其它
[0090]在進(jìn)行搜索時(shí),要對(duì)輸入音樂(lè)片段在前端補(bǔ)白8次分別進(jìn)行檢索。原因如圖15。在前面講到第一個(gè)錨點(diǎn)的BL0CK_LEN=8幀,只有在BLOCK的邊界對(duì)齊的情況下才能得到最佳匹配。假如輸入片段如上所示,BLOCK的邊界不對(duì)齊,特征點(diǎn)的提取就會(huì)不一致(如上圖)。在8次補(bǔ)白中,總有一次能使得邊界與原曲重合,此時(shí)的特征點(diǎn)重合最多,hit數(shù)也最多。因此需要進(jìn)行8次補(bǔ)白檢索。
[0091]顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說(shuō)明本發(fā)明所作的舉例,而并非是對(duì)本發(fā)明的實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在上述說(shuō)明的基礎(chǔ)上還可以做出其它不同形式的變化或變動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,包括: 構(gòu)建音樂(lè)指紋索引,輸入音頻信號(hào)并進(jìn)行預(yù)處理獲取音頻頻譜圖,在頻譜圖內(nèi)選取第一錨點(diǎn)、第二錨塊和第三錨塊進(jìn)行組合,得到指紋并將其插入到哈希表內(nèi),記錄該指紋出現(xiàn)的歌曲ID和在歌曲內(nèi)的位置; 音樂(lè)檢索,提取待檢索音樂(lè)片段的指紋序列,通過(guò)查找哈希表得到各指紋對(duì)應(yīng)的歌曲ID和歌曲位置鏈表,構(gòu)建歌曲ID與指紋對(duì)應(yīng)的匹配表,將匹配表內(nèi)重復(fù)最多的歌曲內(nèi)位置作為命中數(shù),將命中數(shù)最多的歌曲作為檢索結(jié)果; 所述第一錨點(diǎn)的獲取方式為:將頻譜圖切分為MXN塊,其中M是指將頻譜圖縱向頻域均勻劃分為M個(gè)頻帶,每個(gè)頻帶為a個(gè)點(diǎn);N是指將頻譜圖橫向時(shí)域以步長(zhǎng)b為單位切割為N個(gè)部分; 在每塊中選取一個(gè)幅值最大的點(diǎn)最為第一錨點(diǎn),并將第一錨點(diǎn)附近R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ; 所述第二錨塊的獲取方式為:以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第二錨塊;將該矩形區(qū)域劃分為X個(gè)3*3小塊,在每個(gè)3*3小塊內(nèi)選擇最大的幅值作為該3*3小塊的小塊代表值,在該矩形區(qū)域內(nèi)選擇小塊代表值最大的3*3小塊的作為第二錨塊,并以第二錨塊為中心將R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ; 所述第三錨塊的獲取方式為:以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第三錨塊;將該矩形區(qū)域劃分為Y個(gè)小矩形區(qū)域,每個(gè)小矩形區(qū)域劃分為I個(gè)2*2小塊;在每個(gè)2*2小塊內(nèi)選擇最大的幅值作為該2*2小塊的小塊代表值,在小矩形區(qū)域內(nèi)選取出幅值最大的2*2小塊,在大矩形內(nèi)選擇Z個(gè)2*2小塊。
2.根據(jù)權(quán)利要求1所·述的基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,所述預(yù)處理是通過(guò)對(duì)輸入的音頻信號(hào)進(jìn)行短時(shí)傅里葉變換獲取音頻頻譜圖,在頻譜圖尾部進(jìn)行補(bǔ)白,對(duì)補(bǔ)白后的頻譜圖進(jìn)行濾波。
3.根據(jù)權(quán)利要求2所述的基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,所述對(duì)補(bǔ)白后音頻頻譜圖進(jìn)行濾波方式是梯形帶通濾波。
4.根據(jù)權(quán)利要求1所述的基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,所述在音樂(lè)檢索時(shí),對(duì)待檢索音樂(lè)片段在前端補(bǔ)白若干次分別進(jìn)行檢索。
5.根據(jù)權(quán)利要求4所述的基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,所述在音樂(lè)檢索時(shí),對(duì)待檢索音樂(lè)片段在前端補(bǔ)白8次分別進(jìn)行檢索。
6.根據(jù)權(quán)利要求1所述的基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,所述b=8,R=5, Z=4。
7.根據(jù)權(quán)利要求1所述的基于音樂(lè)指紋特征的音樂(lè)檢索方法,其特征在于,還包括對(duì)音樂(lè)指紋索引中構(gòu)建的哈希表進(jìn)行剪枝。
8.一種基于音樂(lè)指紋特征的音樂(lè)檢索系統(tǒng),其特征在于,包括: 音樂(lè)指紋索引模塊,用于對(duì)輸入的音頻信號(hào)進(jìn)行預(yù)處理獲取音頻頻譜圖,在頻譜圖內(nèi)選取第一錨點(diǎn)、第二錨塊和第三錨塊進(jìn)行組合,得到指紋并將其插入到哈希表內(nèi),記錄該指紋出現(xiàn)的歌曲ID和在歌曲內(nèi)的位置; 音樂(lè)檢索模塊,用于提取待檢索音樂(lè)片段的指紋序列,通過(guò)查找哈希表得到各指紋對(duì)應(yīng)的歌曲ID和歌曲位置鏈表,構(gòu)建歌曲ID與指紋對(duì)應(yīng)的匹配表,將匹配表內(nèi)重復(fù)最多的歌曲內(nèi)位置作為命中數(shù),將命中數(shù)最多的歌曲作為檢索結(jié)果; 所述音樂(lè)指紋索引模塊還包括第一錨點(diǎn)選取模塊、第二錨塊選取模塊和第三錨塊選取模塊; 所述第一錨點(diǎn)選取模塊,是將頻譜圖切分為MXN塊,其中M是指將頻譜圖縱向頻域均勻劃分為M個(gè)頻帶,每個(gè)頻帶為a個(gè)點(diǎn)#是指將頻譜圖橫向時(shí)域以步長(zhǎng)b為單位切割為N個(gè)部分; 在每塊中選取一個(gè)幅值最大的點(diǎn)最為第一錨點(diǎn),并將第一錨點(diǎn)附近R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ; 所述第二錨塊選取模塊,是以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第二錨塊;將該矩形區(qū)域劃分為X個(gè)3*3小塊,在每個(gè)3*3小塊內(nèi)選擇最大的幅值作為該3*3小塊的小塊代表值,在該矩形區(qū)域內(nèi)選擇小塊代表值最大的3*3小塊的作為第二錨塊,并以第二錨塊為中心將R*R的區(qū)域內(nèi)的點(diǎn)賦值為O ; 所述第三錨塊選取模塊,是以第一錨點(diǎn)為起點(diǎn),在時(shí)移b幀后的矩形區(qū)域內(nèi)搜索第三錨塊;將該矩形區(qū)域劃分為Y個(gè)小矩形區(qū)域,每個(gè)小矩形區(qū)域劃分為I個(gè)2*2小塊;在每個(gè)2*2小塊內(nèi)選擇最大的幅值作為該2*2小塊的小塊代表值,在小矩形區(qū)域內(nèi)選取出幅值最大的2*2小塊,在大矩形內(nèi)選擇Z個(gè)2`*2小塊。
【文檔編號(hào)】G06F17/30GK103853836SQ201410095561
【公開(kāi)日】2014年6月11日 申請(qǐng)日期:2014年3月14日 優(yōu)先權(quán)日:2014年3月14日
【發(fā)明者】孔秋強(qiáng) 申請(qǐng)人:廣州酷狗計(jì)算機(jī)科技有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
上虞市| 红原县| 利辛县| 屏边| 高邑县| 揭东县| 扬中市| 宕昌县| 永定县| 元阳县| 东丰县| 长兴县| 海阳市| 宁安市| 洛隆县| 崇义县| 丹巴县| 芒康县| 理塘县| 霍城县| 彭水| 旺苍县| 宾阳县| 翁源县| 吉林市| 专栏| 重庆市| 漳浦县| 剑河县| 桦南县| 宜丰县| 西乡县| 池州市| 神农架林区| 临沂市| 乐陵市| 克什克腾旗| 台北市| 保靖县| 江阴市| 鹿邑县|