一種構(gòu)建在線實時更新海量音頻指紋庫的方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及音頻指紋識別技術(shù)領(lǐng)域,具體涉及一種構(gòu)建在線實時更新海量音頻指紋庫的方法和設(shè)備。
【背景技術(shù)】
[0002]音頻指紋識別(俗稱“聽音識曲”)是一種新興的音樂搜索技術(shù),該技術(shù)通過分析音頻文件的頻譜,提取稱為“音頻指紋”的數(shù)字特征,并使用數(shù)字特征構(gòu)建“海量音頻指紋庫”,部署于網(wǎng)絡(luò)服務(wù)器上,客戶端可將錄制的未知音頻片段發(fā)送到服務(wù)器,服務(wù)器使用相同的算法提取“音頻指紋”,然后通過搜索算法在海量音頻指紋庫中查找相似特征,并根據(jù)找到的若干特征推測目標音頻文件,將結(jié)果返回給客戶端即完成了整個識別過程。音頻指紋識別是一種兼具數(shù)據(jù)密集型和計算密集型的應(yīng)用:海量音頻指紋庫必須包含足夠多的音頻文件的特征,才能保證應(yīng)用的識別率,該規(guī)模通常為千萬級;搜索算法的計算量巨大,為了保證搜索速度,通常首先離線構(gòu)建指紋庫,并進行序列化處理生成一個文件,以使數(shù)據(jù)連續(xù)存儲,避免過多指針跳轉(zhuǎn)操作,然后將索引文件完全加載到內(nèi)存中提供檢索服務(wù)。
[0003]現(xiàn)有技術(shù)中海量音頻指紋庫的更新方法,由于索引數(shù)據(jù)連續(xù)存儲在一塊內(nèi)存中,通常的解決方案很難支持在線添加、刪除音頻指紋索引數(shù)據(jù),故每次更新均需將服務(wù)器重啟。圖1所示,現(xiàn)有的解決方案一般將海量音頻指紋索引庫劃分為多個固定小的音頻指紋庫(塊1、塊2……塊η),積攢一定數(shù)量的新數(shù)據(jù)后,需要離線重建最后一個不滿的音頻指紋庫(塊η),然后重新啟動服務(wù)(重啟服務(wù)更新塊η),將最新的音頻指紋庫替換到線上。由此可知,離線建庫,重啟服務(wù)的索引數(shù)據(jù)更新方法具有操作繁瑣、更新不及時等固有缺陷,無法提供及時的新歌搜索服務(wù),因此,研發(fā)一種在線實時更新海量音頻指紋庫索引數(shù)據(jù)的方法成為一種必需。
【發(fā)明內(nèi)容】
[0004]為此,本發(fā)明提供一種構(gòu)建在線實時更新音頻指紋庫的方法和設(shè)備,解決現(xiàn)有技術(shù)中海量音頻指紋庫不方便在線實時更新的技術(shù)問題。
[0005]為此,本發(fā)明提供一種構(gòu)建在線實時更新音頻指紋庫的方法,包括:建立具有相同key值的音頻指紋與所述key值的對應(yīng)關(guān)系;建立包含每個key值與其對應(yīng)音頻指紋的索引列表,使索引列表中的每一個key值均以指針的形式指向其對應(yīng)的音頻指紋;以及將具有相同key值的音頻指紋連續(xù)存儲。
[0006]根據(jù)本發(fā)明的一個實施方式,其中,建立具有相同key值的音頻指紋與所述key值的對應(yīng)關(guān)系包括:將具有相同key值的音頻指紋劃分為同一數(shù)組;并且其中,建立包含每個key值與其對應(yīng)音頻指紋的索引列表包括:使所述索引列表包括數(shù)量與key值數(shù)量相同的數(shù)組。
[0007]根據(jù)本發(fā)明的一個實施方式,其中,進一步包括:在線添加音頻指紋,包括:將待添加音頻指紋按照其對應(yīng)key值進行分組,每組中的所述待添加音頻指紋具有相同的對應(yīng)key值;在所述索引列表中查找與所述對應(yīng)key值相同的key值,以定位待更新音頻指紋;復(fù)制所述待更新音頻指紋;將具有相同key值的待更新音頻指紋和所述待添加音頻指紋連續(xù)存放,以獲得新音頻指紋;將所述索引列表中指向所述待更新音頻指紋的key值的指針,指向所述新音頻指紋;將所述待更新音頻指紋延遲刪除。
[0008]根據(jù)本發(fā)明的一個實施方式,其中,若所述待添加音頻指紋中的key值不包含在所述索引列表中,則將其視為新建key值;將所述新建key值連續(xù)添加至所述索引列表中后,將與所述新建key值相對應(yīng)的音頻指紋連續(xù)存放在所述待更新音頻指紋中。
[0009]根據(jù)本發(fā)明的一個實施方式,其中,進一步包括:在線刪除音頻指紋,包括:將待刪除音頻指紋按照所述key值進行分組,每組中的所述待刪除音頻指紋具有相同的對應(yīng)key值;在所述索引列表中查找與所述對應(yīng)key值相同的key值,以定位待消除音頻指紋;復(fù)制所述待消除音頻指紋;將復(fù)制的所述待消除音頻指紋中與位于所述分組中音頻指紋相同的音頻指紋刪除,獲得新音頻指紋;將所述索引列表中指向所述待消除音頻指紋的key值處的指針,指向所述新音頻指紋;將所述待消除音頻指紋延遲刪除。
[0010]根據(jù)本發(fā)明的一個實施方式,其中,所述延遲刪除,通過后臺線程加以實現(xiàn)。
[0011]為此,本發(fā)明提供一種構(gòu)建在線實時更新音頻指紋庫的設(shè)備,包括:用于建立具有相同key值的音頻指紋與所述key值的對應(yīng)關(guān)系的裝置;用于建立包含每個key值與其對應(yīng)音頻指紋的索引列表的裝置,所述索引列表中的每一個key值均以指針的形式指向其對應(yīng)的音頻指紋;以及用于將具有相同key值的音頻指紋連續(xù)存儲的裝置。
[0012]根據(jù)本發(fā)明的一個實施方式,其中,進一步包括:用于在線添加音頻指紋的裝置,包括:用于將待添加音頻指紋按照其對應(yīng)key值進行分組,每組中的所述待添加音頻指紋具有相同的對應(yīng)key值的裝置;用于在所述索引列表中查找與所述對應(yīng)key值相同的key值,以定位待更新音頻指紋的裝置;用于復(fù)制所述待更新音頻指紋的裝置;用于將具有相同key值的待更新音頻指紋和所述待添加音頻指紋連續(xù)存放,以獲得新音頻指紋的裝置;用于將所述索引列表中指向所述待更新音頻指紋的key值的指針,指向所述新音頻指紋的裝置;用于將所述待更新音頻指紋延遲刪除的裝置。
[0013]根據(jù)本發(fā)明的一個實施方式,其中,進一步包括:用于在線刪除音頻指紋的裝置,包括:用于將待刪除音頻指紋按照所述key值進行分組,每組中的所述待刪除音頻指紋具有相同的對應(yīng)key值的裝置;用于在所述索引列表中查找與所述對應(yīng)key值相同的key值,以定位待消除音頻指紋的裝置;用于復(fù)制所述待消除音頻指紋的裝置;用于將復(fù)制的所述待消除音頻指紋中與位于所述分組中音頻指紋相同的音頻指紋刪除,獲得新音頻指紋的裝置;用于將所述索引列表中指向所述待消除音頻指紋的key值處的指針,指向所述新音頻指紋的裝置;用于將所述待消除音頻指紋延遲刪除的裝置。
[0014]本發(fā)明通過提供一種構(gòu)建在線實時更新音頻指紋庫的方法,可使在線服務(wù)引擎支持實時添加、刪除歌曲指紋,可在I秒鐘之內(nèi)完成,而且不會影響搜索服務(wù),避免了離線建庫、重啟服務(wù)所帶來的繁瑣和耗時的工作,同時保證了海量音頻指紋庫的數(shù)據(jù)時效性,可隨時將最新的歌曲添加到在線服務(wù),并可將過期或出現(xiàn)問題的歌曲從在線服務(wù)中刪除,實現(xiàn)了秒級的數(shù)據(jù)更新需求響應(yīng)能力,對于數(shù)據(jù)即服務(wù)的音頻檢索服務(wù)來說意義重大。
[0015]進一步的,本發(fā)明打破了嚴格數(shù)據(jù)連續(xù)性的限制條件,將海量音頻指紋庫按照鍵(key值)進行劃分,每個鍵(key值)的音頻指紋(value)依然是連續(xù)存放的,這樣,雖帶來了少量了地址跳轉(zhuǎn)操作,但避免了多個索引塊的設(shè)計,索引結(jié)構(gòu)為一個整體,搜索時無需遍歷多個索引塊,因此,整體性能有所提高。
[0016]進一步的,本發(fā)明提出的通過更新并替換每個鍵(key值)的音頻指紋(value)的方法實現(xiàn)了在線實時添加、刪除歌曲指紋,并通過異步、延遲刪除過期數(shù)據(jù),異步持久化數(shù)據(jù)到文件中等方法,可保證在線搜索服務(wù)不受索引更新工作的影響,從而實現(xiàn)了對實時數(shù)據(jù)更新需求的響應(yīng)。
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為現(xiàn)有技術(shù)中海量音頻指紋庫更新方法示意圖;
[0019]圖2為本發(fā)明實施例1中構(gòu)建在線實時更新音頻指紋庫的方法流程圖;
[0020]圖3為本發(fā)明實施例1中具有相同key值的音頻指紋與所述key值的對應(yīng)關(guān)系示意圖;
[0021]圖4為本發(fā)明實施例2中索引列表的一個實施方式步驟示意圖;
[0022]圖5為本發(fā)明實施例2中索引列表結(jié)構(gòu)示意圖;
[0023]圖6為本發(fā)明實施例2中建立包含每個key值與其對應(yīng)音頻指紋的索引列表的具體操作流程示意圖;
[0024]圖7為本發(fā)明實施例3中構(gòu)建在線實時更新音頻指紋庫的方法流程圖;
[0025]圖8為本發(fā)明實施例3中在線添加音頻指紋操作流程圖;
[0026]圖9為本發(fā)明實施例3中延遲刪除操作流程圖;
[0027]圖10為本發(fā)明實施例3中特殊情況下在線添加音頻指紋操作流程圖;
[0028]圖11為本發(fā)明實施例4中在線添加音頻指紋操作流程圖;
[0029]圖12為本發(fā)明實施例4中在線刪除音頻指紋操作流程圖;
[0030]圖13為本發(fā)明實施例5中構(gòu)建在線實時更新音頻指紋庫的設(shè)備結(jié)構(gòu)示意圖;
[0031]圖14為本發(fā)明實施例6中構(gòu)建在線實時更新音頻指紋庫的設(shè)備結(jié)構(gòu)示意圖;
[0032]圖15為本發(fā)明實施例6中用于在線添加音頻指紋的裝置結(jié)構(gòu)示意圖;
[0033]圖16為本發(fā)明實施例7中構(gòu)建在線實時更新音頻指紋庫的設(shè)備結(jié)構(gòu)示意圖;
[0034]圖17為本發(fā)明實施例7中用于在線刪除音頻指紋的裝置結(jié)構(gòu)示意圖;
[0035]圖18為本發(fā)明支持在線實時更新的海量音頻指紋庫結(jié)構(gòu)示意圖;
[0036]圖19為本發(fā)明在線實時添加音頻指紋的方法示意圖;
[0037]圖20為本發(fā)明在線實時刪除音頻指紋的方法示意圖。
【具體實施方式】
[0038]下面結(jié)合說明書附圖及實施例,對本發(fā)明的【具體實施方式】作