專利名稱:一種分析音樂bpm的方法和裝置的制作方法
CN 102543052 A一種分析音樂BPM的方法和裝置技術領域:
本發(fā)明涉及計算機處理技術,特別涉及一種分析音樂每分鐘節(jié)拍數(shù)(BPM,Beat Per Minute)的方法和裝置。背景技術:
BPM是音樂的重要屬性之一,標識音樂每分鐘的節(jié)拍數(shù),在音頻分析、個性化音樂推薦、音樂分類等應用中發(fā)揮重要作用。例如在樂器數(shù)字接口(MIDI)的應用中,通過BPM 可以將MIDI音序器的速度與一個已有的音軌同步;在音樂數(shù)據(jù)庫系統(tǒng)中,可根據(jù)BPM對音樂進行分類和檢索。在流行音樂播音員(DJ)的應用中,可以將兩種音樂源的BPM值進行比較,以便從一個音樂源無縫地過渡到另一個音樂源,等等。
BPM分析技術中需要從待分析音樂中選擇一些音樂片段,計算各音樂片段的BPM 值后進行融合得到待分析音樂的BPM值。其中現(xiàn)有計算音樂片段的BPM值的方法是計算音樂片段的自相關函數(shù),提取自相關函數(shù)的周期值作為兩個節(jié)拍之間的時間間隔,并換算成每分鐘的節(jié)拍數(shù)作為輸出。然而現(xiàn)有計算音樂片段的BPM值的方法對于音樂節(jié)奏感強, 節(jié)奏鼓點非常明顯的音樂能夠滿足準確性要求,但對于音樂伴奏較弱,甚至沒有伴奏的時候,由于其周期性非常不明顯,采用現(xiàn)有的方法往往很難找到準確的BPM值。
發(fā)明內容
有鑒于此,本發(fā)明提供了一種分析音樂BPM的方法和裝置,以便于提高弱伴奏音樂片段的BPM分析準確性。
具體技術方案如下
一種分析音樂每分鐘節(jié)拍數(shù)BPM的方法,該方法包括
Si、對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決所述待分析音樂片段所屬的音樂拍系;
S2、對所述待分析音樂片段進行停頓點的檢測;
S3、根據(jù)停頓點的周期值以及所述步驟Sl的判決結果,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟Sl具體包括
S11、對所述待分析音樂片段的自相關函數(shù)進行峰值搜索,確定每一節(jié)拍包含的幀數(shù)1 ;
S12、分別計算自相關函數(shù)在Xl的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,X為預設的正整數(shù),如果判斷結果為是,則確定所述待分析音樂片段屬于X拍系。
根據(jù)本發(fā)明一優(yōu)選實施例,在步驟Sll中對所述待分析音樂片段的自相關函數(shù)進行峰值搜索之前還包括
對所述待分析音樂片段的自相關函數(shù)疊加窗函數(shù)。
根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟S12為分別計算所述自相關函數(shù)在31的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,如果是,則判決出所述待分析音樂片段屬于三拍系,否則判決出所述待分析音樂片段判斷屬于兩拍系。
根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟S2具體包括
檢測所述待分析音樂片段的能量幅度曲線波谷位置,將波谷位置確定為停頓點; 或者,
檢測音樂片段的信號能量幅度低于預設幅度低點的位置,如果連續(xù)多幀的能量幅度低于預設幅度低點,則取所述連續(xù)多幀的中點作為停頓點,否則直接將檢測到的位置作為停頓點。
根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟S3具體包括
根據(jù)停頓點的周期值以及停頓點間的小節(jié)數(shù),確定每個小節(jié)的時間長度;根據(jù)所述步驟Sl的判決結果,確定每個小節(jié)包含的節(jié)拍數(shù);根據(jù)每個小節(jié)包含的節(jié)拍數(shù)以及每個小節(jié)的時間長度,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM ;或者,
根據(jù)所述步驟Sl的判決結果確定出每個小節(jié)包含的節(jié)拍數(shù);根據(jù)停頓點間的小節(jié)數(shù)確定停頓點間包含的節(jié)拍數(shù);利用停頓點間包含的節(jié)拍數(shù)以及停頓點的周期值,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
根據(jù)本發(fā)明一優(yōu)選實施例,在所述步驟S3之后還包括
判斷計算出的BPM是否超出預設的合理值范圍,如果是,繼續(xù)執(zhí)行步驟S4 ;
S4、如果計算出的BPM低于所述合理值范圍的最低值,則將計算出的BPM的值乘以 2作為優(yōu)化后的所述待分析音樂片段的BPM ;如果計算出的BPM高于所述合理值范圍的最高值,則將計算出的BPM的值除以2作為優(yōu)化后的所述待分析音樂片段的BPM。
一種分析音樂每分鐘節(jié)拍數(shù)BPM的裝置,該裝置包括
拍系判決單元,用于對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決所述待分析音樂片段所屬的音樂拍系;
停頓檢測單元,用于對所述待分析音樂片段進行停頓點的檢測;
BPM計算單元,用于根據(jù)停頓點的周期值以及所述拍系判決單元的判決結果,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
根據(jù)本發(fā)明一優(yōu)選實施例,所述拍系判決單元具體包括
峰值搜索模塊,用于對所述待分析音樂片段的自相關函數(shù)進行峰值搜索,確定每一節(jié)拍包含的幀數(shù)1 ;
峰值判斷模塊,用于分別計算自相關函數(shù)在Xl的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,X為預設的正整數(shù);
拍系確定模塊,用于如果所述峰值判斷模塊的判斷結果為是,則確定所述待分析音樂片段屬于X拍系。
根據(jù)本發(fā)明一優(yōu)選實施例,所述峰值搜索模塊在對所述待分析音樂片段的自相關函數(shù)進行峰值搜索之前,還用于對所述待分析音樂片段的自相關函數(shù)疊加窗函數(shù)。
根據(jù)本發(fā)明一優(yōu)選實施例,所述峰值判斷模塊具體計算所述自相關函數(shù)在31的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求;
所述拍系確定單元如果所述峰值判斷模塊的判斷結果為是,則判決出所述待分析音樂片段屬于三拍系,否則判決出所述待分析音樂片段屬于兩拍系。
根據(jù)本發(fā)明一優(yōu)選實施例,所述停頓檢測單元具體檢測所述待分析音樂片段的能量幅度曲線波谷位置,將波谷位置確定為停頓點;或者,
檢測待分析音樂片段的信號能量幅度低于預設幅度低點的位置,如果連續(xù)多幀的能量幅度低于預設幅度低點,則取所述連續(xù)多幀的中點作為停頓點,否則直接將檢測到的位置作為停頓點。
根據(jù)本發(fā)明一優(yōu)選實施例,所述BPM計算單元具體根據(jù)停頓點的周期值以及停頓點間的小節(jié)數(shù),確定每個小節(jié)的時間長度;根據(jù)所述拍系判決單元的判決結果,確定每個小節(jié)包含的節(jié)拍數(shù);根據(jù)每個小節(jié)包含的節(jié)拍數(shù)以及每個小節(jié)的時間長度,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM ;或者,
根據(jù)所述拍系判決單元的判決結果確定出每個小節(jié)包含的節(jié)拍數(shù);根據(jù)停頓點間的小節(jié)數(shù)確定停頓點間包含的節(jié)拍數(shù);利用停頓點間包含的節(jié)拍數(shù)以及停頓點的周期值, 計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
根據(jù)本發(fā)明一優(yōu)選實施例,該裝置還包括
BPM優(yōu)化單元,用于判斷所述BPM計算單元計算出的BPM是否超出預設的合理值范圍,如果是,繼續(xù)執(zhí)行如果所述計算出的BPM低于所述合理值范圍的最低值,則將所述計算出的BPM的值乘以2作為優(yōu)化后的所述待分析音樂片段的BPM ;如果所述計算出的BPM 高于所述合理值范圍的最高值,則將所述計算出的BPM的值除以2作為優(yōu)化后的所述待分析音樂片段的BPM。
由以上技術方案可以看出,本發(fā)明采用停頓點檢測的方式獲取停頓點的周期值, 再結合拍系判決的結果確定出音樂片段的BPM。由于無論是強伴奏還是弱伴奏,檢測停頓點獲取周期值的方式比現(xiàn)有獲取音樂片段自相關函數(shù)的周期值的方式明顯具有更準確的效果,且更易于檢測,因此在弱伴奏音樂片段的BPM分析上相比較現(xiàn)有技術具有更高的準確性。
圖1為本發(fā)明實施例一提供的分析音樂BPM的方法流程圖2為本發(fā)明實施例一提供的判決音樂拍系的方法流程圖3為本發(fā)明實施例二提供的分析音樂BPM的裝置結構圖。具體實施方式
為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖和具體實施例對本發(fā)明進行詳細描述。
實施例一、
圖1為本發(fā)明實施例一提供的分析音樂BPM的方法流程圖,如圖1所示,該方法可以包括以下步驟
步驟101 對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決該待分析音樂片段所屬的音樂拍系。
本步驟的具體實現(xiàn)方法可以參見圖2,可以包括以下步驟201至步驟203
步驟201 對待分析音樂片段的自相關函數(shù)進行峰值搜索,確定每一節(jié)拍包含的幀數(shù)1。
在本步驟中首先確定出待分析音樂片段的自相關函數(shù),求取音樂信號的自相關函數(shù)是現(xiàn)有技術在此不再詳述。在確定出自相關函數(shù)后,為了確定每一節(jié)拍包含的幀數(shù)1需要對自相關函數(shù)進行峰值搜索,峰值所對應的采樣幀數(shù)就是要尋找的幀數(shù)1。例如,假設音樂片段的自相關函數(shù)橫坐標取值范圍為0 1000幀,通過對自相關函數(shù)進行峰值搜索,確定出橫坐標取60時自相關函數(shù)值最大,于是1為60,即確定每一節(jié)拍包含的幀數(shù)為60。
由于對音樂信號進行了截斷操作,不可避免的會出現(xiàn)頻譜泄露,所謂頻譜泄露就是在本不應該出現(xiàn)能量的頻率點上仍有能量出現(xiàn)。信號被截斷得越短,頻譜泄露越嚴重,為了減小頻譜泄露對峰值搜索的精度所產生的影響,可以進一步對音樂片段的自相關函數(shù)疊加窗函數(shù),例如高斯窗函數(shù),從而利用窗函數(shù)的旁瓣抑制泄露出的頻譜分量,起到頻譜平滑的作用。
在選擇高斯窗函數(shù)時,由于高斯窗函數(shù)由均值μ和方差ο 2兩個參數(shù)決定,其中均值μ決定了高斯窗函數(shù)最大值出現(xiàn)的位置,而方差ο2決定了高斯窗函數(shù)的主瓣寬度, 根據(jù)經驗大多數(shù)音樂的BPM分布在80 120,因此高斯窗函數(shù)的均值μ選擇為80 120。 方差ο 2的選擇關系到主瓣寬度,當選定方差ο 2后BPM值落在區(qū)間[μ-σ,μ + σ]內的百分比超過70%,落在[μ-2 0,μ+2 O]的百分比超過95%,因此,O的取值范圍可以為 40 60。疊加窗函數(shù)的過程實際上就是將自相關函數(shù)與窗函數(shù)直接相乘,在此不再詳述。
步驟202 分別計算自相關函數(shù)在xnl幀處的值,并判斷是局部最大值的幀數(shù)是否滿足預設要求,其中η為1、2、3......,χ為預設的正整數(shù)。
也就是說,分別計算自相關函數(shù)在Xl整數(shù)倍幀處的值,優(yōu)選地,通常流行音樂的拍系為兩拍系或者三拍系,因此χ可以取2或者3。
步驟203 如果步驟202中的判斷結果為是,則確定該音樂片段屬于χ拍系。
舉個例子,以1取2和3為例,首先計算自相關函數(shù)在21、41、61...幀處的值,判斷這些幀中是局部最大值的幀數(shù)是否滿足預設要求,其中預設要求可以是幀數(shù)超過預設的數(shù)量閾值或者比例超過預設的比例閾值等;計算自相關函數(shù)在31、61、91...幀處的值,判斷這些幀中是局部最大值的幀數(shù)是否滿足預設要求。如果21、41、61...幀中是局部最大值的幀數(shù)滿足預設要求,則判決出該音樂判斷屬于兩拍系;如果31、61、91...幀中是局部最大值的幀數(shù)滿足預設要求,則判決出該音樂片段判斷屬于三拍系。此處的局部是一個預設范圍,該范圍的長度不超過χ幀,假設當χ為3時,可以設置局部的范圍為2幀,也就是說, 當某一幀在其左右兩幀范圍內為最大值時,認為該幀的自相關函數(shù)取值為局部最大值。
另外,在實際應用中,由于絕大多數(shù)音樂的拍系屬于兩拍系或者三拍系,為了降低運算量,可以僅計算自相關函數(shù)在31整數(shù)倍幀處的值,判斷這些幀中是局部最大值的幀數(shù)是否滿足預設要求,如果是,則判決出該音樂片段屬于三拍系,否則均判決該音樂片段屬于兩拍系。
繼續(xù)參見圖1。
步驟102 對待分析音樂片段進行停頓點的檢測。
在本步驟中對待分析音樂片段的信號本身進行能量幅度檢測,無論是強伴奏還是弱伴奏的音樂,每一句歌詞之間都會有短暫的停頓,停頓點處的能量幅度均達到波谷,且這些停頓點的出現(xiàn)位置是周期性的,周期的長度就是每一句歌詞的持續(xù)時間。
本步驟中,檢測停頓點的方法可以包括但不限于以下兩種
其一、檢測待分析音樂片段的能量幅度曲線波谷位置,將波谷位置確定為停頓點。
其二、檢測音樂片段的信號能量幅度低于預設幅度低點的位置,如果連續(xù)多幀低于預設幅度低點,則取該連續(xù)多幀的中點作為停頓點,否則直接將檢測到的位置作為停頓點。預設幅度低點可以通過經驗值選取。
在檢測出停頓點后,根據(jù)各停頓點間的時間間隔提取停頓點的周期值。例如可以將各停頓點間的時間間隔的平均值作為停頓點的周期值。
步驟103 根據(jù)停頓點的周期值以及步驟101的判決結果,計算每分鐘的節(jié)拍數(shù)。
具體的計算方法可以包括以下步驟Sl至S3
Si、根據(jù)停頓點的周期值以及停頓點間的小節(jié)數(shù),確定出每個小節(jié)的時間長度。
通常一個停頓點之間為一句歌詞的長度,一句歌詞包含4個小節(jié),用停頓點的周期值除以停頓點間的小節(jié)數(shù)即可得到每個小節(jié)的時間長度。
S2、根據(jù)步驟102的判決結果,即是三拍系還是兩拍系,確定出每個小節(jié)包含的節(jié)拍數(shù)。
如果確定出該音樂片段屬于三拍系,則每個小節(jié)包含3個節(jié)拍,如果確定出該音樂片段屬于兩拍系,則每個小節(jié)包含2個節(jié)拍。
可以看出本發(fā)明實施例中雖然也會利用音樂片段的自相關函數(shù),但是對其進行峰值搜索來判斷音樂片段所屬的音樂拍系,即確定每個小節(jié)包含的節(jié)拍數(shù)。
S3、根據(jù)每個小節(jié)包含的節(jié)拍數(shù)以及每個小節(jié)的時間長度就可以計算出每分鐘的節(jié)拍數(shù),即待分析音樂片段的BPM。
需要說明的是,上述步驟Sl至步驟S3僅是本發(fā)明實施例提供的其中一種實現(xiàn)方法,當然還可以采用其他實現(xiàn)方式,例如根據(jù)步驟102的判決結果確定出每個小節(jié)包含的節(jié)拍數(shù),然后根據(jù)停頓點間的小節(jié)數(shù)確定停頓點間包含的節(jié)拍數(shù),最后再結合停頓點的周期值,確定出每分鐘的節(jié)拍數(shù)。
優(yōu)選地,在步驟S3之后還可以進一步對計算出的BPM進行優(yōu)化處理,即判斷BPM 是否超出預設的合理值范圍,如果是,繼續(xù)執(zhí)行步驟S4。
S4、如果計算出的BPM低于合理范圍的最低值,則將該BPM的值乘以2作為優(yōu)化后的BPM ;如果計算出的BPM高于合理范圍的最高值,則將該BPM的值除以2作為優(yōu)化后的 BPM。如果步驟S3的計算結果正好落于預設的合理值范圍內,則無需進行優(yōu)化處理。
例如,假設合理范圍為40 120,如果在步驟S3計算出的BPM為30,則很有可能是相鄰兩個節(jié)拍之間還存在一個節(jié)拍出現(xiàn)了漏檢測,因此應該將BPM的值乘以2,得到60作為正確的BPM。如果在步驟S3計算出的BPM為180,則很有可能是相鄰兩個節(jié)拍之間多檢測出了一個節(jié)拍,因此應該將BPM的值除以2,得到90作為正確的BPM。這種優(yōu)化是針對音樂具有節(jié)拍的模糊性進行的,將其命名為2倍優(yōu)化。
以上是對本發(fā)明所提供的方法進行的詳細描述,下面結合實施例二對本發(fā)明所提供的裝置進行詳細描述。
實施例二、
圖3為本發(fā)明實施例二提供的分析音樂BPM的裝置結構圖,如圖3所示,該裝置具體包括拍系判決單元300、停頓檢測單元310和BPM計算單元320。
拍系判決單元300對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決待分析音樂片段所屬的音樂拍系。其中求取音樂信號的自相關函數(shù)是現(xiàn)有技術在此不再詳述。
該拍系判決單元300可以具體包括峰值搜索模塊301、峰值判斷模塊302和拍系確定模塊303。
峰值搜索模塊301對待分析音樂片段的自相關函數(shù)進行峰值搜索,確定每一節(jié)拍包含的幀數(shù)1。具體地,在確定出自相關函數(shù)后,為了確定每一節(jié)拍包含的幀數(shù)1需要對自相關函數(shù)進行峰值搜索,峰值所對應的采樣幀數(shù)就是要尋找的幀數(shù)1。例如,假設音樂片段的自相關函數(shù)橫坐標取值范圍為0 1000幀,通過對自相關函數(shù)進行峰值搜索,確定出橫坐標取60時自相關函數(shù)值最大,于是1為60,即確定每一節(jié)拍包含的幀數(shù)為60。
由于對音樂信號進行了截斷操作,不可避免的會出現(xiàn)頻譜泄露,所謂頻譜泄露就是在本不應該出現(xiàn)能量的頻率點上仍有能量出現(xiàn)。信號被截斷得越短,頻譜泄露越嚴重,為了減小頻譜泄露對峰值搜索的精度所產生的影響,可以進一步對待分析音樂片段的自相關函數(shù)疊加窗函數(shù),例如高斯窗函數(shù),從而利用窗函數(shù)的旁瓣抑制泄露出的頻譜分量,起到頻譜平滑的作用。
在選擇高斯窗函數(shù)時,由于高斯窗函數(shù)由均值μ和方差σ 2兩個參數(shù)決定,其中均值μ決定了高斯窗函數(shù)最大值出現(xiàn)的位置,而方差ο2決定了高斯窗函數(shù)的主瓣寬度, 根據(jù)經驗大多數(shù)音樂的BPM分布在80 120,因此高斯窗函數(shù)的均值μ選擇為80 120。 方差ο 2的選擇關系到主瓣寬度,當選定方差ο 2后BPM值落在區(qū)間[μ-σ,μ + σ]內的百分比超過70%,落在[μ-2 0,μ+2 O]的百分比超過95%,因此,O的取值范圍可以為 40 60。疊加窗函數(shù)的過程實際上就是將自相關函數(shù)與窗函數(shù)直接相乘,在此不再詳述。
峰值判斷模塊302分別計算自相關函數(shù)在xl的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,X為預設的正整數(shù)。
優(yōu)選地,通常流行音樂的拍系為兩拍系或者三拍系,因此χ可以取2或者3。
拍系確定模塊303如果峰值判斷模塊的判斷結果為是,則確定待分析音樂片段屬于X拍系。
舉個例子,以1取2和3為例,首先計算自相關函數(shù)在21、41、61...幀處的值,判斷這些幀中是局部最大值的幀數(shù)是否滿足預設要求,其中預設要求可以是幀數(shù)超過預設的數(shù)量閾值或者比例超過預設的比例閾值等;計算自相關函數(shù)在31、61、91...幀處的值,判斷這些幀中是局部最大值的幀數(shù)是否滿足預設要求。如果21、41、61...幀中是局部最大值的幀數(shù)滿足預設要求,則判決出該音樂判斷屬于兩拍系;如果31、61、91...幀中是局部最大值的幀數(shù)滿足預設要求,則判決出該音樂片段判斷屬于三拍系。
另外,在實際應用中,由于絕大多數(shù)音樂的拍系屬于兩拍系或者三拍系,為了降低運算量,峰值判斷模塊302可以僅計算自相關函數(shù)在31、61、91...幀處的值,判斷這些幀中是局部最大值的幀數(shù)是否滿足預設要求,如果是,則拍系確定模塊303判決出該音樂片段屬于三拍系,否則均判決該音樂片段屬于兩拍系。
停頓檢測單元310對音樂片段進行停頓點的檢測。具體地,可以采用以下兩種檢測方式
方式一、檢測待分析音樂片段的能量幅度曲線波谷位置,將波谷位置確定為停頓點ο
方式二、檢測待分析音樂片段的信號能量幅度低于預設幅度低點的位置,如果連續(xù)多幀的能量幅度低于預設幅度低點,則取該連續(xù)多幀的中點作為停頓點,否則直接將檢測到的位置作為停頓點。
BPM計算單元320根據(jù)停頓點的周期值以及拍系判決單元300的判決結果,計算每分鐘的節(jié)拍數(shù)作為當前音樂片段的BPM。
具體地,BPM計算單元320可以采用但不限于以下兩種方式
方式一、根據(jù)停頓點的周期值以及停頓點間的小節(jié)數(shù),確定每個小節(jié)的時間長度; 根據(jù)拍系判決單元300的判決結果,確定每個小節(jié)包含的節(jié)拍數(shù);根據(jù)每個小節(jié)包含的節(jié)拍數(shù)以及每個小節(jié)的時間長度,計算每分鐘的節(jié)拍數(shù)作為待分析音樂片段的BPM。
方式二、根據(jù)拍系判決單元300的判決結果確定出每個小節(jié)包含的節(jié)拍數(shù);根據(jù)停頓點間的小節(jié)數(shù)確定停頓點間包含的節(jié)拍數(shù);利用停頓點間包含的節(jié)拍數(shù)以及停頓點的周期值,計算每分鐘的節(jié)拍數(shù)作為待分析音樂片段的BPM。
除此之外,該裝置還可以包括BPM優(yōu)化單元330,用于判斷BPM計算單元320計算出的BPM是否超出預設的合理值范圍,如果是,繼續(xù)執(zhí)行如果計算出的BPM低于合理值范圍的最低值,則將計算出的BPM的值乘以2作為優(yōu)化后的待分析音樂片段的BPM ;如果計算出的BPM高于合理值范圍的最高值,則將計算出的BPM的值除以2作為優(yōu)化后的待分析音樂片段的BPM。
在本發(fā)明中雖然用到了相關函數(shù)的峰值搜索技術,但在本發(fā)明中并不是用于確定相關函數(shù)的周期值從而計算BPM,而是用于完成拍系判決,即確定每小節(jié)包含的節(jié)拍數(shù)。本發(fā)明進行BPM計算的關鍵是利用停頓檢測獲取停頓點的周期值,再結合拍系判決的結果確定出音樂片段的BPM。這種方式無論是強伴奏還是弱伴奏均能夠獲得準確的BPM分析結果。
利用本發(fā)明實施例提供的上述方法和裝置能夠計算從待分析音樂中選取的各音樂片段的BPM,然后對各音樂片段的BPM進行融合后就能夠確定出待分析音樂的BPM。其中從待分析音樂中選取音樂片段的策略以及對各音樂片段的BPM進行融合的策略本發(fā)明并不限制。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內。
權利要求
1.一種分析音樂每分鐘節(jié)拍數(shù)BPM的方法,其特征在于,該方法包括.51、對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決所述待分析音樂片段所屬的音樂拍系;.52、對所述待分析音樂片段進行停頓點的檢測;.53、根據(jù)停頓點的周期值以及所述步驟Sl的判決結果,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
2.根據(jù)權利要求1所述的方法,其特征在于,所述步驟Sl具體包括.511、對所述待分析音樂片段的自相關函數(shù)進行峰值搜索,確定每一節(jié)拍包含的幀數(shù).1 ;.512、分別計算自相關函數(shù)在xl的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,χ為預設的正整數(shù),如果判斷結果為是,則確定所述待分析音樂片段屬于 χ拍系。
3.根據(jù)權利要求2所述的方法,其特征在于,在步驟Sll中對所述待分析音樂片段的自相關函數(shù)進行峰值搜索之前還包括對所述待分析音樂片段的自相關函數(shù)疊加窗函數(shù)。
4.根據(jù)權利要求2所述的方法,其特征在于,所述步驟S12為分別計算所述自相關函數(shù)在31的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,如果是, 則判決出所述待分析音樂片段屬于三拍系,否則判決出所述待分析音樂片段判斷屬于兩拍系。
5.根據(jù)權利要求1所述的方法,其特征在于,所述步驟S2具體包括檢測所述待分析音樂片段的能量幅度曲線波谷位置,將波谷位置確定為停頓點;或者, 檢測音樂片段的信號能量幅度低于預設幅度低點的位置,如果連續(xù)多幀的能量幅度低于預設幅度低點,則取所述連續(xù)多幀的中點作為停頓點,否則直接將檢測到的位置作為停頓點。
6.根據(jù)權利要求1所述的方法,其特征在于,所述步驟S3具體包括根據(jù)停頓點的周期值以及停頓點間的小節(jié)數(shù),確定每個小節(jié)的時間長度;根據(jù)所述步驟Sl的判決結果,確定每個小節(jié)包含的節(jié)拍數(shù);根據(jù)每個小節(jié)包含的節(jié)拍數(shù)以及每個小節(jié)的時間長度,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM ;或者,根據(jù)所述步驟Sl的判決結果確定出每個小節(jié)包含的節(jié)拍數(shù);根據(jù)停頓點間的小節(jié)數(shù)確定停頓點間包含的節(jié)拍數(shù);利用停頓點間包含的節(jié)拍數(shù)以及停頓點的周期值,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
7.根據(jù)權利要求1所述的方法,其特征在于,在所述步驟S3之后還包括 判斷計算出的BPM是否超出預設的合理值范圍,如果是,繼續(xù)執(zhí)行步驟S4 ;54、如果計算出的BPM低于所述合理值范圍的最低值,則將計算出的BPM的值乘以2作為優(yōu)化后的所述待分析音樂片段的BPM ;如果計算出的BPM高于所述合理值范圍的最高值, 則將計算出的BPM的值除以2作為優(yōu)化后的所述待分析音樂片段的BPM。
8.一種分析音樂每分鐘節(jié)拍數(shù)BPM的裝置,其特征在于,該裝置包括拍系判決單元,用于對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決所述待分析音樂片段所屬的音樂拍系;停頓檢測單元,用于對所述待分析音樂片段進行停頓點的檢測;BPM計算單元,用于根據(jù)停頓點的周期值以及所述拍系判決單元的判決結果,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
9.根據(jù)權利要求8所述的裝置,其特征在于,所述拍系判決單元具體包括峰值搜索模塊,用于對所述待分析音樂片段的自相關函數(shù)進行峰值搜索,確定每一節(jié)拍包含的幀數(shù)1 ;峰值判斷模塊,用于分別計算自相關函數(shù)在xl的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求,χ為預設的正整數(shù);拍系確定模塊,用于如果所述峰值判斷模塊的判斷結果為是,則確定所述待分析音樂片段屬于χ拍系。
10.根據(jù)權利要求9所述的裝置,其特征在于,所述峰值搜索模塊在對所述待分析音樂片段的自相關函數(shù)進行峰值搜索之前,還用于對所述待分析音樂片段的自相關函數(shù)疊加窗函數(shù)。
11.根據(jù)權利要求9所述的裝置,其特征在于,所述峰值判斷模塊具體計算所述自相關函數(shù)在31的整數(shù)倍幀處的值,并判斷是局部最大值的幀個數(shù)是否滿足預設要求;所述拍系確定單元如果所述峰值判斷模塊的判斷結果為是,則判決出所述待分析音樂片段屬于三拍系,否則判決出所述待分析音樂片段屬于兩拍系。
12.根據(jù)權利要求8所述的裝置,其特征在于,所述停頓檢測單元具體檢測所述待分析音樂片段的能量幅度曲線波谷位置,將波谷位置確定為停頓點;或者,檢測待分析音樂片段的信號能量幅度低于預設幅度低點的位置,如果連續(xù)多幀的能量幅度低于預設幅度低點,則取所述連續(xù)多幀的中點作為停頓點,否則直接將檢測到的位置作為停頓點。
13.根據(jù)權利要求8所述的裝置,其特征在于,所述BPM計算單元具體根據(jù)停頓點的周期值以及停頓點間的小節(jié)數(shù),確定每個小節(jié)的時間長度;根據(jù)所述拍系判決單元的判決結果,確定每個小節(jié)包含的節(jié)拍數(shù);根據(jù)每個小節(jié)包含的節(jié)拍數(shù)以及每個小節(jié)的時間長度,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM ;或者,根據(jù)所述拍系判決單元的判決結果確定出每個小節(jié)包含的節(jié)拍數(shù);根據(jù)停頓點間的小節(jié)數(shù)確定停頓點間包含的節(jié)拍數(shù);利用停頓點間包含的節(jié)拍數(shù)以及停頓點的周期值,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。
14.根據(jù)權利要求8所述的裝置,其特征在于,該裝置還包括BPM優(yōu)化單元,用于判斷所述BPM計算單元計算出的BPM是否超出預設的合理值范圍, 如果是,繼續(xù)執(zhí)行如果所述計算出的BPM低于所述合理值范圍的最低值,則將所述計算出的BPM的值乘以2作為優(yōu)化后的所述待分析音樂片段的BPM ;如果所述計算出的BPM高于所述合理值范圍的最高值,則將所述計算出的BPM的值除以2作為優(yōu)化后的所述待分析音樂片段的BPM。
全文摘要
本發(fā)明提供了一種分析音樂每分鐘節(jié)拍數(shù)(BPM)的方法和裝置,其中方法包括S1、對待分析音樂片段的自相關函數(shù)進行峰值搜索,判決所述待分析音樂片段所屬的音樂拍系;S2、對所述待分析音樂片段進行停頓點的檢測;S3、根據(jù)停頓點的周期值以及所述步驟S1的判決結果,計算每分鐘的節(jié)拍數(shù)作為所述待分析音樂片段的BPM。使用本發(fā)明能夠提高弱伴奏音樂片段的BPM分析準確性。
文檔編號G10H1/00GK102543052SQ20111041536
公開日2012年7月4日 申請日期2011年12月13日 優(yōu)先權日2011年12月13日
發(fā)明者宋輝 申請人:北京百度網(wǎng)訊科技有限公司