(西北工業大學 計算機學院 音頻、語音與語言處理研究組 西安 710072)
摘 要:提出一種基于自適應白化的音樂節拍實時跟蹤算法。在對音樂信號進行觸發點檢測之前,構建音樂信號短時傅里葉變換的當前頻域峰值表,對各頻段的頻譜幅值進行自適應加權,使各個頻段保持相似的動態范圍,改善音樂信號起伏變化較大時觸發點檢測準確性低的問題,進而提高節拍實時跟蹤效果。在MIREX2006標準測試庫上的節拍跟蹤實驗表明,自適應白化的引入可整體提高Pscore,特別是對于起伏變化很大的音樂信號,節拍跟蹤效果的提高非常明顯。
關鍵詞:音樂節拍跟蹤; 自適應白化; 觸發點檢測; 實時
中圖分類號:TP301.6文獻標志碼:A
文章編號:1001-3695(2009)05-1676-03
Adaptive whitening for realtime music beat tracking
WANG Yue XIE Lei YANG Yulian
(Audio Speech Language Processing Group School of Computer Science Northwestern Polytechnical University Xi’an 710072 China)
Abstract:This paper proposed an adaptivewhiteningbased realtime algorithm for music beat tracking introduced adaptive whitening into onset detection phase of a music beat tracker. It preprocessed the STFT frames by adaptively normalizing the magnitude of each bin according to a present spectral peak table. This allowed each magnitude bin to achieve a similar dynamic range over time and improved onset detection performance for music with spectral rolloff effects and stronglyvarying dynamics. Experimental results on the MIREX 2006 dataset shows that the proposed adaptivewhiteningbased beat tracker achieves superior performance and it can significantly improve the Pscores for music samples with stronglyvarying dynamics.
Key words:music beat tracking; adaptive whitening; onset detection; realtime
0 引言
實時跟蹤音樂節拍是人類的一種自然能力。人們在聽音樂時會本能地識別音樂的節拍,經常邊聽音樂邊踏腳、拍手或點頭,跟著節拍舞動。利用計算機實現音樂節拍的實時自動跟蹤具有廣泛的應用。例如,在大型的演唱會中,舞臺燈光效果往往能給演出錦上添花,歌手在投入演唱時,五光十色的燈光如果能隨著音樂節拍自動打開和關閉,可以給觀眾帶來視聽的雙重享受。機器人舞蹈是另外一個有趣的應用,機器人隨著音樂的播放,利用接收到的音樂信號分析出音樂節拍,根據節拍強弱做出相應的舞蹈動作,與音樂同舞,其樂無窮。這些應用往往要求節拍提取算法具有實時性或因果性,即能根據已播放的音樂在短時間內預測下一節拍的時刻。
利用計算機進行節拍提取分為兩個階段。第一階段是從輸入信號中構建中層表示(middlerepresentation)或驅動函數(driving function)[1]。通常不能直接對輸入的音樂信號進行節拍跟蹤,一方面是因為原始信號中包含了大量的冗余信息;另一方面,音樂在主觀聽感上是由一系列的事件組成,節拍就是一種明顯的事件,人們在聽歌時,會跟蹤間斷的節拍事件而非連續的音樂旋律,因此需要對信號進行簡化,突出事件出現的可能位置。第二階段是從中層表示中提取節拍周期和進行節拍開始點檢測,在音樂開始階段假定節拍穩定出現,隨著音樂的播放,一旦出現節拍周期變化很大的狀況,算法應該能及時捕捉,反映到節拍的周期輸出中。
現行的節拍提取算法大致可以分為:a)是對MIDI這種符號化記譜音樂進行節拍分析,應用面相對較窄[2];b)是直接處理波形音頻(waveform)的非實時算法,如Dixon[3]的BeatRoot算法,它通過多代理機系統從產生的候選節拍中提取最有效的節拍;c)是處理波形音頻的實時算法,如Goto[4]的方法能夠實時跟蹤多個層次的節拍,但它對輸入有嚴格限制,要求音樂是穩定的4/4拍的節奏,且算法代價大、效率不高。國際音樂信息檢索評測MIREX[5],特別針對節拍提取開展年度競賽,吸引了眾多大學和機構的參與。
近來,Davies[6]提出了一種基于上下文的節拍實時跟蹤算法,該算法用最近6 s的音樂信號,預測將來1.5 s內音樂的節拍,具有較好的實時性。其中節拍周期和節拍開始點的提取過程相互獨立,計算復雜度低。Davies的實時算法對輸入音樂的節拍沒有特殊要求,但對起伏變化很大的音樂,節拍提取的準確性較差,因為其基于觸發點檢測的中層表示部分容易丟失大量高頻信息,造成觸發點檢測錯誤,影響節拍周期提取的正確性。本文針對這一問題,在觸發點檢測之前引入自適應白化算法,通過對頻譜能量進行自適應加權,改善起伏較大音樂觸發點檢測不準的問題,提高實時節拍跟蹤效果。在MIREX2006[5]標準數據集上進行的實驗證明了改進方法的有效性。
1 觸發點檢測存在的問題
節拍自動跟蹤的中層表示有多種方法,如基于觸發點檢測的方法[5]和多子帶分解方法[7]等。觸發點檢測通常應用在音樂的節奏分析中,用來表示音樂事件和可能的音樂節拍點。觸發點是指音樂信號的開始點,通常是信號幅值從零到達峰值的點。Scheirer指出[7],節拍點一定是觸發點,觸發點不一定是節拍點,然而觸發點為節拍提取提供了重要線索。觸發點檢測主要有基于頻域能量、基于高頻內容、基于相位和基于復頻域的檢測等方法[6]。Davies[6]的實驗表明,不同類型的觸發點檢測方法對于節拍跟蹤的效果影響較大。其中基于復頻域差分的觸發點檢測方法效果最好,但該方法在音樂信號起伏變化很大,或信號低頻段集中大量頻譜能量導致roll off現象時,跟蹤效果并不理想。
圖1(a)示意了《貝多芬第五交響曲》前15 s的波形,這段音樂信號開始的能量很高,之后急劇降低,又突然增強,后又急劇減小,這給觸發點檢測造成了很大的困難。其中對基于頻域能量或者頻譜能量的檢測方法造成的影響較大。起伏變化很大的音樂信號,在進行短時傅里葉變換(shorttime Fourier transform STFT)之后會出現大量的范圍變化很大的峰值。對STFT幅值進行限定閾值的歸一化,可以在一定程度上提高觸發點檢測效果,但是對基于能量的觸發點檢測方法提高效果不明顯[8]。從圖2(a)所示的同一段樂曲的頻譜圖中可以看出,低頻占據了絕大部分頻譜能量,低頻段信息會“淹沒”高頻段信息(即roll off現象),從而導致基于復頻域和高頻內容的觸發點檢測方法失效。
另一方面,實時節拍分析存在一定的慣性,如果音樂開始的節拍跟蹤不準,會引起連鎖反應。對于開始能量很強的音樂,在節拍預測時,會默認當前信號的能量很強、節拍很規律,但是當能量隨時間急劇衰減時,這樣的變化通常不能被有效地檢測,最終影響后續節拍檢測的準確性。
2 基于自適應白化的實時音樂節拍跟蹤
2.1 自適應白化算法
為解決音樂信號起伏變化較大引起的觸發點檢測準確性低的問題,在觸發點檢測之前,引入Stowell等人[8]的自適應白化算法。每次從音頻流讀取512個采樣點后,進行512點短時傅里葉變換。由于每個點都代表了相應的頻段(bin),進行短時傅里葉變換后,保存目前可見的相應頻段的最大值,稱為當前頻域峰值表(present spectral peak table PSPT)。當進行下一幀信號的短時傅里葉變換之后,將各個頻段與當前頻域峰值表中的相應頻段進行比對,若小于當前的頻譜峰值輪廓相應頻段,則進行增量相加并進行更新;若大于等于當前的頻譜峰值輪廓,則更新為當前的頻譜峰值輪廓。該方法可使各個頻段保持相似的動態范圍。
Stowell的原始白化算法只采用前一幀的頻譜值來表示當前頻譜值(cur_mag=a×old_mag)。本文同時考慮了當前幀和前一幀的影響,將自適應加權修改為
cur_mag=(1-a)×cur_mag + a×old_mag(1)
其中:cur_mag為當前幀頻譜值;old_mag為前一幀頻譜值;a為加權系數。實驗表明,同時考慮前一幀和當前幀的效果較好。
《貝多芬第五交響曲》前15 s的波形經過自適應白化的效果如圖1(b)和圖2(b)所示。白化后的波形圖與原波形圖相比,在信號強和弱的部分均呈現出相似的動態范圍。對于白化后的頻譜圖,在同一段時間內,高頻和低頻部分的能量差別顯著減小,整個頻譜能量分布變得較為平坦和均勻,之前提到的roll off現象已基本消除。
自適應白化算法偽代碼如下:
Adaptive whitening(fft_magnitude)
輸入:當前STFT變換后的512點幅值
輸出:經過自適應白化后的512點幅值
if frames==1
for each 1<=i<=512
if fft_magnitude(i)>threshold //經驗值
pspt(i)=fft_magnitude(i);
else
pspt(i)=threshold;
end for
end if
for each 1<=i<=512
old_mag=pspt(i);
cur_mag=fft_magnitude(i);
if cur_mag cur_mag=(1-a)*cur_mag+a*old_mag;//a是加權系數 end if pspt(i)=cur_mag; end for for each 1<=i<=512 fft_magnitude(i) /=max (pspt(i),threshold); end for 2.2 算法特點 自適應白化算法具有以下特點: a)自適應性。自適應白化是針對中層表示的問題提出的,它不同于對每一幀都進行線性加權的高頻內容方法,又不同于信號的預加重處理,而是針對當前待處理幀之前的信號進行相應的動態調整和加權。 b)實時性。實時節拍跟蹤必然要求在進行中層表示時也能實時進行加權,該算法只利用當前信號之前幀的信息進行加權,效率高,能夠滿足實時性要求。 c)低耗性。整個加權過程只需要一個保存當前的頻域峰值表的數組。針對當前幀各個頻率段的幅值進行頻域峰值的更新,即可進行自適應加權。這樣的時空代價符合節拍提取的低耗性要求。 3 基于自適應白化的實時節拍跟蹤算法 Davies等人[6]的節拍跟蹤算法是基于普通模態和上下文模態的雙模態機制方法,有效地解決了節拍跟蹤的慣性問題。算法首先對輸入的音樂信號進行加窗和短時傅里葉變換,然后提取觸發點。當音樂信號達到1.5 s(128幀)后,將其更新輸入到緩沖分析窗(6 s),進行節拍周期提取和開始點檢測。節拍周期提取和開始點檢測由普通模態和上下文模態完成。上下文模態負責維持節拍的連續性;普通模態則負責檢測節拍的變化。算法首先進入普通模態,對自相關進行瑞利先驗加權和梳狀濾波加權,提取周期和節拍開始點,之后檢測所提取節拍周期的變化情況。如果連續三個節拍周期起伏較小,就認為音樂的節拍比較穩定,應該保持節拍的穩定性和連貫性,進入上下文模態,以上下文模態提取的節拍周期和節拍開始點,計算并輸出節拍位置;否則仍然維持在普通模態,根據普通模態提取的節拍周期和節拍開始點計算并輸出節拍位置。普通模態和上下文模態是通過不同的概率分布對自相關序列進行加權的,普通模態采用瑞利分布,上下文模態采用高斯分布。 本文將前述自適應白化算法引入到節拍跟蹤中。自適應白化算法主要關注節拍跟蹤算法的中層表示部分,在提取觸發點之前,將強弱信號調整到相似的動態范圍。在保持原算法剩余部分不變的情況下,首先對窗口化后的短時傅里葉變換進行自適應白化,再進行觸發點檢測,最后從中層表示中提取節拍周期和進行節拍開始點檢測。這樣便構成了基于自適應白化的實時節拍跟蹤算法,整個算法流程如圖3所示。 4 實驗 4.1 數據集 實驗數據由MIREX2006[5]提供的公開測試樣本構成,涵蓋了不同風格、不同語言、不同節奏的音樂。每個樣本時長30 s,單聲道,采樣率為44.1 kHz,量化精度16 bit。每個樣本由40位專業人士進行人工節拍標注,40組標注好的節拍被當做正確的節拍,作為評判參照。 4.2 評測標準 評測標準采用MIREX2006中定義的Pscore。對每個音樂樣本,忽略其前5 s的節拍,對其后25 s的節拍構建一個頻率為100 Hz的脈沖,對每一組人工標注的節拍位置構建脈沖矢量as[n],S表示第1~40組節拍,n表示該組節拍的第n個拍子。然后用它與實際算法得出的節拍y[n]進行互相關檢驗,稱為Pscore,定義如下: P=1/s ∑Ss=1 1/NP ∑+Wm=-W ∑Nn=1y[n]#8226;as[n-m](2) 其中:N表示樣本長度;NP取樣本和實際輸出節拍更多的節拍數;窗口W用來描述一定的誤差,定義為 W=round(0.2×median(diff(find(as))))(3) Pscore越高,表示算法提取的節拍與人工標注越接近。 4.3 實驗結果及探討 考慮到實時性和低耗性,選取基于復頻域差分、頻譜能量和高頻內容三種觸發點檢測方法對20個樣本進行實驗,加權系數和閾值設定為經驗值0.96和0.5。實驗結果如表1所示。 對基于復頻域的觸發點檢測表明,自適應白化后Pscore比白化前有略微提高;對基于能量的觸發點檢測和基于高頻內容的出發點檢測,自適應白化后的Pscore比白化前分別提高2.8%和5.4%左右。 對單個樣本計算的Pscore統計顯示,自適應白化使 train8、train13 和train15三個樣本的Pscore提高較大,如表2所示。對波形和頻譜圖的觀察表明,這三個樣本也正是起伏很大的音樂樣本。這驗證了自適應白化對起伏較大音樂節拍跟蹤的有效性。 另外,train1、 train8、 train9和train11的Pscore 遠遠高于其他樣本,這些樣本音樂節奏性強且節奏適中,為120 BPM左右,是人類聽覺比較傾向的節奏[6]。節奏偏快(如train19和train20)或偏慢(如train12)的音樂,其Pscore普遍偏低,這是因為Davies算法普通模態中的瑞利先驗分布是有偏的,即對于節奏為120 BPM左右的音頻幀在加權時賦予較大值,而對其他節奏的音頻幀賦值較小,尤其是對于偏快和偏慢的節奏,權值接近于零。這導致節奏較快和較慢的樣本出現時,節拍跟不上或者節拍太快。 需要指出的是,本文實時節拍跟蹤算法的Pscore與MIREX2006評測中提供的算法有一定差距,排在其評測結果的第五名。然而MIREX2006評測中的所有算法均為非實時算法,本文算法具有較好的實時性,能夠利用過去6 s的音樂信號,預測將來1.5 s內音樂的節拍。另外Dixon[3]的實驗表明,MIREX2006為每個樣本提供了40個標注者提供的節拍標注,然而從這40個標注者提供的正確節拍中抽取節拍所計算的Pscore,取值在0.34~0.73。也就是說,不同的人對于同一首音樂的節拍感覺也相差很大。 5 結束語 本文針對Davies實時節拍提取算法中中層表示存在的問題引入自適應白化方法,改善音樂信號起伏變化較大時觸發點的檢測效果,從而提高了節拍跟蹤的準確性。在MIREX2006標準測試數據上的實驗表明了改進算法的有效性。根據本文的算法,設計了一個音樂節拍實時跟蹤演示系統,如圖4所示。今后的工作包括:完善自適應白化算法,減少算法對加權系數和閾值設定這兩個參數選擇的依賴;針對原有的有偏先驗分布估計,引入新的先驗估計模型,進一步提高實時節拍跟蹤算法的效果。