陳超藝,陳新度,吳 磊
(1.廣東工業(yè)大學(xué)廣東省計(jì)算機(jī)集成制造重點(diǎn)實(shí)驗(yàn)室;2.廣東工業(yè)大學(xué)省部共建精密電子制造技術(shù)與裝備國(guó)家重點(diǎn)實(shí)驗(yàn)室,廣東 廣州 510006)
光學(xué)樂(lè)譜識(shí)別[1](Optical Music Recognition,OMR)技術(shù)是光學(xué)字符識(shí)別(Optical Character Recognition,OCR)的一個(gè)分支,可以提取樂(lè)譜圖像中的音符信息。該技術(shù)廣泛應(yīng)用于樂(lè)譜檢索、播放及編輯分析中,有利于音樂(lè)的數(shù)字化和智能化發(fā)展,在音樂(lè)教學(xué)、創(chuàng)作等領(lǐng)域具有重要作用。
國(guó)內(nèi)外常用的樂(lè)譜包括五線(xiàn)譜、簡(jiǎn)譜和奏法譜(Tablature),相較于五線(xiàn)譜和簡(jiǎn)譜,奏法譜用文字、數(shù)字或其他記號(hào)表示演奏者的手指位置,更加適合吉他等帶有品格的撥弦樂(lè)器[2],國(guó)內(nèi)外普遍使用奏法譜作為吉他譜。吉他具有獨(dú)特的音色和寬廣的音域,可以演奏多種不同風(fēng)格的音樂(lè),是世界上最多人學(xué)習(xí)與演奏的樂(lè)器之一[3]。隨著吉他譜使用人群的日益增多,對(duì)其進(jìn)行識(shí)別的需求也愈發(fā)迫切。五線(xiàn)譜是大部分樂(lè)器的通用樂(lè)譜,國(guó)內(nèi)外對(duì)于光學(xué)樂(lè)譜識(shí)別的研究主要集中在五線(xiàn)譜的譜線(xiàn)檢測(cè)刪除[4-7]和音符識(shí)別[8-13]等方面。吉他使用的記譜方法與五線(xiàn)譜在音符和時(shí)值的表示方式上有本質(zhì)區(qū)別,五線(xiàn)譜的識(shí)別方法不能有效應(yīng)用于吉他譜中。此外,現(xiàn)有的吉他譜識(shí)別方法需對(duì)圖像進(jìn)行大量分割識(shí)別,存在識(shí)別步驟繁瑣、識(shí)別速度慢和識(shí)別精度低等問(wèn)題[14-15]。
針對(duì)上述問(wèn)題,本文提出一種基于深度學(xué)習(xí)的吉他譜識(shí)別方法,該方法無(wú)需刪除譜線(xiàn),識(shí)別步驟簡(jiǎn)單,可準(zhǔn)確識(shí)別多聲部吉他譜的音符和時(shí)值。
吉他譜可分為彈唱譜和獨(dú)奏譜,其中彈唱譜中有用于表示手指按壓位置的和弦圖,在譜線(xiàn)上用“X”或其他符號(hào)表示手指彈撥的位置,而獨(dú)奏譜一般不帶有和弦圖,在譜線(xiàn)上用數(shù)字或其他符號(hào)代表手指要按壓和彈撥的位置,具體如圖1 所示。彈唱譜只表示樂(lè)曲的伴奏,而獨(dú)奏譜同時(shí)帶有樂(lè)曲的伴奏和主旋律,音符和時(shí)值相對(duì)復(fù)雜,本文以吉他獨(dú)奏譜為例進(jìn)行識(shí)別研究。

Fig.1 Guitar solo tablature圖1 吉他獨(dú)奏譜
吉他譜有6 條固定譜線(xiàn),由上到下依次為第一譜線(xiàn)到第六譜線(xiàn),分別與吉他的六弦對(duì)應(yīng)。譜線(xiàn)上的數(shù)字為品格音符,表示該弦需要按壓的品格,同時(shí)需要彈奏該譜線(xiàn)對(duì)應(yīng)的弦。吉他譜的水平方向?yàn)闃?lè)曲演奏的方向,代表樂(lè)曲的不同時(shí)刻,垂直方向?yàn)槟骋粫r(shí)刻需要同時(shí)彈奏的音符。第六譜線(xiàn)下方有用于表示該時(shí)刻音符時(shí)值的減時(shí)線(xiàn),音符時(shí)值與減時(shí)線(xiàn)數(shù)的關(guān)系為:

