胡麗敏 桂 浩 杜佶峻 湯健雄 陳開一
1(武漢音樂學院 湖北 武漢 430060)2(武漢大學 湖北 武漢 430072)
自動音樂轉錄(Automatic Music Transcription, AMT)是將聲學音樂信號轉換為音樂符號的過程[7]。AMT 作為音樂領域內的一項新興技術,不僅可以直接用于實現音頻到音樂符號表示的轉換,還能在樂曲匹配、哼唱識別等領域提供重要的技術支撐。AMT最直接的應用就是讓科學家完整地記錄下來即興演奏的音符以便能夠再現它。即使對于專業音樂家來說,轉錄多音音樂(Polyphonic Music)也是一項十分困難的任務,雖然單聲道信號的自動音高估計問題已經解決,但是目前的多音音樂轉錄仍然存在著許多重大挑戰。
AMT 問題可以分為幾個子任務,包括:多音級檢測、音符開始/結束檢測、響度估計和量化、樂器識別、節奏信息提取和時間量化。自動轉錄中核心問題是估計時間幀中的多音音高,也被稱為多音級檢測或多F0檢測。圖1所示為鋼琴自動轉譜的過程。近幾年,音高的檢測問題已經在深度學習發展的基礎上取得了重大突破,而音符的時值檢測問題仍處于探索階段,因此本文的核心關注點也從音樂中音高和時值的識別展開。

圖1 自動轉譜過程
本文綜合應用了基本樂理、聲學模型、深度學習和多標簽多分類相關知識,針對當下基于深度學習方法的自動轉錄技術進行了深入的研究和探討,并提出了音符級自動音樂轉錄算法。此算法很好地利用了音符起止點處顯著的頻譜特征,捕獲鋼琴音樂在時間結構和空間結構上的特點,在識別上達到了優越的性能。在這種優化的自動轉錄技術上,提出了一種后處理方案,用以進行音符級自動時間對齊,并應用到現場演奏的鋼琴輔助練習中,取得了較好的效果。
常數Q變換(Constant Q Transform, CQT)是將數字音樂信號處理為基于頻譜的技術。該變換非常適合于音樂數據,與快速傅里葉變換相比,其輸出在對數頻率下能有效地計算出與音樂頻率相關的振幅,因此可以使用更少的頻率區間來有效地覆蓋音樂頻率范圍,并且這在頻率跨越幾個八度音程的情況下被證明是有用的。
除此之外,該變換表現出的頻率分辨率隨著較高的頻率而降低,這反映了人的聽覺系統在較低的頻率下光譜分辨率更好,在較高的頻率下時間分辨率更好。由此可知,在處理鋼琴音頻的時候,常數Q變換是最為理想的。
但是,相對于傅里葉變換和梅爾頻譜,CQT的實現更加棘手。這是因為在計算每個頻率格時使用的樣本數量不同,這會影響所實現窗口函數的長度。下面是CQT的具體實現。
CQT本質上可以看作是一系列對數間隔的濾波器,其中第k個濾波器的頻譜寬度為δfk,δfk與前一個濾波器之間的有著倍數關系:
(1)
式中:δfk是第k個濾波器的帶寬;fmin是最小濾波器上濾波帶的中心頻率;n指的是每個鋼琴八度上濾波器數。
(2)

(3)
接下來,在處理截取信號時間片段的問題上,一般會進行周期延拓,做法是使用窗口函數。在上面定義的基礎上構建等效的漢明窗口如下:
(4)

