專利名稱:音頻指紋識別系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及自動識別未知的音頻片段(audio piece),并且特別涉及一種通過未知的音頻片段的音頻指紋(audio fingerprint)來對其進(jìn)行有效識別的系統(tǒng)和方法。
背景技術(shù):
人們通常希望通過分析音頻片段的音頻信號的內(nèi)容來對音頻片段進(jìn)行自動識別,尤其是當(dāng)沒有與音頻片段相關(guān)聯(lián)的描述性數(shù)據(jù)時?,F(xiàn)有技術(shù)的指紋識別系統(tǒng)一般允許基于片段的任意部分來識別音頻片段。指紋數(shù)據(jù)庫中的指紋通常被進(jìn)行時間索引,以允許基于任意部分生成的指紋與已存儲的指紋適當(dāng)對準(zhǔn)。時基的指紋識別系統(tǒng)因而添加了一個附加的復(fù)雜步驟,即在執(zhí)行任何對比之前在指紋數(shù)據(jù)庫中定位正確的段(segment)。
如果可以對可用于指紋識別的音頻片段部分做出假設(shè),則生成并存儲時間索引的音頻指紋就是多余的。例如,如果已知將要識別的音頻片段從片段的一開始就一直是可用的,則不必針對不同的時間片保持音頻片段的時間索引的指紋,也不必將查詢指紋與已存儲的指紋進(jìn)行時間校準(zhǔn)。
現(xiàn)有技術(shù)的指紋識別系統(tǒng)遇到的另一個問題是,隨著在指紋數(shù)據(jù)庫中登記的指紋數(shù)的增加,獲得匹配所花費(fèi)的時間也在增加。
因此,需要一種可提供可靠、快速且強(qiáng)大的音頻片段識別的指紋識別系統(tǒng)。這樣的系統(tǒng)應(yīng)當(dāng)配置成減少執(zhí)行識別時的搜索空間,以獲得更好的匹配精度和速度。
發(fā)明內(nèi)容
依照一個實施例,本發(fā)明是一種用于從多個音頻片段中進(jìn)行選擇的方法,該方法包括接收第一音頻片段的音頻指紋;搜索數(shù)據(jù)庫尋找音頻指紋;檢索與音頻指紋相關(guān)聯(lián)的音頻簡介向量(audio profilevector),該音頻簡介向量量化與音頻片段相關(guān)聯(lián)的多個屬性;基于該音頻簡介向量更新用戶優(yōu)選信息;以及基于該用戶優(yōu)選信息選擇第二音頻片段。
依照另一個實施例,本發(fā)明是一種音頻指紋識別方法,包括接收與音頻片段相關(guān)聯(lián)的音頻信號;獲取所述音頻信號的多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;將檢索到的矩陣VT的行與所述音頻片段相關(guān)聯(lián);以及將檢索到的矩陣VT的行存儲在數(shù)據(jù)存儲器中。
依照另一個實施例,本發(fā)明是一種音頻索引方法,包括接收音頻片段的音頻信號;自動地從所述音頻信號中獲取包含在所述音頻片段中的音符列表;從所述音頻信號中確定所述音頻片段中的音符的突出部分;選擇所述音頻片段中最突出的音符的預(yù)定編號;基于所選擇的音符生成索引;以及基于所生成的索引搜索數(shù)據(jù)庫。
依照另一個實施例,本發(fā)明是一種生成音頻類別的標(biāo)識符的方法,該方法包括選擇多個與所述音頻類別相關(guān)聯(lián)的音頻片段;對每個所選擇的音頻片段計算音頻指紋;計算所述計算出的音頻指紋的平均值;基于該計算生成平均指紋;將平均指紋與所述音頻類別相關(guān)聯(lián);以及將平均指紋存儲在數(shù)據(jù)存儲器內(nèi)。
依照另一個實施例,本發(fā)明是一種音頻選擇系統(tǒng),包括存儲有多個音頻片段的多個音頻指紋的第一數(shù)據(jù)存儲器;存儲有多個音頻指紋的多個音頻簡介向量的第二數(shù)據(jù)存儲器,每個音頻簡介向量量化與對應(yīng)于所述音頻指紋的音頻片段相關(guān)聯(lián)的多個屬性;搜索第一數(shù)據(jù)存儲器以尋找第一音頻片段的音頻指紋的裝置;從第二數(shù)據(jù)存儲器中檢索與所述音頻指紋相關(guān)聯(lián)的音頻簡介向量的裝置;基于所檢索的音頻簡介向量更新用戶優(yōu)選信息的裝置;以及基于用戶優(yōu)選信息選擇第二音頻片段的裝置。
依照另一個實施例,本發(fā)明是一種音頻指紋識別系統(tǒng),包括處理器,該處理器被配置為接收與音頻片段相關(guān)聯(lián)的音頻信號;獲取音頻信號的多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;將檢索到的矩陣VT的行與音頻片段相關(guān)聯(lián)。該音頻指紋識別系統(tǒng)也包括連接到處理器的、用于存儲檢索到的矩陣VT的行的數(shù)據(jù)存儲器。
依照另一個實施例,本發(fā)明是一種音頻索引系統(tǒng),包括接收音頻片段的音頻信號的裝置;自動地從音頻信號中獲取包含在音頻片段中的音符列表的裝置;從音頻信號中確定音頻片段中的音符的突出部分的裝置;選擇音頻片段中最突出的音符的預(yù)定編號的裝置;基于所選擇的音符生成索引的裝置;以及基于所生成的索引搜索數(shù)據(jù)庫的裝置。
依照另一個實施例,本發(fā)明是一種生成音頻類別的標(biāo)識符的系統(tǒng),該系統(tǒng)包括對多個所選擇的音頻片段中的每一個計算音頻指紋的裝置;計算所計算出的音頻指紋的平均值的裝置;將所計算的平均值與音頻類別相關(guān)聯(lián)的裝置;以及將所計算的平均值存儲在數(shù)據(jù)存儲器內(nèi)的裝置。
依照另一個實施例,本發(fā)明是一種包括計算機(jī)可讀介質(zhì)的產(chǎn)品,該計算機(jī)可讀介質(zhì)具有計算機(jī)可用的程序代碼,所述程序代碼包含可執(zhí)行指令,當(dāng)執(zhí)行所述指令時,使計算機(jī)執(zhí)行如下步驟獲取與音頻片段相關(guān)聯(lián)的音頻信號的多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;將檢索到的矩陣VT的行與音頻片段相關(guān)聯(lián);以及將檢索到的矩陣VT的行存儲在數(shù)據(jù)存儲器中。
依照另一個實施例,本發(fā)明是一種包括計算機(jī)可讀介質(zhì)的產(chǎn)品,該計算機(jī)可讀介質(zhì)具有計算機(jī)可用的程序代碼,所述程序代碼包含可執(zhí)行指令,當(dāng)執(zhí)行所述指令時,使計算機(jī)執(zhí)行以下步驟自動地從音頻片段的音頻信號中獲取包含在音頻片段中的音符列表;從音頻信號中確定音頻片段中的音符的突出部分;選擇音頻片段中最突出的音符的預(yù)定編號;基于所選擇的音符生成索引;以及基于所生成的索引搜索數(shù)據(jù)庫。
參照以下的詳細(xì)說明、附加的權(quán)利要求以及附圖,將會對本發(fā)明的上述和其它的特征、方面和優(yōu)點(diǎn)有更充分的理解。當(dāng)然,本發(fā)明的實際的范圍是由附加的權(quán)利要求限定的。
圖1是本發(fā)明一個實施例的音頻指紋識別系統(tǒng)的示意性框圖;圖2是本發(fā)明一個實施例的生成音頻指紋的進(jìn)程的流程圖;圖3是本發(fā)明一個實施例的分析所提取的音頻指紋以尋找與已登記的指紋的匹配的進(jìn)程的流程圖;圖4是本發(fā)明的可選實施例的分析所提取的音頻指紋以尋找與已登記的指紋的匹配的進(jìn)程的流程圖;圖5是本發(fā)明一個實施例的向音頻片段分配數(shù)據(jù)庫索引的進(jìn)程的流程圖;圖6是本發(fā)明一個實施例的生成特定音樂類別的標(biāo)識符的進(jìn)程的流程圖;圖7是本發(fā)明一個實施例的具有一個或多個利用圖1的音頻指紋識別系統(tǒng)的設(shè)備的計算機(jī)網(wǎng)絡(luò)的示意性框圖。
具體實施例方式
圖1是本發(fā)明一個實施例的音頻指紋識別系統(tǒng)10的示意性框圖。該系統(tǒng)包括音頻文件讀取器12,用于讀取不同類型的音頻文件11或者音頻輸入,并用于輸出wave(.wav)、MP3文件等。音頻文件讀取器12可以是例如CD播放器、DVD播放器、硬盤驅(qū)動器等。文件讀取器12可以連接到用于對音頻文件讀取器12輸出的MP3文件進(jìn)行解碼的MP3解碼器14。也可以使用其它類型的解碼器來對其它類型的編碼音頻文件進(jìn)行解碼。
提供給音頻文件讀取器12的音頻文件11可以是要進(jìn)行識別或登記的整個音頻片段或部分音頻片段。依照本發(fā)明的一個實施例,音頻文件至少包含音頻片段的第一個30秒。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識到更短或更長的段也可以用在可選實施例中。
接收到的音頻文件11被傳送到音樂預(yù)處理器16,依照本發(fā)明的一個實施例,該音樂預(yù)處理器16被配置為在分析音頻文件之前采取特定的預(yù)處理步驟。典型的預(yù)處理步驟可以包括歸一化音頻信號以確保對于所有音頻樣本來說信號中的最高電平是相同的;將音頻數(shù)據(jù)從立體聲轉(zhuǎn)換為單聲道;以及刪除音頻文件中的無聲部分等。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識到可以刪除預(yù)處理步驟,或者預(yù)處理步驟可以包括現(xiàn)有技術(shù)中常規(guī)的其它類型的音頻預(yù)處理步驟。
預(yù)處理器16被連接到指紋提取引擎18、指紋分析引擎20、索引引擎22和類別識別引擎24。依照本發(fā)明的一個實施例,這些引擎是執(zhí)行存儲在存儲器中的指令的處理器。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識到,這些引擎可以以硬件、固件(例如ASIC)或者硬件、固件和軟件的組合來實現(xiàn)。
依照本發(fā)明的一個實施例,指紋提取引擎18自動生成音頻文件11的簡潔表示(以下稱為簽名指紋),以用作音頻片段的唯一標(biāo)識符。依照本發(fā)明的一個實施例,將音頻指紋表示為矩陣。
指紋分析引擎20分析指紋提取引擎18生成的音頻指紋,以找到與指紋數(shù)據(jù)庫26中的已登記指紋的匹配。基于該匹配,指紋分析引擎或者連接到指紋分析引擎的獨(dú)立的引擎(未示出)檢索與音頻片段相關(guān)聯(lián)的附加數(shù)據(jù)。附加數(shù)據(jù)例如可以是音頻簡介向量(audio profilevector),該向量描述了音頻片段的各種屬性,并在2002年10月23日申請的序列號為10/278636的美國專利申請中有更詳細(xì)的描述,該申請的內(nèi)容通過引用結(jié)合于此。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識到其它類型的數(shù)據(jù)也可以與音頻片段相關(guān)聯(lián),例如標(biāo)題信息、藝術(shù)家或團(tuán)體信息、音樂會信息、新發(fā)行信息和/或URL鏈接等鏈接到其它數(shù)據(jù)的鏈接。
索引引擎22將所提取的音頻指紋與可以由指紋分析引擎20用來識別指紋數(shù)據(jù)庫26中的候選子集的索引相關(guān)聯(lián)。依照本發(fā)明的一個實施例,基于包含在音頻片段中的突出的音符來生成索引。一旦生成索引,就可以識別音頻片段所屬的指紋數(shù)據(jù)庫26中的音頻指紋的子集。
類別識別引擎24針對屬于特定的音樂類別的音頻片段的不同集合生成標(biāo)識符。依照本發(fā)明的一個實施例,就整體的作曲法(instrumentation)/管弦樂配樂法(orchestration)而言,特定的音樂類別中的音樂片段是相似的。例如,典型的音樂類別可以被識別為包括爵士樂鋼琴三重唱、無伴奏演唱、非電吉它、非電鋼琴、帶聲樂演唱的非電吉它獨(dú)奏等。不同的音樂類別因而可以被包括作為音頻簡介向量的屬性,其中特定的音樂類別的值集合表示音頻片段與該音樂類別有多遠(yuǎn)或多近。有關(guān)不同的音樂類別的標(biāo)識符和信息然后可以存儲在音樂類別數(shù)據(jù)庫28中。
指紋數(shù)據(jù)庫26存儲有多個已知音頻片段的指紋??梢曰诎谝纛l片段中的音符將這些指紋歸類成離散子集。每個音頻指紋可以與實際的音頻文件、音頻簡介向量、音頻片段的描述(例如標(biāo)題、藝術(shù)家和/或團(tuán)體)、音樂會信息、新發(fā)行信息和鏈接到其它數(shù)據(jù)的URL鏈接等相關(guān)聯(lián)。
圖2是本發(fā)明一個實施例的用于生成音頻指紋的進(jìn)程的流程圖。進(jìn)程開始后,在步驟100中,指紋提取引擎18或者獨(dú)立的傅立葉變換引擎(未示出)計算預(yù)處理后的音頻片段的音頻信號的快速傅里葉變換(FFT)等,以將時域的信號波形轉(zhuǎn)換為頻域的信號。依照本發(fā)明的一個實施例,對FFT分析重新取樣,以減小后續(xù)處理的數(shù)據(jù)大小。
基于該FFT計算,指紋提取引擎18在步驟102中生成T×F矩陣A,其中T≥F。依照本發(fā)明的一個實施例,矩陣的行表示時間,矩陣的列表示FFT的頻率測量,也稱作箱(bin)。
在步驟104中,指紋提取引擎18對矩陣A執(zhí)行被稱作奇異值分解(SVD)操作的公知的矩陣操作。概括地講,SVD是如下將原始矩陣歸約成三個矩陣的乘積的技術(shù)SVD(A)=USVT
其中U是T×F的正交矩陣,S是F×F的具有正值或零值元素的對角矩陣,VT是F×F正交矩陣的轉(zhuǎn)置矩陣。依照本發(fā)明的一個實施例,V轉(zhuǎn)置后的行是獲得最大方差的坐標(biāo),即,以利用S矩陣的對角輸入所測量的重要性的降序保留了大部分有關(guān)音頻片段的信息。
在步驟106中,指紋提取引擎18從矩陣VT中提取預(yù)定數(shù)量的行,在步驟108中,根據(jù)所提取的行構(gòu)建指紋矩陣。在步驟110中,以可以是現(xiàn)有技術(shù)中的常規(guī)方式的任何方式將指紋矩陣與音頻片段相關(guān)聯(lián),從而將指紋矩陣設(shè)置為音頻片段的指紋。
在步驟112中,將指紋矩陣存儲在數(shù)據(jù)存儲器中。如果是為了登記目的而進(jìn)行指紋提取,則該數(shù)據(jù)存儲器就是指紋數(shù)據(jù)庫26。否則,該數(shù)據(jù)存儲器是用于存儲指紋矩陣的臨時存儲單元,用于指紋分析引擎20隨后的檢索,以與已登記的指紋進(jìn)行對比。
與由現(xiàn)有技術(shù)的系統(tǒng)生成的許多音頻指紋不同,通過SVD操作生成的音頻指紋沒有與其相關(guān)聯(lián)的時間的概念。然而,本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識到,時間可以與通過SVD操作生成的音頻指紋相關(guān)聯(lián)。換句話說,通過將時間索引分配給通過SVD操作生成的音頻指紋,并且重復(fù)在整首歌曲中移動的移動窗口的進(jìn)程,可以將參照圖2所描述的生成音頻指紋的進(jìn)程擴(kuò)展到時基的音頻指紋識別系統(tǒng)。
依照本發(fā)明的一個實施例,指紋提取引擎18也可以結(jié)合例如導(dǎo)致時間索引指紋測量的光譜矩心和/或光譜平滑度測量等現(xiàn)有技術(shù)中的指紋識別技術(shù)。如果使用這些技術(shù),則可以將這些測量的其中之一或者兩者的結(jié)果添加到通過SVD操作生成的指紋矩陣。
圖3是本發(fā)明一個實施例的由指紋分析引擎20執(zhí)行的進(jìn)程的流程圖,該進(jìn)程用于分析所提取的音頻指紋以找到與已登記的指紋的匹配。該進(jìn)程開始后,在步驟200中,指紋分析引擎20從指紋提取引擎18接收所要識別的音頻片段的指紋(指紋矩陣X)。指紋分析引擎20然后利用指紋矩陣X調(diào)用對指紋數(shù)據(jù)庫26的搜索和檢索程序。在這一點(diǎn)上,指紋分析引擎20在步驟202中查詢在指紋數(shù)據(jù)庫26中是否還存在指紋需要進(jìn)行比較。如果回答是NO,則已對數(shù)據(jù)庫中的所有指紋進(jìn)行了分析而沒有找到匹配。在這種情況下,指紋分析引擎在步驟204中返回沒有匹配的結(jié)果。
另一方面,如果在數(shù)據(jù)庫中還存在沒有被分析的指紋,則指紋分析引擎20在步驟206中計算指紋矩陣X與指紋數(shù)據(jù)庫26中的當(dāng)前指紋(指紋矩陣Y)之間的差。依照本發(fā)明的一個實施例,通過如下對指紋矩陣X和Y的每個行向量進(jìn)行眾所周知的歐幾里德距離測量D來計算該差D=(x1-y1)2+(x2-y2)2+...+(xm-ym)2]]>其中X1、X2...Xm是指紋矩陣X的行向量的值,Y1、Y2...Ym是指紋矩陣Y的行向量的值。將矩陣的所有行的距離測量相加并依照本發(fā)明的一個實施例進(jìn)行歸一化。在步驟208中,確定距離的和是否超過閾值。如果回答是NO,則宣告有匹配。否則,對指紋數(shù)據(jù)庫中的下一個指紋進(jìn)行檢查,以尋找匹配。
依照本發(fā)明的一個實施例,如果同時引入現(xiàn)有技術(shù)的指紋識別技術(shù),則對利用這些技術(shù)生成的時間索引向量進(jìn)行測量,以求得其與相應(yīng)的已存儲指紋向量的距離,并以適當(dāng)?shù)某A窟M(jìn)行標(biāo)度。將該距離計算結(jié)果添加到在步驟206中計算的距離計算結(jié)果中。也可以引入加權(quán)因子,以便向利用特定方法進(jìn)行的距離計算結(jié)果賦予更大或更小的權(quán)值。然后相對于閾值對總的距離計算結(jié)果進(jìn)行測試,以確定是否實現(xiàn)了匹配。
圖4是本發(fā)明的一個可選實施例的由指紋分析引擎20執(zhí)行的進(jìn)程的流程圖,該進(jìn)程用于分析所提取的音頻指紋以找到與已登記的指紋的匹配。依照該實施例,該進(jìn)程開始后,在步驟300中,指紋分析引擎20從指紋提取引擎18接收所要識別的音頻片段的指紋(指紋矩陣X)。如果存在與所提取的指紋相匹配的候選,則指紋分析引擎20在步驟302中調(diào)用索引引擎22來識別指紋數(shù)據(jù)庫26中包含該候選的指紋子集的索引。在這一點(diǎn)上,索引引擎22生成所提取的指紋的查詢索引。依照本發(fā)明的一個實施例,該索引由四個無序的數(shù)字組成,并且如果具有與該查詢索引相同的任何順序的三個數(shù)字的索引存在于指紋數(shù)據(jù)庫中,則認(rèn)為已經(jīng)找到了匹配。
除了將搜索空間限定為由相匹配的索引識別的指紋子集之外,圖4的進(jìn)程的剩余部分以與圖3中相同的方式繼續(xù)進(jìn)行。
在這一點(diǎn)上,指紋分析引擎20在步驟304中查詢在指紋數(shù)據(jù)庫26的被識別的子集中是否還存在指紋要進(jìn)行比較。如果回答是NO,則指紋分析引擎在步驟306中返回沒有匹配的結(jié)果。
如果在子集中還存在沒有被分析的指紋,則指紋分析引擎20在步驟308中計算指紋矩陣X和該子集中的當(dāng)前指紋(指紋矩陣Y)之間的差。在步驟310中,確定該差是否超過閾值。如果回答是NO,則宣布有匹配。否則,對被識別的子集中的下一個指紋進(jìn)行檢查以尋找匹配。
圖5是本發(fā)明一個實施例的由索引引擎22執(zhí)行的用于向音頻片段分配數(shù)據(jù)庫索引的進(jìn)程的流程圖。該數(shù)據(jù)庫索引用于識別指紋數(shù)據(jù)庫26中的指紋子集,以便登記由指紋提取引擎18提取的指紋,或者減少為了找到所提取的指紋的匹配而需要在指紋數(shù)據(jù)庫26檢查的候選。
圖5所示的進(jìn)程開始后,在步驟400中,索引引擎22或者獨(dú)立的傅立葉變換引擎(未示出)計算由預(yù)處理器16預(yù)處理后的音頻片段的FFT等,并獲取音頻片段的FFT頻譜。在步驟402中,索引引擎22自動獲取音頻片段的音符列表。該音符列表是利用現(xiàn)有技術(shù)中存在的任何已知的峰值跟蹤算法而獲得的。
該峰值跟蹤算法生成FFT中的局部峰值軌跡,該軌跡隨后由索引引擎對其進(jìn)行分析,以找出它們的突出部分。在這一點(diǎn)上,索引引擎22在步驟404中確定是否還有軌跡需要檢查。如果回答是YES,則在步驟406中該引擎將該軌跡的頻率轉(zhuǎn)換為量化了軌跡頻率的整數(shù)值。依照本發(fā)明的一個實施例,這是通過以現(xiàn)有技術(shù)中已知的方式將軌跡的頻率量化為最接近的MIDI(樂器數(shù)字接口)音符編號來實現(xiàn)的。
在步驟408中,基于例如軌跡的強(qiáng)度和持續(xù)時間等因素,索引引擎22計算軌跡的突出值。在步驟410中,該引擎將所計算的突出值與軌跡的MIDI音符相關(guān)聯(lián)。在步驟412中,將MIDI音符的突出值累積為突出陣列。該進(jìn)程返回到步驟404,分析下一個軌跡。
如果不再有軌跡需要檢查,則該索引引擎22在步驟414中在突出陣列中選擇具有最高的突出值的MIDI音符編號,并將它們作為指紋數(shù)據(jù)庫26中的關(guān)聯(lián)子集的索引輸出。依照本發(fā)明的一個實施例,四個具有最高的突出值的MIDI音符編號被選為索引。依照本發(fā)明的一個實施例,該索引由四個無序的數(shù)字組成,其中這些數(shù)字是選定的MIDI音符編號,從而使得該索引共具有24種可能的組合。
圖6是本發(fā)明一個實施例的生成特定音樂類別的標(biāo)識符的進(jìn)程的流程圖。盡管該圖按音樂類別進(jìn)行了描述,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識到該進(jìn)程可以擴(kuò)展到現(xiàn)有技術(shù)中常規(guī)的所有類型的音頻和音頻類別。
該進(jìn)程開始后,在步驟500中選擇屬于該音樂類別的音頻片段的集合。片段的選擇可以是手動的或者是自動的。
在步驟502中,類別識別引擎計算該集合中每個音頻片段的指紋。依照本發(fā)明的一個實施例,類別識別引擎調(diào)用指紋提取引擎18通過SVD操作來計算指紋。除了SVD指紋識別機(jī)制,也可以使用其它的指紋識別機(jī)制,或者也可以使用其它的指紋識別機(jī)制來代替SVD指紋識別機(jī)制。
在步驟504中,類別識別引擎24對該集合計算所生成的指紋的平均值。在這一點(diǎn)上,類別識別引擎以現(xiàn)有技術(shù)中已知的方式計算被稱作類別ID矩陣的矩陣,這使該集合中的所有音頻片段的距離測量最小化。
在步驟506中,將由類別ID矩陣表示的、所計算出的指紋的平均值與音樂類別相關(guān)聯(lián),并且在步驟508中,將其作為標(biāo)識符連同有關(guān)音樂類別的其它信息一起存儲在音樂類別數(shù)據(jù)庫28中。這種附加信息可以包括例如屬于該類別的音頻片段列表、到屬于該類別的音頻片段的音頻指紋的指紋數(shù)據(jù)庫26的鏈接、以及到屬于該類別的音頻片段的音頻簡介向量的鏈接等。
一旦生成音樂類別的標(biāo)識符后,就可以進(jìn)行計算,以確定音頻片段距離特定的音樂類別有多遠(yuǎn)或多近。這例如可以通過計算對音頻片段提取的指紋與特定音樂類別的類別ID矩陣之間的距離來實現(xiàn)。
依照本發(fā)明的一個實施例,不同的音樂類別用作音頻片段的音頻簡介向量的屬性。針對每種屬性將距離計算結(jié)果存儲在音頻簡介向量中,作為音頻片段距離相關(guān)聯(lián)的音樂類別有多遠(yuǎn)的指示。
圖7是本發(fā)明一個實施例的具有一個或多個利用了圖1的音頻指紋識別系統(tǒng)10的設(shè)備的計算機(jī)網(wǎng)絡(luò)的示意性框圖。該網(wǎng)絡(luò)包括服務(wù)器600,該服務(wù)器600通過例如因特網(wǎng)610等公用網(wǎng)絡(luò)或?qū)S镁W(wǎng)絡(luò)連接到一個或多個終端602-608。終端可以是個人電腦602、個人數(shù)字助理604、便攜式電腦606、無線設(shè)備608和/或現(xiàn)有技術(shù)中已知的其它類型的固定的或移動的終端。
依照本發(fā)明的一個實施例,音頻指紋識別系統(tǒng)10駐留在服務(wù)器600中。音頻指紋識別系統(tǒng)部分也可以駐留在終端602-608中。服務(wù)器600和/或終端602-608也可以包括序列號為10/278,636的美國專利申請所公開的音樂簡介生成器(profiler),用于自動分析音頻片段并生成音頻簡介向量。包含在服務(wù)器600和/或終端602-608中的一個或多個處理器可以進(jìn)一步配置根據(jù)用戶的愛好向他們推薦音頻片段的功能性。這樣的功能性包括生成/檢索用于量化與音頻數(shù)據(jù)庫中的音頻片段相關(guān)聯(lián)的多種屬性的音頻簡介向量、生成/更新用戶優(yōu)選向量,并且基于用戶簡介向量從數(shù)據(jù)庫中選擇音頻片段。
在音頻指紋識別系統(tǒng)10的典型使用中,用戶評估一首沒有與其相關(guān)聯(lián)的描述性信息的歌曲。與評估信息一起傳送該首歌曲的指紋,而不是傳送用戶想要評估的整首歌曲。在這一點(diǎn)上,用戶所使用的終端訪問服務(wù)器600將指紋提取引擎18的實例下載到其存儲器(未示出)中。調(diào)用所下載的指紋提取引擎18來提取正在被評估的音頻片段的指紋。通過因特網(wǎng)610將所提取的指紋傳送到服務(wù)器600。
一接收到所提取的音頻指紋,服務(wù)器600就調(diào)用指紋分析引擎20,來確定接收到的指紋是否被登記在指紋數(shù)據(jù)庫26中。如果找到了匹配,則服務(wù)器檢索與指紋相關(guān)聯(lián)的音頻簡介向量,并利用該向量來更新或生成在序列號為10/278,636的美國專利申請中有進(jìn)一步詳細(xì)描述的用戶簡介向量。然后利用該用戶簡介向量來向用戶推薦其它的歌曲。
如果沒有實現(xiàn)匹配,則優(yōu)選地由終端對音頻片段進(jìn)行分析,以生成在美國專利申請10/278,636中有進(jìn)一步詳細(xì)描述的音頻簡介向量。
依照本發(fā)明的一個實施例,終端也可以下載用以確定正在被評估的音頻片段所屬的指紋子集的索引的索引引擎的實例。然后將索引信息也連同指紋信息一起傳送到服務(wù)器600,以加快對指紋數(shù)據(jù)庫26的搜索。
盡管以特定的實施例對本發(fā)明進(jìn)行了描述,但在不背離本發(fā)明的范圍和精神的情況下,本領(lǐng)域技術(shù)人員可以容易地對所述的實施例設(shè)計各種變更。而且,對于不同技術(shù)領(lǐng)域的技術(shù)人員來講,本發(fā)明本身將對其它應(yīng)用的任務(wù)和適用給出技術(shù)啟示。
例如,音頻指紋識別系統(tǒng)10具有用于生成音頻簡介向量的音頻片段的識別之外的應(yīng)用。例如,系統(tǒng)10可用于尋找未知的音樂片段的相關(guān)聯(lián)的描述性數(shù)據(jù)(元數(shù)據(jù))。系統(tǒng)10也可以用于在廣播站識別并協(xié)議傳送音頻節(jié)目材料,用于確認(rèn)插播廣告的預(yù)定傳送,保護(hù)廣播材料的著作權(quán),或者節(jié)目材料的統(tǒng)計分析。
本發(fā)明的申請人意在通過權(quán)利要求來覆蓋本發(fā)明的所有上述使用以及在不背離本發(fā)明的精神和范圍的情況下可以對為了公開目的而在此選擇的本發(fā)明的實施例所做的那些變化和修改。因此,無論從哪方面看,本發(fā)明的現(xiàn)有實施例都應(yīng)當(dāng)被視為是描述性的而不是限制性的,本發(fā)明的范圍是由附加的權(quán)利要求及其等同物來指示,而不是由以上描述來指示。
權(quán)利要求
1.一種音頻指紋識別方法,包括接收與音頻片段相關(guān)聯(lián)的音頻信號;獲取所述音頻信號的多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;以及將檢索到的矩陣VT的行與音頻片段相關(guān)聯(lián)地存儲在數(shù)據(jù)存儲器中,其中由應(yīng)用程序接收包含有檢索到的矩陣VT的行的請求,并且基于該請求中的矩陣VT的行來識別并檢索存儲在數(shù)據(jù)庫中的音頻片段的信息。
2.根據(jù)權(quán)利要求1所述的方法,其中矩陣A的行表示時間,矩陣A的列表示頻率測量。
3.根據(jù)權(quán)利要求1所述的方法,其中所述信息是存儲有音頻片段的聲學(xué)分析數(shù)據(jù)的音頻簡介向量。
4.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括基于所述聲學(xué)分析數(shù)據(jù)來推薦第二音頻片段。
5.根據(jù)權(quán)利要求3所述的方法,其中所述音頻簡介向量對所述音頻片段與被分類為特定音頻類別的音頻片段的相似度進(jìn)行量化。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括生成所述特定音頻類別的標(biāo)識符,該生成包括選擇與所述特定音頻類別相關(guān)聯(lián)的音頻片段;對每個所選擇的音頻片段計算第二音頻指紋;計算所述計算出的第二音頻指紋的平均值;將所述計算出的平均值與所述特定音頻類別相關(guān)聯(lián);以及將所述計算出的平均值作為所述特定音頻類別的標(biāo)識符存儲在數(shù)據(jù)存儲器內(nèi)。
7.根據(jù)權(quán)利要求6所述的方法,其中所述第二音頻指紋的計算包括從與所選擇的音頻片段相關(guān)聯(lián)的特定音頻信號中獲取多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;以及將檢索到的矩陣VT的行與所選擇的音頻片段相關(guān)聯(lián)。
8.根據(jù)權(quán)利要求7所述的方法,其中矩陣A的行表示時間,矩陣A的列表示頻率測量。
9.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括生成所述音頻片段的索引,該生成包括自動地從與所述音頻片段相關(guān)聯(lián)的音頻信號中獲取包含在所述音頻片段中的音符列表;從所述音頻信號中確定所述音頻片段中的音符的突出部分;以及選擇所述音頻片段中最突出的音符的預(yù)定編號作為索引。
10.根據(jù)權(quán)利要求9所述的方法,其中將所選擇的音符轉(zhuǎn)換為音符編號,并且所述索引包括轉(zhuǎn)換后的音符編號。
11.根據(jù)權(quán)利要求9所述的方法,其中將存儲在所述數(shù)據(jù)庫中的數(shù)據(jù)組織成一組或多組,其中每組由特定的索引來識別。
12.根據(jù)權(quán)利要求11所述的方法,其中尋找所述音頻片段的信息的數(shù)據(jù)庫搜索限于由所生成的索引識別的組。
13.一種音頻索引方法,包括接收音頻片段的音頻信號;自動地從所述音頻信號中獲取包含在所述音頻片段中的音符列表;從所述音頻信號中確定所述音頻片段中的音符的突出部分;選擇所述音頻片段中最突出的音符的預(yù)定編號;基于所選擇的音符生成索引;以及基于所生成的索引搜索數(shù)據(jù)庫。
14.根據(jù)權(quán)利要求13所述的方法,其中將存儲在所述數(shù)據(jù)庫中的數(shù)據(jù)組織成一組或多組,其中每組由特定的索引來識別。
15.根據(jù)權(quán)利要求14所述的方法,其中對數(shù)據(jù)庫的搜索限于由所生成的索引識別的組。
16.根據(jù)權(quán)利要求13所述的方法,其中將所選擇的音符轉(zhuǎn)換為音符編號,并且該索引包括轉(zhuǎn)換后的音符編號。
17.根據(jù)權(quán)利要求16所述的方法,其中將存儲在所述數(shù)據(jù)庫中的數(shù)據(jù)組織成一組或多組,其中每組由特定的索引來識別,該方法進(jìn)一步包括將所生成的索引中的轉(zhuǎn)換后的音符編號與包含在用于識別所述數(shù)據(jù)庫中的數(shù)據(jù)組的索引中的音符編號進(jìn)行比較;以及如果用于識別所述組的索引至少包括所生成的索引中音符編號的預(yù)定數(shù)量,則輸出匹配指示。
18.根據(jù)權(quán)利要求17所述的方法,其中所生成的索引包括四個音符編號,并且如果用于識別所述組的索引包括所述四個音符編號中的至少三個,則輸出匹配指示。
19.根據(jù)權(quán)利要求13所述的方法,其中所述數(shù)據(jù)庫是包括多個音頻片段的壓縮表示的音頻指紋數(shù)據(jù)庫。
20.一種用于生成音頻類別的標(biāo)識符的方法,該方法包括選擇與所述音頻類別相關(guān)聯(lián)的多個音頻片段;對每個所選擇的音頻片段計算音頻指紋;計算所述計算出的音頻指紋的平均值;將所述計算出的平均值與所述音頻類別相關(guān)聯(lián);以及將所述計算出的平均值存儲在數(shù)據(jù)存儲器中。
21.根據(jù)權(quán)利要求20所述的方法,其中音頻指紋的計算包括從與所述音頻片段相關(guān)聯(lián)的音頻信號中獲取多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;將檢索到的矩陣VT的行與所述音頻片段相關(guān)聯(lián);以及存儲所檢索到的矩陣VT的行。
22.根據(jù)權(quán)利要求21所述的方法,其中矩陣A的行表示時間,矩陣A的列表示所述頻率測量。
23.根據(jù)權(quán)利要求20所述的方法,其中所述音頻類別是由特定的管弦樂配樂法或作曲法限定的。
24.一種音頻指紋識別系統(tǒng),包括音頻文件讀取器,讀取存儲有音頻片段的音頻文件;連接到所述音頻文件讀取器的處理器,該處理器被配置為獲取與所述音頻片段相關(guān)聯(lián)的音頻信號的多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;并且檢索矩陣VT的一行或多行;連接到所述處理器的數(shù)據(jù)存儲器,用于與所述音頻片段相關(guān)聯(lián)地存儲檢索到的矩陣VT的行;以及存儲多個音頻片段的信息的數(shù)據(jù)庫,其中由應(yīng)用程序接收包含有檢索到的矩陣VT的行的請求,并且基于該請求中的矩陣VT的行識別并檢索存儲在所述數(shù)據(jù)庫中的音頻片段的信息。
25.根據(jù)權(quán)利要求24所述的系統(tǒng),其中矩陣A的行表示時間,矩陣A的列表示頻率測量。
26.根據(jù)權(quán)利要求24所述的系統(tǒng),其中所述信息是存儲有音頻片段的聲學(xué)分析數(shù)據(jù)的音頻簡介向量。
27.根據(jù)權(quán)利要求24所述的系統(tǒng),其中處理器被進(jìn)一步配置為基于所述聲學(xué)分析數(shù)據(jù)來推薦第二音頻片段。
28.根據(jù)權(quán)利要求26所述的系統(tǒng),其中所述音頻簡介向量對所述音頻片段與被分類為特定音頻類別的音頻片段的相似度進(jìn)行量化。
29.根據(jù)權(quán)利要求28所述的系統(tǒng),其中處理器被進(jìn)一步配置為生成所述特定音頻類別的標(biāo)識符,該生成包括選擇與所述特定音頻類別相關(guān)聯(lián)的音頻片段;對每個所選擇的音頻片段計算第二音頻指紋;計算所述計算出的第二音頻指紋的平均值;將所述計算出的平均值與所述特定音頻類別相關(guān)聯(lián);以及將所述計算出的平均值作為所述特定音頻類別的標(biāo)識符存儲在數(shù)據(jù)存儲器內(nèi)。
30.根據(jù)權(quán)利要求29所述的系統(tǒng),其中所述第二音頻指紋的計算包括從與所選擇的音頻片段相關(guān)聯(lián)的特定音頻信號中獲取多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;以及將檢索到的矩陣VT的行與所選擇的音頻片段相關(guān)聯(lián)。
31.根據(jù)權(quán)利要求30所述的系統(tǒng),其中矩陣A的行表示時間,矩陣A的列表示所述頻率測量。
32.根據(jù)權(quán)利要求24所述的系統(tǒng),其中該處理器被進(jìn)一步配置為生成所述音頻片段的索引,該生成包括自動地從與所述音頻片段相關(guān)聯(lián)的音頻信號中獲取包含在所述音頻片段中的音符列表;從所述音頻信號中確定所述音頻片段中的音符的突出部分;以及選擇所述音頻片段中最突出的音符的預(yù)定編號作為索引。
33.根據(jù)權(quán)利要求32所述的系統(tǒng),其中將所選擇的音符轉(zhuǎn)換為音符編號,并且該索引包括轉(zhuǎn)換后的音符編號。
34.根據(jù)權(quán)利要求32所述的系統(tǒng),其中將存儲在所述數(shù)據(jù)庫中的數(shù)據(jù)組織成一組或多組,其中每組由特定的索引來識別。
35.根據(jù)權(quán)利要求34所述的系統(tǒng),其中尋找所述音頻片段的信息的數(shù)據(jù)庫搜索限于由生成的索引識別的組。
36.一種音頻索引系統(tǒng),包括接收音頻片段的音頻信號的裝置;自動地從所述音頻信號中獲取包含在所述音頻片段中的音符列表的裝置;從所述音頻信號中確定所述音頻片段中的音符的突出部分的裝置;選擇所述音頻片段中最突出的音符的預(yù)定編號的裝置;基于所選擇的音符生成索引的裝置;以及基于所生成的索引搜索數(shù)據(jù)庫的裝置。
37.根據(jù)權(quán)利要求36所述的系統(tǒng),其中將存儲在所述數(shù)據(jù)庫中的數(shù)據(jù)組織成一組或多組,其中每組由特定的索引來識別。
38.根據(jù)權(quán)利要求37所述的系統(tǒng),其中對數(shù)據(jù)庫的搜索限于由所生成的索引識別的組。
39.根據(jù)權(quán)利要求36所述的系統(tǒng),其中將所選擇的音符與音符編號相關(guān)聯(lián),并且該索引包括音符編號。
40.根據(jù)權(quán)利要求36所述的系統(tǒng),其中所述數(shù)據(jù)庫是包括多個音頻片段的簡潔表示的音頻指紋數(shù)據(jù)庫。
41.一種用于生成音頻類別的標(biāo)識符的系統(tǒng),該系統(tǒng)包括針對多個被選擇的音頻片段中的每一個計算音頻指紋的裝置;計算所述計算出的音頻指紋的平均值的裝置;使所述計算出的平均值與所述音頻類別相關(guān)聯(lián)的裝置;以及將所述計算出的平均值存儲在數(shù)據(jù)存儲器中的裝置。
42.根據(jù)權(quán)利要求41所述的系統(tǒng),其中計算所述音頻指紋的裝置包括從與所述音頻片段相關(guān)聯(lián)的音頻信號中獲取多個頻率測量的裝置;基于該頻率測量構(gòu)建矩陣A的裝置;對矩陣A執(zhí)行奇異值分解的裝置,其中A=USVT;檢索矩陣VT的一行或多行的裝置;以及將檢索到的矩陣VT的行與所述音頻片段相關(guān)聯(lián)的裝置。
43.根據(jù)權(quán)利要求42所述的系統(tǒng),其中矩陣A的行表示時間,矩陣A的列表示所述頻率測量。
44.根據(jù)權(quán)利要求41所述的系統(tǒng),其中所述音頻類別是由特定的管弦樂配樂法或作曲法限定的。
45.一種包括計算機(jī)可讀介質(zhì)的產(chǎn)品,所述計算機(jī)可讀介質(zhì)具有計算機(jī)可用的程序代碼,所述程序代碼包含可執(zhí)行指令,當(dāng)執(zhí)行所述指令時,使計算機(jī)執(zhí)行如下步驟獲取與音頻片段相關(guān)聯(lián)的音頻信號的多個頻率測量;基于該頻率測量構(gòu)建矩陣A;對矩陣A執(zhí)行奇異值分解,其中A=USVT;檢索矩陣VT的一行或多行;以及將檢索到矩陣VT的行與音頻片段相關(guān)聯(lián)地存儲在數(shù)據(jù)存儲器中。
46.根據(jù)權(quán)利要求45所述的產(chǎn)品,其中矩陣A的行表示時間,矩陣A的列表示所述頻率測量。
47.一種包括計算機(jī)可讀介質(zhì)的產(chǎn)品,所述計算機(jī)可讀介質(zhì)具有計算機(jī)可用的程序代碼,所述程序代碼包含可執(zhí)行指令,當(dāng)執(zhí)行所述指令時,使計算機(jī)執(zhí)行以下步驟自動地從音頻片段的音頻信號中獲取包含在所述音頻片段中的音符列表;從所述音頻信號中確定所述音頻片段中的音符的突出部分;選擇所述音頻片段中最突出的音符的預(yù)定編號;基于所選擇的音符生成索引;以及基于所生成的索引搜索數(shù)據(jù)庫。
48.一種實質(zhì)上如以上參照附圖所描述的音頻指紋識別系統(tǒng)。
49.一種實質(zhì)上如以上參照附圖所描述的音頻指紋識別方法。
全文摘要
本發(fā)明公開了一種音頻指紋識別系統(tǒng)和方法。服務(wù)器接收第一音頻片段的音頻指紋,搜索數(shù)據(jù)庫來尋找音頻指紋,檢索與音頻指紋相關(guān)聯(lián)的音頻簡介向量,基于該音頻簡介向量更新用戶優(yōu)選信息,并基于該用戶優(yōu)選信息選擇第二音頻片段。通過基于音頻片段的頻率測量生成矩陣,并對該矩陣執(zhí)行奇異值分解來生成音頻指紋。為了加快對數(shù)據(jù)庫的搜索并且增加匹配精度,基于音頻片段的最突出的音符來識別數(shù)據(jù)庫中的候選子集,并且將搜索限定于所識別的子集。音頻簡介向量的屬性中的一個是特定音頻類別?;趯儆谠撘纛l類別的音頻片段的音頻指紋的平均值來生成音頻類別的標(biāo)識符。
文檔編號G06F17/30GK101014953SQ200480026758
公開日2007年8月8日 申請日期2004年9月23日 優(yōu)先權(quán)日2003年9月23日
發(fā)明者弗羅德·霍姆, 溫德爾·T·???申請人:音樂Ip公司