式中,N 表示N 分音符,n 為減時(shí)線(xiàn)數(shù)。例如當(dāng)減時(shí)線(xiàn)數(shù)為2 時(shí),由式(1)可算出N 為16,即該音符為十六分音符。
減時(shí)線(xiàn)可以表達(dá)的音符時(shí)值有限,因此在吉他譜中有附點(diǎn)符號(hào)和增時(shí)線(xiàn)用于豐富音符時(shí)值。附點(diǎn)符號(hào)表示延長(zhǎng)音符時(shí)值的一半,增時(shí)線(xiàn)表示增加一個(gè)四分音符的時(shí)值。此外,吉他譜中還有各種樣式的休止符,用于記錄不同長(zhǎng)短音的間斷時(shí)值,可豐富樂(lè)曲的情感表達(dá)。若以十六分音符為單位時(shí)間值,各音符對(duì)應(yīng)的時(shí)值如圖2 所示。
Muse 是由國(guó)人研發(fā),支持多種樂(lè)譜混排和腳本輸入的打譜軟件[16],在國(guó)內(nèi),人們普遍使用Muse 進(jìn)行吉他譜的編制。支持腳本輸入是Muse 的強(qiáng)大之處,通過(guò)編寫(xiě)程序隨機(jī)生成標(biāo)簽和腳本,再將腳本輸入到Muse 中,便可隨機(jī)生成大量吉他譜。圖3 為吉他譜數(shù)據(jù)集制作流程圖,圖4 為各符號(hào)對(duì)應(yīng)標(biāo)簽。

Fig.2 Note duration圖2 音符時(shí)值

Fig.3 Production process of guitar score data set圖3 吉他譜數(shù)據(jù)集制作流程

Fig.4 Note label圖4 音符標(biāo)簽
生成的吉他譜每行4 小節(jié),每小節(jié)4 拍,包含多種常用時(shí)值和休止符號(hào),如圖5 所示。

Fig.5 Randomly generated guitar tablature圖5 隨機(jī)生成的吉他譜
識(shí)別方法基于CRNN 模型[17]建立,無(wú)需進(jìn)行譜線(xiàn)去除,原理如圖6 所示。第一步是將樂(lè)譜圖像水平分割為品格音符圖像、減時(shí)線(xiàn)圖像、增時(shí)線(xiàn)圖像和休止符圖像。第二步是將減時(shí)線(xiàn)圖像分別與各譜線(xiàn)的品格音符圖像疊加,輸入到CRNN_1 模型中,輸出6 條譜線(xiàn)各時(shí)刻的品格音符;將減時(shí)線(xiàn)圖像、增時(shí)線(xiàn)圖像、休止符圖像疊加,輸入到CRNN_2 模型中,輸出樂(lè)譜各時(shí)刻的時(shí)值音符。第三步是將輸出的音符全局關(guān)聯(lián),獲取樂(lè)譜語(yǔ)義,如彈撥位置、品格音符的時(shí)值等。

Fig.6 Principle diagram of guitar tablature recognition method based on deep learning圖6 基于深度學(xué)習(xí)的吉他譜識(shí)別方法原理示意
吉他譜具有兩個(gè)維度上的信息,需利用垂直投影或水平投影[18]將樂(lè)譜分割成多個(gè)僅帶有一維信息的圖像,然后逐一識(shí)別。垂直投影分割符合讀譜順序,但隨著音符數(shù)量的增多,樂(lè)譜分割和識(shí)別的次數(shù)也會(huì)變多,會(huì)造成識(shí)別速率慢和識(shí)別步驟繁瑣等問(wèn)題,且通過(guò)垂直投影不能很好地分割出增時(shí)線(xiàn)、休止符等音符,容易與減時(shí)線(xiàn)混淆,具體如圖7 所示。因此,本文采用水平投影的方法對(duì)樂(lè)譜圖像進(jìn)行分割。

Fig.7 Guitar tablature vertical projection圖7 吉他譜垂直投影
6 條橫向譜的線(xiàn)是吉他譜的一大特點(diǎn)。減時(shí)線(xiàn)位于第六譜線(xiàn)下方固定位置,增時(shí)線(xiàn)位于第三譜線(xiàn)與第四譜線(xiàn)之間,休止符位于第四譜線(xiàn)與第五譜線(xiàn)之間。將吉他譜進(jìn)行水平投影,通過(guò)分析6 條譜線(xiàn)的影像,可以準(zhǔn)確分割出品格音符、減時(shí)線(xiàn)、增時(shí)線(xiàn)和休止符圖像,具體如圖8 所示。水平投影分割將吉他譜分為9 個(gè)部分進(jìn)行識(shí)別,與垂直投影分割相比,水平投影分割與識(shí)別的次數(shù)大大減少,具有更高的效率。

Fig.8 Guitar tablature horizontal projection圖8 吉他譜水平投影
CRNN 是一種用于序列符號(hào)識(shí)別的模型,由卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和鏈?zhǔn)綍r(shí)序分類(lèi)(Connectionist Temporal Classification,CTC)函數(shù)組成,結(jié)構(gòu)如圖9所示。