(5)
CQT的計算將線性頻譜轉為以2為底的log頻譜,充分利用了音符頻率的數值規律。CQT目前作為音樂信號處理最主流的方法,被大量使用于音樂聲學模型和前期音樂信號的特征處理中,在文獻[1,3,7,12]中,CQT將音樂信號轉換為頻譜圖,為后續機器學習方法和數值分析方法提供了優質的音譜特征。
近年來主流的AMT研究中,識別結果的重點主要強調了起音點和音高,對于音符止音點、響度和音色的問題并沒有給予太多的關注。而當前音符級轉錄最重要的問題在于無法完全預估整個音符的時值信息以及多音級估計問題上無法得到提升。如果只是識別音符的起音點,并將起音點處的音高當成兩個起音點之間聚合而成音符音高的話,會造成音符時值估計不準的問題。同時多音級識別如果僅僅考慮當前時刻上下文的音符頻譜,而不考慮音符序列全文中的上下文信息,多音級識別問題的性能將不能得到提升。
如圖2所示,可以看到圖中a處,由于圖中的音符在持續過程中有新的音符出現,于是轉錄會直接將舊音符進行截斷。圖中b處,其中一個音符的停止時間應該提前,但是由于下一個音符出現時間較晚,因此這里音符的停止時間將會延后。如此一來,當出現種種限制時,當前音符級的自動音樂轉錄根本無法判斷準確的音符時值。此外,圖中顯示的多音轉錄結果也并不是十分完美,錯音和漏音出現的頻率仍舊不低。針對此問題,提出了針對音符起止點的自動轉錄方法,幫助解決當前無法準確判別音符時值和多音級估計瓶頸的問題。

圖2 識別方法中存在的問題
基于CNN的轉錄方法提出一種單獨識別音符起止點和音高的模型,解決了文獻[12]不能完整預估時值的問題。鋼琴發聲的敲擊和衰減階段(對應音符的起點和止點)在頻譜圖上特性會非常明顯,CNN具有良好的平移不變性,能夠處理頻譜圖中多個方位的起止點特征。基于CNN的轉錄模型如圖3所示。

圖3 基于CNN的轉錄方法模型
模型首先接受一個輸入音樂信號,在預處理過程中通過CQT提取時頻域信息。參與訓練的有三個神經網絡,模型中起點識別和止點識別都使用兩個單獨的卷積神經網絡進行,再利用一個額外的多音級識別網絡識別起點和止點附近的音級。分開處理起點和止點問題能夠讓模型專注解決一個問題,使訓練效果達到最優。
(1) 數據預處理。
為了將音頻轉換為計算機能夠理解的形式進行訓練,數據預處理包括兩個階段:音頻預處理和MIDI標注預處理。
音頻預處理即利用常數Q變換,將頻譜映射到log2的線性空間,使用的采樣頻率為44 100 Hz,窗口長1 024。網絡模型的輸入是一幅高確定、長不確定的頻譜圖,為頻譜圖中每幀劃定一個264頻帶×9幀的滑動窗口,固定該幀前后延伸4幀(在開始和結束部分補0),在多音級識別中,在起止點附近選擇同樣大小的窗口,作為多音級識別的輸入。多音級頻譜窗如圖4所示。

圖4 多音級識別的頻譜窗口
MIDI標注預處理是將MIDI文件轉換為計算機能理解的格式。MIDI是一個二進制文件,由頭文件塊和音軌塊組成[3]。利用MIDI元信息就可以獲取到MIDI的音符序列,將音符序列表示成三元組(NoteNum, Start, Duration)的形式,將多音軌合并到單音軌之后以Start作為排序鍵排序。之后需要將Start和Duration代表的MIDI內部事件轉換成現實事件,計算出現實時間后利用音頻預處理中的時頻域變換法將時間變換到時間幀中,與頻譜圖對應。變換后的三元序列為(NoteNumber, StartFrame, EndFrame)。
(2) 起止點與多音級識別。
基于CNN的轉錄方法第一階段是進行起止點識別,起止點識別是一個二分類問題,模型的輸入是2.1(1)節中的頻譜窗在每個時間幀上的264×9的切片。若輸入音頻恰好為起/止點則標注為1,否則為0。無差別起止點識別采用的是文獻[12]提出的結構。最終得到的是無差別起點序列(式(6))和無差別止點序列(式(7)),其中T為音樂總時間幀數。
S=(s1,s2,…,sT)si∈{0,1}
(6)
E=(e1,e2,…,eT)ei∈{0,1}
(7)
針對音樂圖像信息的時序特征,設計了一種專用于提取頻譜音級特征的網絡結構來識別多音級。第一層使用了標準的3×3的卷積核來提取空間和時間特征,然后使用了m×n的卷積核來卷積頻譜。m×n的卷積核能夠同時學習頻率和時間信息。這些濾波器可以根據m和n的設置方式學習不同的音樂元素,并且打擊樂樂器的特征在于頻率的時間演變不會很長,因此卷積核可以捕捉到小時間尺度內的聲音特質。之后使用2×2的最大池化層進行特征壓縮,再使用11×1的頻域卷積核卷積空間信息,繼續池化拉平后通過兩層全連接層,經Sigmoid激活函數激活神經元后輸出在88個音級上的概率,采用Cross-entropy進行損失計算,如圖5所示。

