基於 SVM 和增強型 PCP 特徵的和絃識別

Galois發表於2020-05-29

和絃識別的普遍演算法簡說

依據音樂理論知識於 1999 年將訊號能量壓縮到樂曲的 12 個音級上,提出使用12 維的音級輪廓特徵音級輪廓(Pitch Class Profile, PCP)作為和絃特徵進行模式匹配來識別和絃。在和絃特徵方面提出了 HPCP(Harmonic PCP)特徵,將其用於和絃識別的鍵估計系統中並取得了 66.7% 的正 確鍵估計,應用諧波積光譜與 PCP 特徵相結合的 EPCP(Enhanced PCP)特徵同傳統 PCP 特徵相比,具有相同根音的和絃具有更好的識別率。當然還有文獻結合人耳聽覺特性和音樂理論提出了新的識別特徵 MPCP(Mel PCP),克服了PCP 特徵在低頻段特徵模糊和峰值處容易發生混倄的缺陷等。
對於和絃分類模型的選擇,除模板匹配方法外, MPCP(Mel PCP)採用了條件隨機場分割方法,該方法對觀測序列沒有獨立性要求,具有表達長距離依賴性和交疊性特徵的能力,缺點是執行時間長;採用神經網路進行和絃識別,可以有效地避免噪聲對和絃識別率的影響,但該方法只能識 別有限的歌曲;此外,還有文獻說到將統計學方法隱馬爾可夫模型(Hidden Markov Model, HMM)應用於和絃的分割和識別中,最終的和絃識別率達到了75%。但 HMM 是一種產生式模型需要嚴格的獨立性假設;近年來,有研究者提出將延時隱馬爾可夫模型(Duration HMM)應用於和絃識別。

和絃識別流程

和絃的自動識別主要包括 2 個階段:特徵提取與和絃識別。
使用節拍跟蹤同步提取基於瞬時頻率的音級特徵 PCP,然後將這些特徵輸入到結構化支援向量機 SVM 中,輸出和絃標籤,最後同標準和絃標籤比對完成和絃的識別。

3cFOLHoS1M.png!large

訊號特徵提取

訊號特徵的計算由節拍跟蹤和 PCP 特徵計算 2 個部分組成。
首先通過節拍跟蹤獲取與節拍構成相符的音訊節拍點資訊,然後計算出每個節拍間隔內的音級特徵 PCP。

節拍跟蹤

節拍跟蹤用於獲取音樂訊號中的節拍資訊,確定每個節拍在訊號中的大致時間位置。它是自動伴奏及轉錄、計算機輔助音訊編輯以及音樂相似性等應用的基礎,同步節拍特徵也是歸一化不同音樂版本之間速率變化的一種很好的途徑。
這裡採用了「動態規劃(DP)節拍跟蹤演算法」

音訊輸入\to FFT\ 變換獲取起始點能量包絡\to 自相關最佳速率估計\to 節拍檢測

首先需將音訊訊號進行快速傅立葉變換(Fast Fourier Transform, FFT),通過一個權重矩陣將傅立葉頻譜變換成 40 維 Mel 頻譜。計算每一維頻譜沿時間軸的一階差分(只有起始點資訊),將整個頻譜內的值相加,濾除直流後得到起始能量包絡。
然後對整個訊號的起始能量進行自相關運算,並在其對數域上加高斯窗獲取單一主峰值,將自相關中最大的滯後值作為最佳的速率估計。
最後將起始能量包絡和全域性速率輸入節拍檢測模組,通過動態規劃演算法獲取節拍時間位置資訊,完成節拍跟蹤。

基於節拍的增強型 PCP 特徵的提取

第一部分

音級特徵 PCP 是音樂資訊檢索中廣泛使用的一種訊號特徵。在基於瞬時頻率 IF 的音級頻譜中通過估計瞬時頻率 IF 的光譜區域可以從噪聲中區分音調元素,同時處理調諧中的差異。

結合音高頻率倒譜系數 PFCC,改進了基於 IF 的 PCP 特徵的提取演算法,這是一種對樂器型別以及音色變化更具魯棒性的音級特徵 PCP。

將經分幀處理後的音訊訊號進行 FFT 變換得到每一幀的訊號能量 E,對差分相位進行求導,得到代表音調的瞬時頻率 IF。這時可以採用類似於 Mel 尺度的音調尺度\color{red}\lg(C\times Ε+1)代替 EC表示音高正常數,在實驗中取C=100。 然後對使用對數表示的音調進行 DCT 變換獲取 PFCC 係數, 只保留上層PFCC 係數並對其進行 DCT 逆變換得到變換後的音調向量,記做\color{red}\lg E。對能量進行對數壓縮是考慮到聲音強度的對數感。

第二部分

進行頻譜對映。按照音樂理論中的平均律以對數方式將變換後的音調向量\color{red}\lg E對映為新的音級特徵 PCP,對映公式:

\displaystyle p(k)=12\times\lg\left(\frac{k\times f_s}{N\times f_r}\right)\bigg|\mathrm{mod}12\\{}\\ f_s=取樣率\\{}\\ f_s/N=頻率間隔\\{}\\ f_r=參考頻率「對應與十二平均律中的C1音」\\{}\\ k\times f_s/N=每一個分量的頻率

忽略八度關係只考慮把頻率能量分為 12 個頻帶,將所有與某一特定音級相對應的頻率值的音級分量根據以下公式相加得到一個 12 維的音級向量 PCP:

\displaystyle PCP=\sum_{k:p(k)=p}|\lg E(k)|,\ p=1,2,\cdots,12

第三部分

根據節拍跟蹤得到的節拍點計算每個節拍間隔內 PCP 的平均值作為基於節拍的音級特徵:

\displaystyle \overline{PCP}=\frac{1}{M}\sum_{m=1}^MPCP(p),p=1,2,\cdots,12\\{}\\ M=每個節拍內的幀數

選用不同樂器演奏同一首樂曲時得到的音級 PCP 光譜特徵圖:

A 樂器彈奏時的傳統 PCP 光譜圖
WTwU49gM1V.png!large

B 樂器彈奏時的傳統 PCP 光譜圖
V2jWMhfhF5.png!large

A 樂器彈奏時的增強型 PCP 光譜圖
jtFKTiHywV.png!large

B 樂器彈奏時的增強型 PCP 光譜圖
qHl4wiV9nD.png!large

通過 A B 樂器彈奏時的增強型 PCP 光譜圖來看,光譜特徵之間的差異更小,說明了增強型的 PCP 特徵對不同樂器的魯棒性更強。

到此增強型 PCP 特徵演算法的計算完畢,接下來就是「結構化的支援向量機」了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章