哼唱檢索方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及音樂檢索技術(shù)領(lǐng)域,具體涉及一種哼唱檢索方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,音樂庫規(guī)模呈幾何級數(shù)增長,音樂歌曲的快速檢索也成為新的研究熱點。傳統(tǒng)的音樂檢索方法主要基于文本關(guān)鍵字檢索,根據(jù)用戶輸入的歌曲名、歌手、流派、歌詞等文本信息進行相關(guān)歌曲檢索。而當(dāng)用戶只能哼唱出歌曲某一片段,但無法提供確切的歌曲名、歌手等文本信息時,傳統(tǒng)的音樂檢索系統(tǒng)顯然無法滿足這樣的檢索需求。為此,研究人員提出了音樂哼唱檢索技術(shù),即根據(jù)用戶哼唱的歌曲片斷,從音樂庫中挑選相應(yīng)的歌曲。
[0003]現(xiàn)有的哼唱檢索系統(tǒng)大都采用基于歌曲旋律特征匹配的檢索方法,S卩比較用戶輸入歌曲片斷和音樂庫中的歌曲在旋律特征上的相似度。具體地,首先從用戶輸入歌曲片斷中提取旋律特征,隨后和系統(tǒng)預(yù)置的歌曲庫中的各歌曲旋律特征模板一一匹配,并選擇具有最大相似度的歌曲為期望歌曲。所述歌曲旋律是指連續(xù)的有音調(diào)(或稱為音高)、有節(jié)奏的音樂音符序列,旋律特征可以用音符序列或音高曲線的形式表示。
[0004]現(xiàn)有的基于歌曲旋律特征匹配的檢索方法雖然解決了上述問題,但依然存在以下問題:
[0005]1.旋律特征音符序列提取中音符分割不準確或用戶哼唱的歌曲存在跑調(diào)等問題時,提取的旋律信息無法正確表征歌曲特點,影響檢索結(jié)果的準確率;
[0006]2.隨著音樂庫規(guī)模的擴大,歌曲之間的旋律特征區(qū)分性減弱,現(xiàn)有的基于歌曲旋律特征匹配的檢索方法的檢索結(jié)果準確率容易受到音樂庫規(guī)模的影響。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實施例提供一種哼唱檢索方法及系統(tǒng),以提高檢索結(jié)果的準確率。
[0008]為此,本發(fā)明提供如下技術(shù)方案:
[0009]一種哼唱檢索方法,包括:
[0010]獲取用戶哼唱歌曲片段;
[0011]提取所述哼唱歌曲片段的旋律特征及頻譜特征;
[0012]根據(jù)所述旋律特征從所述歌曲庫中選擇候選歌曲;
[0013]將所述頻譜特征與所述候選歌曲的頻譜特征進行匹配,得到頻譜相似度;
[0014]根據(jù)所述頻譜相似度、或者根據(jù)所述頻譜相似度及所述旋律相似度,對所述候選歌曲進行排序。
[0015]優(yōu)選地,所述根據(jù)所述旋律特征從所述歌曲庫中選擇候選歌曲包括:
[0016]將所述旋律特征與歌曲庫中歌曲的旋律特征進行匹配,得到旋律相似度;
[0017]根據(jù)所述旋律相似度從所述歌曲庫中選擇候選歌曲。
[0018]優(yōu)選地,所述旋律特征包括:音符序列表示的旋律特征或基頻包絡(luò)表示的旋律特征;
[0019]所述將所述旋律特征與歌曲庫中歌曲的旋律特征進行匹配,得到旋律相似度包括:
[0020]對于音符序列表示的旋律特征,利用序列匹配算法計算所述旋律特征與歌曲庫中歌曲的旋律特征的相似度;
[0021]對于基頻包絡(luò)表示的旋律特征,利用動態(tài)時間規(guī)整算法計算所述旋律特征與歌曲庫中歌曲的旋律特征的相似度。
[0022]優(yōu)選地,所述旋律特征包括:音符序列表示的旋律特征和基頻包絡(luò)表示的旋律特征;
[0023]所述將所述旋律特征與歌曲庫中歌曲的旋律特征進行匹配,得到旋律相似度包括:
[0024]計算所述哼唱歌曲片段的音符序列與歌曲庫中待匹配歌曲的音符序列中各子音符序列的相似度;
[0025]選擇待匹配歌曲的音符序列中與所述哼唱歌曲片段的音符序列相似度最大的子音符序列,并確定所述子音符序列的起止時間點;
[0026]計算所述哼唱歌曲片段的基頻包絡(luò)與所述待匹配歌曲在所述起止時間點內(nèi)的基頻包絡(luò)的相似度;
[0027]將所述基頻包絡(luò)的相似度作為旋律相似度;或者
[0028]將所述基頻包絡(luò)的相似度與對應(yīng)的最大子音符序列的相似度進行融合,并將融合結(jié)果作為旋律相似度。
[0029]優(yōu)選地,所述根據(jù)所述旋律相似度從所述歌曲庫中選擇候選歌曲包括:
[0030]選擇旋律相似度大于設(shè)定閾值的歌曲作為候選歌曲;或者
[0031]按照旋律相似度由大到小的順序選擇設(shè)定個數(shù)的歌曲作為候選歌曲。
[0032]優(yōu)選地,所述旋律特征包括:音符序列表示的旋律特征和基頻包絡(luò)表示的旋律特征;
[0033]所述根據(jù)所述旋律特征從所述歌曲庫中選擇候選歌曲包括:
[0034]計算所述哼唱歌曲片段的音符序列與歌曲庫中歌曲的音符序列的相似度;
[0035]根據(jù)所述音符序列的相似度從所述歌曲庫中選擇初選歌曲;
[0036]計算所述哼唱歌曲片段的基頻包絡(luò)與所述初選歌曲的基頻包絡(luò)的相似度;
[0037]根據(jù)所述基頻包絡(luò)的相似度、或者根據(jù)所述基頻包絡(luò)的相似度及所述音符序列的相似度,對所述初選歌曲進行裁剪,得到候選歌曲。
[0038]優(yōu)選地,所述將所述頻譜特征與所述候選歌曲的頻譜特征進行匹配,得到頻譜相似度包括:
[0039]采用動態(tài)時間規(guī)整算法計算所述頻譜特征與所述候選歌曲的頻譜特征的頻譜相似度。
[0040]一種哼唱檢索系統(tǒng),包括:
[0041]獲取模塊,用于獲取用戶哼唱歌曲片段;
[0042]特征提取模塊,用于提取所述哼唱歌曲片段中的旋律特征及頻譜特征;
[0043]選擇模塊,用于根據(jù)所述旋律特征從所述歌曲庫中選擇候選歌曲;
[0044]頻譜特征匹配模塊,用于將所述頻譜特征與所述候選歌曲的頻譜特征進行匹配,得到頻譜相似度;
[0045]排序模塊,用于根據(jù)所述頻譜相似度、或者根據(jù)所述頻譜相似度及所述旋律相似度,對所述候選歌曲進行排序。
[0046]優(yōu)選地,所述選擇模塊包括:
[0047]旋律特征匹配模塊,用于將所述旋律特征與歌曲庫中歌曲的旋律特征進行匹配,得到旋律相似度;
[0048]候選模塊,用于根據(jù)所述旋律相似度從所述歌曲庫中選擇候選歌曲。
[0049]優(yōu)選地,所述旋律特征包括:音符序列表示的旋律特征或基頻包絡(luò)表示的旋律特征;
[0050]所述旋律特征匹配模塊,具體用于對于音符序列表示的旋律特征,利用序列匹配算法計算所述旋律特征與歌曲庫中歌曲的旋律特征的相似度;或者對于基頻包絡(luò)表示的旋律特征,利用動態(tài)時間規(guī)整算法計算所述旋律特征與歌曲庫中歌曲的旋律特征的相似度。
[0051]優(yōu)選地,所述旋律特征包括:音符序列表示的旋律特征和基頻包絡(luò)表示的旋律特征;
[0052]所述旋律特征匹配模塊包括:
[0053]第一計算單元,用于計算所述哼唱歌曲片段的音符序列與歌曲庫中待匹配歌曲的音符序列中各子音符序列的相似度;
[0054]選擇單元,用于選擇待匹配歌曲的音符序列中與所述哼唱歌曲片段的音符序列相似度最大的子首符序列;
[0055]確定單元,用于確定所述相似度最大的子音符序列的起止時間點;
[0056]第二計算單元,用于計算所述哼唱歌曲片段的基頻包絡(luò)與所述待匹配歌曲在所述起止時間點內(nèi)的基頻包絡(luò)的相似度;
[0057]輸出單元,用于將所述基頻包絡(luò)的相似度作為旋律相似度輸出。
[0058]優(yōu)選地,所述旋律特征匹配模塊還包括:
[0059]融合單元,用于將所述基頻包絡(luò)的相似度與對應(yīng)的最大子音符序列的相似度進行融合;
[0060]所述輸出單元,用于將所述融合單元得到的融合結(jié)果作為旋律相似度輸出。
[0061]優(yōu)選地,所述選擇模塊,具體選擇旋律相似度大于設(shè)定閾值的歌曲作為候選歌曲;或者按照旋律相似度由大到小的順序選擇設(shè)定個數(shù)的歌曲作為候選歌曲。
[0062]優(yōu)選地,所述旋律特征包括:音符序列表示的旋律特征和基頻包絡(luò)表示的旋律特征;
[0063]所述選擇模塊包括:
[0