圖5 基于頻譜特征的網絡結構
由于多音級識別和起止點識別是兩個獨立訓練的過程,因此多音級識別的訓練數據是在標注的音符起止時間幀挑選出來的。在預測階段此方法首先會預測音符起止時間幀,然后再通過選取起止時間幀上的頻譜切片進行多音級估計。
最后一步是進行起止點對齊,它并不參與到網絡訓練當中。對齊即將式(6)和式(7)的序列進行匹配,并生成對應的三元序列與標準MIDI進行比對。在測試階段,得到無差別起止點序列S和E之后,標記其在頻譜上的時間幀位置得到起止點幀序列。音級識別基于起止點幀序列,最后得到多音級矩陣D來表達整首音樂的所有音符起止點:
(8)
遍歷D得到最后的音符三元組Note序列,并且過濾掉損壞的三元組,如式(9)所示。匹配Dp,t′=0對于任何的ts Note={(p,ts,te)∨Dp,ts=1,Dp,te=-1} (9) 式中:p為音級,代表88個鋼琴鍵,滿足0 2.1節中提出的CNN的轉錄方法沒有考慮起止點處多音級向量的時間關聯性,因此對齊效果不佳;并且丟失了原本音樂的時序性特征,忽略了多音級估計的音符內與音符序列的上下文信息,因此多音級識別上效果不是十分顯著。針對以上問題,本文提出了一種基于卷積循環神經網絡的轉錄方法,將CNN和RNN進行結合,并添加了一層自注意力層形成CRNN網絡,最后輸出與標注同樣個數的單元數,同樣采用Cross-Entropy進行損失函數的計算。這種網絡結構可以同時從時間和空間維度上學習音樂特征,實現端到端的音符起止點識別。見圖6。 圖6 基于CRNN的音符自動轉錄方法 與基于CNN的方法不同,該方法需要將頻譜圖按塊切分輸入網絡中,塊是n幀頻譜中的聚合態,互相不重疊。第一步仍是利用CNN進行特征提取,得到一個p×step的步長向量,p為特征高,step為時間步長。之后被切分為step個p×1的向量輸出到LSTM中,經過自注意力層后全鏈接輸出n維向量,轉錄完成后同樣進行起止點對齊生成音符序列。 (1) 數據預處理。 識別的預處理工作仍包含兩部分:音頻預處理和標注預處理。 基于CNN的轉錄方法在進行音頻預處理的時候是由單個幀為中心劃分窗口截取而成的,并且幀與幀之間還有重疊部分。本節中模型需要識別頻譜切片的內部的時間結構和音級結構,所以這種小時間切片不能滿足要求。除此之外還必須保證完整的上下文關系,針對以上要求,音頻預處理需要分為兩部分。第一步,選擇音頻時間切片長度。選取的音頻時間切片長度不應過長,也不應過短。過長會影響整體訓練速度,導致LSTM整體性能下降;過短則沒有包含太多有意義的信息。因此在切片上選取了2 s、4 s和8 s的長度分別進行了實驗。第二步,消除無上下文的音頻片段。無上下文的音頻片段指的是在音頻切片中有來自上一個切片的音頻,或者未完全結束的音頻。為了不影響訓練和識別的質量,因此在頻譜上對這些音頻進行了平滑處理。 與2.1節中的方法不同的是,本節提出的網絡模型將起止點與音級三者一并進行識別,因此采用了一種新編碼來表示音高和起止點信息。MIDI中的聲音狀態分為音符激活態和音符非激活態,而音符的開始和結束狀態都是一種特殊的狀態,于是該方法將音符的狀態分為三種,起狀態、止狀態和非起非止狀態。每個音級的三種狀態需要一個二維向量進行編碼: (1,0)表示這個音符的起狀態,這種狀態的條件是該音符前一幀處于未激活狀態而當前幀處于激活狀態; (0,1)表示這個音符的止狀態,這種狀態的條件是該音符當前幀處于激活狀態而后一幀處于非激活狀態; (0,0)表示這個音符的非起非止狀態,這種狀態的條件是該音符的前后幀都屬于激活或者非激活狀態。 對每個音級進行這樣的編碼,則需要88×2=176維的向量。利用2.1節方法中的三元組(NoteNumber, StartFrame, EndFrame)就可以構建一個標注矩陣Mtrue,矩陣的高P=176,寬為輸入頻譜切片的時間幀數T。 (2) 基于CRNN的起止點識別模型。 本節的模型如圖7所示,首先使用CNN提取頻譜特征,然后將特征切片輸入到后續的序列識別層中,這個序列識別層在每個時間步上的輸出也會輸入到自注意力層,自注意力層主要可以通過尋找音符序列的內部依賴性提高識別準確率。經過自注意力層的向量會通過一層全連接,使用Sigmoid激活函數輸出176維的概率真值,表示起止點在當幀的激活情況,并同樣使用Cross-entropy計算損失函數。在預測階段會選擇一個閾值,將每一維輸出值分類為0或者1,表達音符起止點中的信息。下面詳細介紹該模型的各個部分。 圖7 基于CRNN的音符起止點識別模型 首先依照2.2(1)節的數據預處理方法,將音頻譜圖處理成切片,再得到音符起止點標注矩陣,標注矩陣的每一列就對應著一個時間步的標注。模型使用CNN作為頻譜切片的特征提取器,再利用后續的RNN來對頻譜特征進行識別工作。本方法所采用的CNN網絡結構類似于2.1(2)中的網絡結構,如圖8所示。 圖8 特征提取器結構 此網絡結構中的卷積核同樣含有在2.2節中敘述的卷積核特性。為了方便進行特征壓縮,實驗將頻譜切片的時間軸和頻率倉軸進行轉置。因此,特征提取器的輸入為一個高T幀、長264的頻譜倉的特征譜圖切片。首先譜圖會經過一個3×3的卷積核,提取頻譜內部的時間和空間上細節特征。接下來經過一個3×12的卷積核,既可以用于在頻譜的頻域空間上提取音樂八度范圍內的頻譜特征,又可以在小范圍的時間內提取到頻譜的變化特征。再接下來經過一個1×2的最大池化將頻譜的頻域進行壓縮,減少由于卷積操作所導致的頻域特征均值偏移。1×11的卷積核主要可以用來提取頻域長范圍內的空間特征。最后一層1×2的最大池化與之前的原理類似,通過將特征Reshape之后,特征維度將變換為(T,3 712),最后在頻域維度上再使用一層全鏈接層,將維度變換到(T,768),特征抽取工作就完成了。 在序列識別層中,采用RNN來對上文提取的特征進行識別,通常采用LSTM作為序列模型進行識別。由于LSTM只能根據前一時刻的時序信息來預測下一時刻的輸出,但音符序列不僅跟前一狀態有關,還可能和未來狀態有聯系。比如預測音符起點時,不僅依賴于之前的狀態和當前輸入的特征切片,還與未來該音符可能出現的止點狀態有關,在預測止點音符時,同時需要依賴之前的起點音狀態。因此本模型中引入了雙向LSTM(Bidirectional LSTM,BiLSTM)。 LSTM傳遞的信息會隨著時間步主機傳遞而漸漸失效,因此當音頻長度過長,LSTM對這種音樂特征的學習會呈現一定的下降趨勢,針對這一問題,繼而在網絡結構中加入了自注意力機制,通過扁平化的位置計算方式來解決這種線性遺忘的問題。 實驗采用的是MAPS(MIDI Aligned Piano Sounds)數據集和MAESTRO(MIDI and Audio Edited for Synchronous TRacks and Organization)數據集。MAPS數據集提供了CD音質(44 kHz采樣立體聲音頻)的鋼琴錄音和已對齊的MIDI文件作為錄音的標注。數據集的大小約為40 GB,MAPS使用了一些自動生成技術,提供了音樂MIDI文件與相對應的音頻,提供了大量的聲音數據和可靠的標注(音高和起止時間)。在實驗當中,本文使用MUS音樂集中70首音樂作為訓練集,19首音樂作為測試集。MAESTRO數據集是谷歌與國際鋼琴比賽Piano-e-Competition的組織者合作得到的數據集,該數據集中使用的都是比賽中鋼琴演奏的原始數據,數據量達到90 GB左右。由于時間關系,本文僅選用了MAESTRO數據集中2017年的比賽曲目進行訓練和測試。MAESTRO 2017中有283首鋼琴曲目,本文將使用這些鋼琴曲中226首樂曲作為訓練集,使用57首用作測試。實驗采用的硬件環境為Linux 4.15.0-72-generic,Memery220G,物理顯卡GeForce GTX 1080Ti,顯存11 GB。 基于CNN的音符級鋼琴轉錄方法的總共包含三個實驗:無差別起止點識別、多音級識別和起止點對齊。基于CRNN的音符級鋼琴轉錄方法包括兩個實驗:音符起止點識別和起止點對齊。首先,第一個模型的無差別起止點識別屬于二分類問題,使用二分類問題的評價標準。其次,第一個模型的多音級識別和第二個模型的音符起止點識別采用了同一個標準。最后兩個模型起止點對齊部分都使用了同一標準。 二分類問題利用精準度(Precision)、召回率(Recall)和F值(F-Measure)值作為評價標準,它們的計算方式如下: (10) (11) (12) 多音級識別是一個多標簽多分類問題,文獻[1]提出了一種進行多音級分類的評價標準。依照上分預測分類的四種定義,而這里這些量進行了延伸。TP(t)的定義為,統計起止點幀t處預測音級i被分為正類時,實際音級i也為正類的個數。類似地,FP(t)定義為在起止點幀t處預測音級i被分類為負類時,實際屬于正類的個數;FN(t)定義為在起止點幀t處音級i被分類為負類時,實際也屬于負類的個數。多音級分類的評價指標如下: (13) (14) (15) 除此之外,為了讓轉錄更直觀地體現準確性,實驗使用了一種精確匹配率的方式EMR(Exact Match Rate),EMR評價將多標簽問題降級到二分類問題上,它認為只有預測標簽和真實標簽全部匹配才被分為正類,否則就是假類,如式(16)所示。式中:T(t)函數表示當預測幀和實際幀所有音級狀態完全匹配時輸出1,否則輸出0。 (16) 最后,針對起止點識別,通過將能對齊上的起止點數占起止點平均值中的比例來進行計算。對齊率MR如下: (17) (1) 無差別起止點實驗。如表1和表2所示,CNN的判別是三種方法中效果最好的。在無差別起點識別中,CNN的F1值比DNN高出0.051 4,比雙向BiLSTM高出0.030 2;在無差別止點識別當中,CNN的F1值比DNN要高0.071 7,比LSTM要高0.016 1。 表1 基于MPAS的無差別起止點識別 表2 基于MAESTRO的無差別起止點識別 (2) 多音級識別實驗。本文將設計的卷積網絡模型分別和DNN、LSTM、Troxel[7]和Sigtia[8]模型進行了對比。在MAPS和MAESTRO數據集上,本文網絡在F1值上比DNN要高出0.137 7和0.140 5,比LSTM高出0.112 1和0.113 1,比Sigtia的模型要高出0.053 7和0.067 8,比Troxel的模型要高出0.009 4和0.000 5,在兩個數據集上分別達到了最高的80.68%和82.83%。如表3和表4所示。 表3 MAPS ENSTDkCl數據集——起點上多音級識別 表4 MAESTRO 2017數據集——起點上多音級識別 (3) 起止點對齊實驗。在得到識別的音符起止點后,再進行起止點對齊,對齊結果見表5。 表5 基于CNN的起止點對齊 (1) 起止點識別實驗。如表6和表7所示,音符起止點的識別實驗分三種情況進行,分別將頻譜切片切為2 s、4 s和10 s,然后將整個頻譜切片作為模型輸入,預測每一幀的起止點和多音級情況。與基于CNN的轉錄識別縱向對比,可以看到基于CRNN的音符起止點識別在F1與前者相近時,整精確匹配率上要優于前者。可能因為CRNN對起止點及其音級是逐幀判別的,準確預測空幀的能力給CRNN的精確匹配率上帶來了很大的優勢。但是僅在F1值上可以看出,使用CRNN端到端地識別起止點,可以給識別率上帶來較大的提升。 表6 基于CRNN的音符起止點識別(MPS數據集) 表7 基于CRNN的音符起止點識別(MAESTRO數據集) (2) 起止點對齊實驗。基于CRNN的起止點對齊結果如表8所示。可以看出基于CRNN的起止點對齊在對齊率上比基于CNN的起止點對齊要好,其中在MAPS的數據集和MAESTRO數據集比基于CNN的結果要高出0.403 3和0.308 9。可以證明,本文使用的CRNN很大程度上能彌補僅基于CNN的音符起止點在對齊上的劣勢。 表8 基于CRNN起止點對齊 如表9所示,音符序列正確性的定義為轉錄正確音符序列占全部實際音符序列之比。其中Troxel的CNN+音樂語言模型雖然在正確性上要優于兩階段CNN+音樂語言模型,但是兩階段CNN的模型有完整的音符時值估計方法,而CRNN的音符轉錄方法是高于前兩種轉錄方法的,最后CRNN+自注意力機制的模型又優于僅使用CRNN的模型,并且在長頻譜片段中擁有更完美的性能表現。 表9 音符序列正確性結果 本文提出的兩種音樂轉錄辦法還是借鑒自傳統的機器學習。傳統的機器學習對于多分類問題一般采用N元交叉熵函數進行損失計算和反向傳播。傳統機器學習的標簽類別之間呈正交關系(譬如貓狗識別),類與類之間沒有明顯的內在聯系和結構。對于音樂而言,特別是鋼琴樂,音與音之間存在特殊的物理聯系和邏輯聯系,簡單地采用交叉熵函數在很大程度上會損失掉鋼琴鍵值之間的數據聯系性。尤其是在對和弦類型的音符識別時候,會丟失大部分數據,在反向迭代的過程中不能很好地矯正模型。基于本文,后續希望能夠探索一種符合鋼琴樂的距離判定方法,從而在優化器進行梯度下降的時候能夠更全面地提供平滑準確的梯度來訓練參數。2.2 基于CRNN的轉錄方法



3 實 驗
3.1 實驗評價標準
3.2 基于CNN的轉錄實驗結果





3.3 基于CRNN的轉錄實驗結果



3.4 轉錄音符序列實驗

4 結 語