Fig.9 CRNN model structure圖9 CRNN 模型結(jié)構(gòu)
CNN 部分對(duì)符號(hào)序列圖像進(jìn)行特征提取,采用VGG 結(jié)構(gòu)[19]。RNN 部分對(duì)序列特征進(jìn)行識(shí)別,采用深層雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(Bi-directional Long Short-Term Memory,BiL-STM),BiLSTM 具有“門(mén)機(jī)制”,可以防止訓(xùn)練時(shí)梯度消失,且雙向網(wǎng)絡(luò)可以根據(jù)序列的前向信息和后向信息進(jìn)行更準(zhǔn)確的預(yù)測(cè)。CTC 函數(shù)位于轉(zhuǎn)錄層,用于實(shí)現(xiàn)音符分類(lèi),即將BiLSTM 輸出的序列轉(zhuǎn)化為標(biāo)簽,可以解決不定長(zhǎng)序列的對(duì)齊問(wèn)題。
對(duì)于BiLSTM 給定輸入y的情況下,輸出序列標(biāo)簽l的概率為:

式中,B表示刪除路徑中的重復(fù)標(biāo)簽和非字符標(biāo)簽,π為所有經(jīng)過(guò)B變換后為l的路徑。損失函數(shù)的定義為:

式中,X為數(shù)據(jù)集,Ii為輸入圖片,li為真實(shí)標(biāo)簽序列,yi為輸入圖片Ii經(jīng)過(guò)卷積網(wǎng)絡(luò)層和循環(huán)網(wǎng)絡(luò)層的輸出序列。
若將分割后的吉他譜圖像直接輸入到CRNN 模型中,則只能識(shí)別出圖像各個(gè)音符的類(lèi)型,不能識(shí)別出音符位于哪個(gè)時(shí)刻,會(huì)導(dǎo)致音符之間無(wú)法進(jìn)行關(guān)聯(lián)。在吉他譜中,每個(gè)時(shí)刻對(duì)應(yīng)的減時(shí)線(xiàn)上都會(huì)有一條豎線(xiàn),利用此特點(diǎn),可將減時(shí)線(xiàn)圖像與其他圖像結(jié)合起來(lái)進(jìn)行識(shí)別。在識(shí)別品格音符時(shí),將品格音符圖像與減時(shí)線(xiàn)圖像等比例疊加,再作為輸入圖像輸入到CRNN 模型中,可輸出所有時(shí)刻的音符和非音符,從而推斷出品格音符所在時(shí)刻。在識(shí)別時(shí)值音符時(shí),由于各個(gè)時(shí)值音符不會(huì)位于同一時(shí)刻,故將分割出的3 個(gè)時(shí)值音符圖像等比例疊加輸入到CRNN 模型中,即可輸出所有時(shí)值音符的分類(lèi)。因此,需要訓(xùn)練兩個(gè)CRNN 模型,一個(gè)用于識(shí)別譜線(xiàn)上的品格音符,另一個(gè)用于識(shí)別時(shí)值音符。
樂(lè)譜中的每個(gè)符號(hào)都不是絕對(duì)獨(dú)立的,需將每個(gè)識(shí)別提取的符號(hào)信息在邏輯或語(yǔ)義上進(jìn)行全局關(guān)聯(lián)[20]。在本文建立的方法中,時(shí)值音符的識(shí)別都是獨(dú)立的,但各個(gè)符號(hào)并不能獨(dú)立存在,附點(diǎn)符號(hào)必須與減時(shí)線(xiàn)或休止符關(guān)聯(lián),增時(shí)線(xiàn)必須與減時(shí)線(xiàn)關(guān)聯(lián),減時(shí)線(xiàn)必須與品格音符關(guān)聯(lián)。
吉他譜具有兩個(gè)維度的信息,在進(jìn)行音符全局關(guān)聯(lián)時(shí),先將各個(gè)時(shí)值符號(hào)關(guān)聯(lián),得到各個(gè)時(shí)刻的完整時(shí)值,然后依次將同時(shí)刻的品格音符關(guān)聯(lián)到各個(gè)時(shí)刻的非休止符時(shí)值上。
實(shí)驗(yàn)環(huán)境為Intel Core i5-8500 CPU,Nvidia GTX 1080Ti GPU,16GB 運(yùn)行內(nèi)存,Ubuntu 20.04 操作系統(tǒng),TensorFlow2.0 深度學(xué)習(xí)框架。
隨機(jī)生成416 張吉他譜,經(jīng)過(guò)水平投影分割后,得到品格音符圖像13 980 張,時(shí)值音符圖像2 330 張。訓(xùn)練批量大小為32,學(xué)習(xí)速率為0.001,品格音符圖像和時(shí)值音符圖像的識(shí)別模型各經(jīng)過(guò)約25 000 次迭代后,識(shí)別準(zhǔn)確率趨于穩(wěn)定,如圖10 所示。
以序列準(zhǔn)確率作為評(píng)價(jià)標(biāo)準(zhǔn),計(jì)算方式為:

式中,預(yù)測(cè)正確的序列數(shù)為預(yù)測(cè)序列與標(biāo)簽序列完全一致的數(shù)量。訓(xùn)練結(jié)果表明,品格音符在測(cè)試集的識(shí)別準(zhǔn)確率約為98.3%,時(shí)值音符在測(cè)試集的識(shí)別準(zhǔn)確率約為99.1%,均具有較高的識(shí)別精度。

Fig.10 Change of note recognition accuracy圖10 音符識(shí)別準(zhǔn)確律變化
為測(cè)試本文方法的性能,將其與傳統(tǒng)的吉他譜識(shí)別方法進(jìn)行對(duì)比,包括識(shí)別速度測(cè)試與識(shí)別精度測(cè)試。使用兩種識(shí)別方法分別對(duì)音符較少和較多的吉他譜進(jìn)行識(shí)別,計(jì)算識(shí)別時(shí)間。測(cè)試結(jié)果如表1 所示,其中吉他譜一音符數(shù)量69 個(gè),吉他譜二音符數(shù)量125 個(gè)。

Table 1 Recognition speed comparison表1 識(shí)別速度對(duì)比 單位:s
傳統(tǒng)識(shí)別方法通過(guò)對(duì)樂(lè)譜進(jìn)行多次投影分割,將各個(gè)音符單獨(dú)分割出來(lái)再逐一識(shí)別。從表1 可以看出,本文識(shí)別方法比傳統(tǒng)吉他譜識(shí)別方法具有更快的識(shí)別速度,且隨著樂(lè)譜符號(hào)的增多,傳統(tǒng)吉他譜識(shí)別方法由于投影分割和音符識(shí)別次數(shù)增多,識(shí)別時(shí)間大大增加,而本文方法的識(shí)別時(shí)間幾乎不變。
分別對(duì)10 張采用Muse 編制的吉他譜進(jìn)行識(shí)別,評(píng)價(jià)指標(biāo)為符號(hào)錯(cuò)誤率,即誤檢、漏檢和錯(cuò)誤識(shí)別的音符數(shù)量與總音符數(shù)量的比例,分為品格音符錯(cuò)誤率和時(shí)值音符錯(cuò)誤率兩種。表2 為兩種方法的識(shí)別精度對(duì)比。

Table 2 Recognition accuracy comparison表2 識(shí)別精度對(duì)比 單位:%
傳統(tǒng)的識(shí)別方法需對(duì)吉他譜進(jìn)行水平投影分割和垂直投影分割。吉他譜具有固定的6 條譜線(xiàn),水平投影分割具有較高精度,但由于吉他譜音符的復(fù)雜性與多樣性,垂直投影分割的精度不高,不能準(zhǔn)確分割出音符圖像,導(dǎo)致傳統(tǒng)方法的識(shí)別錯(cuò)誤率較高。本文方法僅需對(duì)吉他譜進(jìn)行水平投影分割,分割后各部分的識(shí)別完全端到端,無(wú)需進(jìn)行垂直投影分割,具有更高的識(shí)別精度和更好的魯棒性。
本文針對(duì)吉他譜的特點(diǎn),提出一種基于深度學(xué)習(xí)的吉他譜識(shí)別方法,并與傳統(tǒng)的吉他譜識(shí)別方法進(jìn)行了比較。實(shí)驗(yàn)結(jié)果表明,傳統(tǒng)識(shí)別方法過(guò)于依賴(lài)圖像分割,能否準(zhǔn)確地分割出音符圖像對(duì)于吉他譜的識(shí)別精度有較大影響。相比之下,本文方法具有更快的識(shí)別速度和更高的識(shí)別精度,品格音符識(shí)別精度達(dá)98.3%,時(shí)值音符識(shí)別精度達(dá)
99.1%。
本文方法雖然可以有效識(shí)別吉他譜,但仍需對(duì)吉他譜進(jìn)行多次投影分割識(shí)別,且目前僅對(duì)吉他譜中的品格音符與時(shí)值音符進(jìn)行了識(shí)別研究,而在吉他譜中可能還包含其他音符,如掃弦、滑弦符號(hào)等。因此,今后研究的重點(diǎn)將主要集中在完善吉他譜的識(shí)別與實(shí)現(xiàn)吉他譜的完全端到端識(shí)別方面。