在線哼唱檢索方法及系統(tǒng)的制作方法
【技術領域】
[0001] 本發(fā)明涉及音樂檢索技術領域,具體涉及一種在線哼唱檢索方法及系統(tǒng)。
【背景技術】
[0002] 隨著信息技術和網絡技術的發(fā)展,音樂庫規(guī)模呈幾何級數(shù)增長,音樂歌曲的快速 檢索也成為新的研究熱點。傳統(tǒng)的音樂檢索方法主要基于文本關鍵字檢索,根據(jù)用戶輸入 的歌曲名、歌手、流派、歌詞等文本信息進行相關歌曲檢索。而當用戶只能哼唱出歌曲某一 片段,但無法提供確切的歌曲名、歌手等文本信息時,傳統(tǒng)的音樂檢索系統(tǒng)顯然無法滿足這 樣的檢索需求。為此,研究人員提出了音樂哼唱檢索技術,即根據(jù)用戶哼唱的歌曲片斷,從 音樂庫中挑選相應的歌曲。
[0003] 然而現(xiàn)有的哼唱檢索方案都是離線式的,即在用戶哼唱結束后才做音樂庫檢索, 那么用戶就需等待一段時間系統(tǒng)才能夠返回結果;且在大部分情況下,用戶自身并不知道 需要哼唱多久才能讓系統(tǒng)給出較為正確的檢索結果,用戶哼唱時間越長,系統(tǒng)響應時間就 越長。
【發(fā)明內容】
[0004] 本發(fā)明實施例提供一種在線哼唱檢索方法及系統(tǒng),以解決現(xiàn)有的離線哼唱檢索方 案用戶等待時間較長,體驗差的問題。
[0005] 為此,本發(fā)明提供如下技術方案:
[0006] 一種在線哼唱檢索方法,包括:
[0007] 接收用戶哼唱信息;
[0008] 實時對用戶哼唱信息進行檢索,得到匹配結果;所述實時對用戶哼唱信息進行檢 索包括實時提取所述哼唱信息的音頻特征的過程,以及實時將所述音頻特征與歌曲庫中歌 曲的音頻特征進行匹配的過程;所述音頻特征為:旋律特征、或者旋律特征及譜特征;
[0009] 判斷所述匹配結果是否可信;
[0010] 如果是,則停止檢索,并根據(jù)所述匹配結果獲取檢索結果;
[0011] 否則,判斷用戶哼唱是否結束;
[0012] 如果用戶哼唱未結束,則繼續(xù)執(zhí)行實時對用戶哼唱信息進行檢索的步驟;
[0013] 如果用戶哼唱已結束,則根據(jù)所述用戶當前已有哼唱信息獲取檢索結果。
[0014] 優(yōu)選地,實時提取所述哼唱信息的旋律特征的過程包括::
[0015] 對于首段哼唱,在用戶哼唱第一設定時間或第一設定個數(shù)的音符后,提取已有哼 唱信息的基頻信息,并將所述基頻信息轉換為首段哼唱對應的音符序列和/或基頻包絡特 征;
[0016] 對于非首段哼唱,每隔第二設定時間或第二設定個數(shù)的音符后,提取當前已有哼 唱信息中新的基頻信息;然后將上一次檢索處理時已有的音符序列中最后一個音符對應的 基頻信息與所述新的基頻信息拼接,并將拼接后的基頻信息作為本次提取的基頻信息;將 所述本次提取的基頻信息轉換為當前段哼唱對應的音符序列和/或基頻包絡特征。
[0017] 優(yōu)選地,所述實時將所述旋律特征與歌曲庫中歌曲的旋律特征進行匹配的過程包 括:
[0018] 采用序列匹配算法將所述當前已有哼唱信息對應的音符序列與模板庫中各模板 的音符序列進行匹配,得到匹配距離;
[0019] 選取最小的匹配距離作為匹配結果。
[0020] 優(yōu)選地,對于首段哼唱和非首段哼唱,采用不同的方法計算所述匹配距離,具體包 括:
[0021] 對于首段哼唱,采用編輯距離算法計算首段哼唱對應的音符序列與模板的音符序 列的編輯距離矩陣,得到匹配距離,并且在計算所述匹配距離時,待匹配的哼唱信息對應的 音符序列的最后一個音符不參與匹配過程;
[0022] 對于非首段哼唱,根據(jù)上一段哼唱實時匹配時計算得到的距離矩陣確定當前段哼 唱對應的音符序列與模板的音符序列在計算編輯距離時在所述模板的音符序列上的起始 占.
[0023] 根據(jù)所述起始點對當前段哼唱的音符序列對應的編輯距離矩陣進行邊界初始 化;
[0024] 更新所述編輯距離矩陣;
[0025] 根據(jù)更新后的編輯距離矩陣獲取當前已有哼唱的音符序列與所述模板的音符序 列之間最小的距離作為兩者間的匹配距離;
[0026] 對于首段哼唱和非首段哼唱,在匹配過程中,待匹配的哼唱信息對應的音符序列 的最后一個音符均不參與匹配過程。
[0027] 優(yōu)選地,實時提取所述哼唱信息的旋律特征的過程還包括:
[0028] 剔除上一次檢索處理時已有的音符序列中最后一個音符,,然后與本次基頻信息 轉換得到的音符序列拼接,得到當前已有哼唱對應的音符序列;
[0029] 將上一次檢索處理時已有的基頻包絡特征與本次基頻信息轉換得到的基頻包絡 特征拼接,得到當前已有哼唱對應的基頻包絡特征;
[0030] 對于首段哼唱和非首段哼唱,采用相同的方法計算所述匹配距離,并且在匹配過 程中,待匹配的哼唱信息對應的音符序列的最后一個音符均不參與匹配過程。
[0031] 優(yōu)選地,實時將所述旋律特征與歌曲庫中歌曲的旋律特征進行匹配的過程包括:
[0032] 采用序列匹配算法將當前已有哼唱對應的音符序列與模板庫中各模板的音符序 列進行匹配,得到第一匹配距離;
[0033] 利用動態(tài)時間規(guī)整算法將當前已有哼唱對應的基頻包絡特征與模板庫中各模板 的基頻包絡特征進行匹配,得到第二匹配距離;
[0034] 對所述第一匹配距離和所述第二匹配距離進行融合,得到第三匹配距離;
[0035] 選取最小的第三匹配距離作為匹配結果。
[0036] 一種在線哼唱檢索系統(tǒng),包括:
[0037] 接收模塊,用于接收用戶哼唱信息;
[0038] 實時檢索模塊,實時對用戶哼唱信息進行檢索,得到匹配結果;所述實時檢索模塊 包括:特征提取模塊及匹配模塊;
[0039] 所述特征提取模塊,用于實時提取所述哼唱信息的音頻特征;
[0040] 所述匹配模塊,用于實時將所述特征提取模塊提取的音頻特征與歌曲庫中歌曲的 音頻特征進行匹配,得到匹配結果;所述音頻特征為:旋律特征、或者旋律特征及譜特征;
[0041] 第一判斷模塊,用于判斷所述匹配結果是否可信;如果是,則通知所述實時檢索模 塊停止檢索;否則,觸發(fā)第二判斷模塊判斷用戶哼唱是否結束;
[0042] 檢索結果獲取模塊,用于在所述第一判斷模塊判斷所述匹配結果后,根據(jù)所述匹 配結果獲取檢索結果;
[0043] 所述第二判斷模塊,用于判斷用戶哼唱是否結束;如果是,則通知所述檢索結果獲 取模塊根據(jù)所述用戶當前已有哼唱信息獲取檢索結果;否則通知所述實時檢索模塊繼續(xù)執(zhí) 行實時對用戶哼唱信息進行檢索的操作。
[0044] 優(yōu)選地,所述特征提取模塊包括:
[0045] 基頻信息獲取單元,用于對于首段哼唱,在用戶哼唱第一設定時間或第一設定個 數(shù)的音符后,提取已有哼唱信息的基頻信息;對于非首段哼唱,每隔第二設定時間或第二設 定個數(shù)的音符后,提取當前已有哼唱信息中新的基頻信息;
[0046] 信息轉換單元,用于將所述基頻信息獲取單元提取的基頻信息轉換為音符序列和 /或基頻包絡特征;并且對于首段哼唱,將已有哼唱信息的基頻信息轉換為首段哼唱對應 的音符序列和/或基頻包絡特征;對于非首段哼唱,將上一次檢索處理時已有的音符序列 中最后一個音符對應的基頻信息與所述新的基頻信息拼接,并將拼接后的基頻信息作為本 次提取的基頻信息,然后將所述本次提取的基頻信息轉換為當前段哼唱對應的音符序列和 /或基頻包絡特征。
[0047] 優(yōu)選地,所述匹配模塊包括:
[0048] 計算單元,用于采用序列匹配算法將所述當前已有哼唱信息對應的音符序列與模 板庫中各模板的音符序列進行匹配,得到匹配距離;
[0049] 匹配結果選取單元,用于選取最小的匹配距離作為匹配結果。
[0050] 優(yōu)選地,所述計算單元對于首段哼唱和非首段哼唱,采用不同的方法計算所述匹 配距離,具體包括:
[0051] 對于首段哼唱,采用編輯距離算法計算首段哼唱對應的音符序列與模板的音符序 列的編輯距離矩陣,得到匹配距離,并且在計算所述匹配距離時,待匹配的哼唱信息對應的 音符序列的最后一個音符不參與匹配過程;
[0052] 對于非首段哼唱,根據(jù)上一段哼唱實時匹配時計算得到的距離矩陣確定當前段哼 唱對應的音符序列與模板的音符序列在計算編輯距離時在所述模板的音符序列上的起始 占 .
[0053] 根據(jù)所述起始點對當前段哼唱的音符序列對應的編輯距離矩陣進行邊界初始 化;
[0054] 更新所述編輯距離矩陣;
[0055] 根據(jù)更新后的編輯距離矩陣獲取當前已有哼唱的音符序列與所述模板的音符序 列