李圣辰,吳雨松
(北京郵電大學(xué) 信息光子學(xué)與光通信研究院,北京 100876)
越來越多的研究使用機(jī)器學(xué)習(xí)與深度學(xué)習(xí)方法分析、建模與生成符號(hào)化音樂(有別于音頻,使用符號(hào)表示的音樂,例如MIDI),越來越多的數(shù)據(jù)需要輸入這些算法進(jìn)行訓(xùn)練.因此,數(shù)據(jù)集的收集與整理變得至關(guān)重要.然而,由于較大的知識(shí)鴻溝與獲取數(shù)據(jù)的相對困難,只有很少的符號(hào)化音樂數(shù)據(jù)被收集與整理.在現(xiàn)有的符號(hào)化音樂數(shù)據(jù)集中,有相當(dāng)大一部分是西方音樂,缺乏世界上其他文化的音樂尤其是中國音樂.
盡管數(shù)字形式的符號(hào)化音樂,如MIDI文件,隨著計(jì)算機(jī)與互聯(lián)網(wǎng)的發(fā)展得到了廣泛使用,但整理完好的、具有元信息標(biāo)注的數(shù)據(jù)集寥寥無幾.自2013年開始,Raffel收集并建立了Lakh MIDI數(shù)據(jù)集[1],數(shù)據(jù)集收有176581首不重復(fù)的樂曲的MIDI文件,其中一部分標(biāo)注了元信息,并與Million Song Dataset[2]中的音樂條目對齊.Symbolic Music Midi Data[3]則收錄了20006首古典樂的MIDI文件.另有一部分符號(hào)化音樂數(shù)據(jù)集為較小型的集中于某一風(fēng)格的數(shù)據(jù)集.例如Bach Chorales Dataset[4]收集了超過400首包含4個(gè)聲部的巴赫眾贊歌音樂;Nottingham Dataset[5]收集了超過1000首包含旋律與和弦的英美民歌.現(xiàn)有的數(shù)據(jù)集中的音樂基本為西方音樂,缺乏其他文化的音樂數(shù)據(jù),特別是中國音樂.同時(shí),一些大型數(shù)據(jù)集并未標(biāo)注收錄樂曲的元信息,音樂內(nèi)容、風(fēng)格也不集中.因此我們創(chuàng)建了1個(gè)精心整理與清洗的符號(hào)化數(shù)據(jù)集——古琴數(shù)據(jù)集,其收集了來自中國古琴的琴曲.古琴數(shù)據(jù)集旨在對現(xiàn)有的符號(hào)化數(shù)據(jù)集添加更多的數(shù)據(jù)并同時(shí)帶來跨文化的音樂數(shù)據(jù).古琴數(shù)據(jù)集可以通過鏈接https:∥github.com/lukewys/Guqin-Dataset訪問.古琴數(shù)據(jù)集收集了71首古琴曲,這些古琴曲是由我們收集的琴譜轉(zhuǎn)錄而成.這些琴譜出自近期出版的帶有簡譜形式的古琴曲集[6-11],這些曲集中的古琴曲則源自古譜或古琴演奏家的演奏流傳.與紙質(zhì)或掃描形式的曲譜相比,電子形式的曲譜數(shù)據(jù)可以被檢索與統(tǒng)計(jì),因此使得古琴琴曲的計(jì)算音樂學(xué)研究成為可能.本文給出了1個(gè)基于古琴數(shù)據(jù)集的計(jì)算音樂學(xué)研究實(shí)例,提出了1種巴赫音樂與古琴音樂風(fēng)格的區(qū)分方法,通過對巴赫音樂與古琴音樂進(jìn)行基于旋律音程的統(tǒng)計(jì)建模并使用KL散度進(jìn)行分布相似度計(jì)算,巴赫音樂與古琴音樂片段可以被有效區(qū)分.
圖1 古琴Fig.1 The Guqin圖中,7根弦被橫向固定在木制的琴身上,琴弦上方的白點(diǎn)為徽位標(biāo)記,用來指示弦上音的位置.
中國古琴有時(shí)也被叫做“琴”或“七弦琴”,是1種源自中國的古老樂器.中國古琴有著細(xì)長的木制琴身與橫向固定在琴身上的7根弦,琴弦上方有著指示音位的標(biāo)記,被稱作“徽位”.中國古琴是1種彈撥樂器,通過彈撥琴弦來發(fā)出聲音,如圖1所示.
古琴有著悠久的歷史,它是中國現(xiàn)在仍用于演奏的最古老的樂器.古琴的傳說可以追溯至中國的伏羲、神農(nóng)時(shí)期.現(xiàn)存最古老的古琴距今已有2700多年的歷史,2016年出土于湖北省棗陽市的1座墓中[12].
現(xiàn)存最早的古琴譜《碣石調(diào)·幽蘭》至今已有1400余年歷史[13]19.古琴曲在千余年的發(fā)展中形成了各種風(fēng)格,同一古琴曲在流傳中也演化出了多種版本,形成不同的流派[14]157.古琴曲在中國獨(dú)立發(fā)展,與西方音樂沒有聯(lián)系,也并未受到西方音樂或西方文化的影響[14]3.
歷史上古琴譜曾使用文字譜、工尺譜、減字譜等多種方式記譜,其中使用時(shí)間最久、使用范圍最廣的為減字譜.減字譜將漢字的偏旁部首以一定方式結(jié)合,以指示指法、弦號(hào)、徽位與彈奏方式等信息.有了上述信息,就可以根據(jù)彈奏的弦與徽位轉(zhuǎn)換出每個(gè)減字譜字符對應(yīng)的音高.以減字譜記載的古琴譜如圖2(a)所示.在減字譜中,文字以從上到下的方向書寫,與中國傳統(tǒng)的縱排排版相同.
然而,傳統(tǒng)的減字譜并沒有精確地記錄琴譜的演奏方法.減字譜只是記錄了指法或音高信息,而幾乎無節(jié)奏信息的記錄[15]110.但是現(xiàn)代琴譜的記錄需要使用精確的記譜方式.自20世紀(jì)中期開始,琴家開始提出不同的古琴譜打譜方式以精確記錄古琴音樂[13]22.五線譜或簡譜開始與傳統(tǒng)的減字譜結(jié)合,共同表示古琴音樂的彈奏方法、音高與節(jié)奏.近年出版的琴譜多使用簡譜與減字譜結(jié)合的記譜方式,因此我們都使用帶有簡譜的減字譜進(jìn)行轉(zhuǎn)錄.圖2(b)所示為帶有簡譜的減字譜形式的古琴譜,減字譜書寫在簡譜下方,并且簡譜與減字譜都從左至右書寫.減字譜中的字符與簡譜中的音符相對應(yīng),以指示彈奏方法.
圖2 減字譜(a)與帶有簡譜的減字譜(b)Fig.2 The abbreviated character notation(a) and the abbreviated character notation with numbered notation(b)在減字譜中,譜面由上至下書寫,而在帶有簡譜的減字譜中,譜面從左至右書寫,簡譜在上,減字譜在下.在帶有簡譜的減字譜中,減字譜字符與簡譜音符對應(yīng).
古琴音樂中的調(diào)式多采用五度相生律.不同于西方音樂中廣泛使用的基于十二平均律的調(diào)式,中國民族調(diào)式中的五度相生律以五聲調(diào)式為主,并以此衍生出六聲調(diào)式與七聲調(diào)式.與西方音樂系統(tǒng)類似,古琴音樂中的調(diào)式也有多種調(diào)式種類及變化.盡管五聲調(diào)式與西方調(diào)式中的音有類比關(guān)系,但是它們的絕對音高頻率會(huì)有所區(qū)別.以宮調(diào)為例,“宮、商、角、徵、羽”在首調(diào)中可對應(yīng)“1,2,3,5,6”,并可對應(yīng)“C、D、E、G、A”[16]192-196.
然而,古琴音樂中的調(diào)式不僅限于五度相生律,還包括純律的調(diào)式[16]170.中國民族調(diào)式可詳見《中國樂理》[16].
古琴有著寬廣的音域,在超過4個(gè)八度范圍的聲音都較好,而古琴曲的旋律也相當(dāng)跳躍,超過1個(gè)八度的旋律音程在古琴曲中相當(dāng)普遍.依據(jù)王震亞[14]143的觀點(diǎn),琴曲曲調(diào)中常將相距八度(甚至兩個(gè)八度)的音作同音使用,經(jīng)八度音作同音使用后曲調(diào)顯得變化豐富而有活力.因此,在古琴曲中有大量八度以上的旋律音程.
古琴音樂中包含有多聲或復(fù)調(diào)的元素.古琴音樂通常使用同度或八度的雙音和弦以強(qiáng)調(diào)或突出旋律中的某些部分[14]150.因此,古琴音樂中經(jīng)常會(huì)出現(xiàn)八度平行的旋律.少數(shù)古琴音樂也會(huì)將八度平行旋律的高音旋律進(jìn)行變化,形成兩條獨(dú)立的旋律線.八度并行旋律的譜例如圖3(a)所示,獨(dú)立旋律的譜例如圖3(b) 所示.需要指出的是,在我們收集到的琴譜中,多音的情況只占很少一部分.古琴數(shù)據(jù)集中和弦只占總音符的約5%,其中絕大部分和弦只包含兩個(gè)音高.因此,古琴音樂總體上是單聲音樂,同時(shí)基本無平行旋律出現(xiàn),從而可以被看作是由單音與和弦組成的音樂序列.
圖3 數(shù)據(jù)集收錄的琴譜中八度并行旋律的譜例(a)與獨(dú)立旋律的譜例(b)Fig.3 Example of parallel melody in one octave apart(a) and independent melody line(b) in Guqin music八度并行旋律的譜例來自《釋談?wù)隆?,?dú)立旋律的譜例取自《醉漁唱晚》.需要指出的是,后者相對前者更少出現(xiàn).
原始的減字譜形式的琴譜沒有包含節(jié)奏、節(jié)拍標(biāo)記,而僅僅模糊地指示了節(jié)奏[15]110.因此,琴家通常經(jīng)過“打譜”,對古譜進(jìn)行整理、譯譜、考證、鑒別,加上表演性的再創(chuàng)作以轉(zhuǎn)換成五線譜或簡譜形式的精確記譜方式記錄琴譜[13]22.同時(shí),不同演奏流派的琴家對琴曲有不同的演繹方式,因此,同一份古譜可以有多種演奏方式.不同版本的琴曲通常具有相似的旋律,但在節(jié)奏上差別很大.本數(shù)據(jù)集中,每首琴曲僅選擇1個(gè)版本,并標(biāo)明其出處與撰譜人.
圖4 琴曲《雉朝飛》中“散板”小節(jié)的譜例Fig.4 The cadenza measure at the beginning of phrase ten in Guqin piece Zhi Chao Fei左端類似草字頭的漢字偏旁為“散板”的符號(hào).在這個(gè)譜例中,也同時(shí)出現(xiàn)了八度并行的旋律.
除此之外,減字譜形式的琴譜中也沒有小節(jié)線與拍號(hào).在近年出版的帶有簡譜的減字譜琴譜中,小節(jié)線通常被劃定并且少數(shù)譜子中標(biāo)明了拍號(hào)(如圖2(b)所示),我們收集的大多數(shù)古琴譜小節(jié)中的節(jié)拍以四分音符為1拍,但是在以四分音符為1拍的琴譜中間會(huì)有少數(shù)以八分音符甚至十六分音符為1拍的小節(jié)出現(xiàn).在一些古琴作品中,通常1個(gè)很長的“散板”小節(jié)會(huì)出現(xiàn)在段首.在這些“散板”小節(jié)中,因此,我們收集的古琴譜中拍號(hào)不固定且多變(同樣可以在圖2(b)看到).
節(jié)拍自由且速度通常緩慢.“散板”小節(jié)的譜例如圖4所示,其左端類似草字頭的漢字偏旁為“散板”的符號(hào).在圖4的譜例中也同時(shí)出現(xiàn)了八度并行的旋律.
古琴數(shù)據(jù)集中的數(shù)據(jù)以MusicXML文件格式,五線譜形式儲(chǔ)存.古琴數(shù)據(jù)集中的內(nèi)容為琴譜中的簡譜旋律與其中的泛音標(biāo)記(1)我們發(fā)現(xiàn)現(xiàn)有的大部分打譜軟件都無法正確地顯示MusicXML格式曲譜的泛音標(biāo)記.因此,為了數(shù)據(jù)的觀看效果,我們暫使用跳音記號(hào)(實(shí)心圓點(diǎn))來表示泛音記號(hào).我們已針對MuseScore軟件提交了相關(guān)的bug修復(fù),詳情見https:∥musescore.org/en/node/294628.bug已被修復(fù),但截止本文交稿,該修復(fù)還未被加入發(fā)行版中.一旦該修復(fù)加入發(fā)行版,我們將對數(shù)據(jù)集進(jìn)行更新..簡譜中音高以首調(diào)唱名的方式書寫(即以當(dāng)前調(diào)式的1級音為C或1),而琴譜中音的絕對音高則須由定弦音高共同確定.1首古琴曲通常含有多個(gè)段落,在古琴數(shù)據(jù)集中每個(gè)段落單獨(dú)儲(chǔ)存,使用“琴曲名-下劃線-段落編號(hào)”形式的文件名儲(chǔ)存.數(shù)據(jù)集共包含408段、9860小節(jié)的數(shù)據(jù),譜例如圖5所示.
圖5 古琴曲《鳳求凰》以MusicXML格式儲(chǔ)存的五線譜Fig.5 The staff stored in MusicXML format of the Guqin piece Feng Qiu Huang(Male Phoenix Pursuit)圖中使用跳音記號(hào)表示泛音記號(hào).
表1 元信息的標(biāo)注Tab.1 Annotation of meta information
我們對古琴數(shù)據(jù)集中的琴譜標(biāo)注了元信息,標(biāo)注內(nèi)容包括曲譜名稱、定弦、琴譜來源、琴曲來源、演奏者、打譜或記譜者.標(biāo)注信息的樣例詳見表1.完整的元信息標(biāo)注可以通過鏈接https:∥github.com/lukewys/Guqin-Dataset/blob/master/Guqin_Dataset_v1/reference.csv獲得.因?yàn)槲覀儷@得的琴譜中不是所有都寫明了琴譜來源、琴曲來源、演奏者、打譜或記譜者,因此在元信息中這4項(xiàng)并一定皆有標(biāo)注.
古琴曲長短不一,我們收集的古琴譜絕大部分短于200小節(jié),譜子長度的直方圖如圖6(a)(見第280頁)所示.同時(shí),我們收集的譜子通常包含分段記號(hào)并且分為多個(gè)段落,這些段落中絕大多數(shù)都相對較短,長度短于50小節(jié).分段長度的直方圖如圖6(b)(見第280頁)所示.直方圖中有少數(shù)段落的長度很長,這是由于這些譜子中無段落標(biāo)記從而整首曲子被視為1個(gè)段落.
在我們的數(shù)據(jù)集中,5%的音符為和弦,這其中的95%部分都包含兩個(gè)音高.值得注意的是,由于我們避免了一些不易錄入的含有較多和弦的譜子,因此古琴曲中總體的和弦比例可能會(huì)稍高于本數(shù)據(jù)集.
為了了解古琴音樂中的音高特性,我們使用古琴數(shù)據(jù)集制作了音高與旋律音程的柱狀圖.對少數(shù)和弦,其旋律音程定義為該和弦中音高到下個(gè)和弦或音符中音高的所有音高組合的旋律音程.古琴數(shù)據(jù)集中古琴譜(首調(diào))的音高柱狀圖如圖7(a)所示.音高柱狀圖中音高使用MIDI音高表示,最高音與最低音分別為33與105.在圖7(a)中可以發(fā)現(xiàn): 古琴音樂的音域很廣,橫跨6個(gè)八度.使用比例最大的音高為D,音高分布的包絡(luò)線呈正態(tài)分布形狀.同時(shí),從音高分布中可以發(fā)現(xiàn),古琴音樂只有少數(shù)四、七級音的使用并鮮有變化音的使用.從音高使用比例的分布中即可以體現(xiàn)出古琴音樂的五聲調(diào)式特性.
古琴數(shù)據(jù)集中古琴音樂的旋律音程柱狀圖如圖7(b)所示.旋律音程柱狀圖中的音程為半音大小,出現(xiàn)的最大旋律音程與最小旋律音程分別為45個(gè)半音與-48個(gè)半音.大跨度旋律音程的使用體現(xiàn)了古琴音樂中跳躍的旋律.使用比例最大的旋律音程為同音音程,并且旋律音程的分布以2,3,5個(gè)半音為主,這體現(xiàn)出古琴音樂的五聲調(diào)式特性.值得注意的是,在上、下行八度音程上有1個(gè)高峰,這說明了八度音程與八度并行旋律在古琴音樂中的廣泛使用.
圖6 古琴數(shù)據(jù)集中的譜子長度直方圖(a)與段落長度直方圖(b)Fig.6 The score length histogram(a) and phrase length histogram(b)圖中,橫軸為長度,以小節(jié)計(jì);縱軸為該長度區(qū)間中譜子或段落的數(shù)量.
圖7 古琴數(shù)據(jù)集中古琴音樂的音高柱狀圖(a)與旋律音程柱狀圖(b)Fig.7 The pitch histogram(a) and melodic interval histogram(b) of the Guqin Dataset圖中列舉了所有出現(xiàn)的音程與音高,每個(gè)柱代表1個(gè)旋律音程(以半音大小計(jì))或音高(以MIDI音高計(jì)).奇數(shù)大小的音高或旋律音程使用綠色的柱表示,偶數(shù)大小的音高或旋律音程使用藍(lán)色的柱表示.
我們使用了1種自定義文本標(biāo)記格式將古琴譜中的簡譜快速轉(zhuǎn)錄至文本,并將文本轉(zhuǎn)換至MusicXML文件.使用我們自定義的錄入方法轉(zhuǎn)錄1頁琴譜僅需3~5min.
在構(gòu)建古琴數(shù)據(jù)集時(shí),我們并沒有轉(zhuǎn)錄琴譜中的所有信息.由于古琴數(shù)據(jù)集旨在提供進(jìn)行音樂分析的數(shù)據(jù),對于減字譜中的指法以及演奏方法我們并未進(jìn)行轉(zhuǎn)錄,而且收集到的古琴譜中包含有裝飾音、連線以及表情記號(hào),由于這些記號(hào)相對稀少,因此它們在轉(zhuǎn)錄中都被忽略.在相對罕見的情況下,我們收集到的古琴譜包含多個(gè)獨(dú)立的旋律線(如前述圖3(b)所示).對這些情況,只有1條主要的旋律(在圖3(b)所示的例子中為上方的旋律)被轉(zhuǎn)錄.但是,我們記錄了古琴譜中的泛音記號(hào),以便研究者對古琴作曲中的泛音使用進(jìn)行分析.
盡管我們在從文本記錄到MusicXML文件的轉(zhuǎn)換過程中使用了自動(dòng)檢查措施以修正可能的轉(zhuǎn)錄錯(cuò)誤,但還是會(huì)不可避免地包含一些錯(cuò)誤.
古琴數(shù)據(jù)集提供了1個(gè)經(jīng)過清洗并標(biāo)注有元信息的中國音樂數(shù)據(jù)集,為計(jì)算音樂學(xué)提供了1個(gè)與現(xiàn)有數(shù)據(jù)集不同風(fēng)格、文化的音樂數(shù)據(jù)集,也為分析古琴曲提供了1個(gè)易于獲得、分析與統(tǒng)計(jì)的形式.
我們提供了1個(gè)易于傳播、保存與分析的古琴音樂數(shù)據(jù)集.在本節(jié)中,我們將介紹幾種對古琴數(shù)據(jù)集的可能應(yīng)用并討論其中存在的困難.
1) 古琴與古琴音樂的研究
盡管本數(shù)據(jù)集中只包含音樂數(shù)據(jù)而缺乏指法、演奏方法及表情記號(hào)等數(shù)據(jù),但是我們希望本數(shù)據(jù)集可以有助于古琴曲的研究,同時(shí)促進(jìn)古琴文化的推廣,使世界上不熟悉古琴的研究者及其他文化的研究者參與到古琴與古琴曲的研究當(dāng)中.古琴音樂是中國傳統(tǒng)音樂的重要組成部分,我們希望本數(shù)據(jù)集可以有利于中國傳統(tǒng)音樂的研究.
2) 音樂建模與音樂生成的研究
有了音樂數(shù)據(jù),我們可以對古琴音樂進(jìn)行建模與生成.然而,由于古琴音樂有著別于西方音樂的特殊的調(diào)式系統(tǒng)、多變的節(jié)拍與拍號(hào),再加上古琴音樂表演中有著豐富的表情表演,使用常用的適合對西方音樂進(jìn)行建模的方式來對古琴音樂建模也許不適合.并且,由于古琴譜,尤其是完成打譜的古琴譜稀少,這都給使用古琴數(shù)據(jù)集進(jìn)行音樂建模與音樂生成的研究帶來了挑戰(zhàn).
3) 表情演奏(expressive performance)研究
古琴是1種獨(dú)奏樂器,同時(shí)古琴表演中的表情演奏十分豐富.這里表情演奏指的是演奏者不嚴(yán)格按照譜子中的節(jié)奏進(jìn)行演奏而是加入一些富有表情的變化.古琴演奏中的表情因素在節(jié)奏與音高中都有體現(xiàn).在節(jié)奏方面,表情節(jié)拍(expressive timing,指表演者在演奏的固定節(jié)奏中引入細(xì)微的時(shí)間偏差)在古琴表演中的運(yùn)用相當(dāng)豐富,并且演奏的速度不固定,有時(shí)變化很大.在音高方面,在前1個(gè)音的演奏與后1個(gè)音的轉(zhuǎn)換中,古琴演奏家通常會(huì)使用滑音技法.因此,對于古琴演奏的表情演奏研究是相當(dāng)有意義的.若將符號(hào)化音樂數(shù)據(jù)與古琴演奏的音頻對齊,可以進(jìn)行古琴音樂中的表情演奏節(jié)拍的研究.
本節(jié)介紹了1種基于統(tǒng)計(jì)模型的音樂風(fēng)格區(qū)分方法以展示古琴數(shù)據(jù)集的1個(gè)應(yīng)用實(shí)例.給定1個(gè)音樂樣本,本方法可以衡量該樣本的風(fēng)格與古琴和巴赫風(fēng)格的相似度.首先提取古琴音樂與巴赫音樂風(fēng)格的特征,再提取給定音樂的特征并與兩種風(fēng)格的特征分別進(jìn)行相似度衡量.本方法使用旋律音程對符號(hào)化數(shù)據(jù)進(jìn)行表示,并嘗試建立旋律音程直方圖與旋律音程馬爾科夫鏈兩種方法進(jìn)行特征的提取.對于提取的特征,本方法使用KL(Kullback-Leibler)散度進(jìn)行相似度衡量,并使用五折交叉驗(yàn)證與配對t校驗(yàn)以驗(yàn)證方法的有效性.結(jié)果顯示: 在巴赫音樂與古琴音樂上使用本方法提取的風(fēng)格特征差異明顯,同時(shí)測試樣本對兩個(gè)風(fēng)格的相似度度量有顯著差異,因此,我們的方法可以區(qū)分古琴音樂風(fēng)格與巴赫音樂風(fēng)格.
本方法使用的數(shù)據(jù)集為巴赫眾贊歌數(shù)據(jù)集(Bach Chorales Dataset)[4]與本文的古琴數(shù)據(jù)集中的一部分.
巴赫眾贊歌是1個(gè)多聲部數(shù)據(jù)集,每個(gè)聲部都是單聲(monophonic)的.在巴赫眾贊歌數(shù)據(jù)集中,每個(gè)譜子中至少包含4個(gè)人聲聲部(高音、中音、次中音、低音).有些譜子中包含如小號(hào)、小提琴等伴奏聲部,但由于這些聲部中音樂數(shù)據(jù)的稀疏性,我們在處理中忽略了這些聲部,從而只保留4個(gè)人聲聲部.在巴赫眾贊歌數(shù)據(jù)集中,我們將4個(gè)人聲聲部中的每個(gè)聲部都看作單獨(dú)的旋律處理.
本方法的音樂數(shù)據(jù)表示基于旋律音程.本方法將旋律表示為它們的旋律音程序列,這里旋律音程指旋律中后1個(gè)音與前1個(gè)音的音高半音差.為了降低數(shù)據(jù)表示的維度,我們將不為12倍數(shù)的音程模12,而對為12倍數(shù)的音程則取為12,以保留八度音程.因此,旋律音程共有13種表示,記為[0,12].此外,由于古琴數(shù)據(jù)集中包含少量的和弦,我們計(jì)算旋律音程時(shí)將計(jì)算從1個(gè)和弦到下1個(gè)音符或和弦的所有可能的音高轉(zhuǎn)移.
圖8 數(shù)據(jù)集中的1個(gè)旋律片段Fig.8 One music segment example for data representation
古琴數(shù)據(jù)集中的1個(gè)旋律片段如圖8所示.該旋律使用MIDI音高表示為: {[60],[57],[57,45],[64],[62],[60],[62],[64,52]},其中: 方括號(hào)為單個(gè)音或和弦,方括號(hào)中的數(shù)字代表音高.該旋律使用本方法中的旋律音程表示為: {[3],[0,12],[7,7],[2],[2],[2],[2,10]},其中: 方括號(hào)為旋律音程中的單個(gè)時(shí)間點(diǎn),方括號(hào)中的數(shù)字代表以半音計(jì)的音程大小.
我們對風(fēng)格的音樂數(shù)據(jù)建立音程直方圖和馬爾科夫鏈以提取該風(fēng)格的特征.
在風(fēng)格G上建立的旋律音程直方圖IH定義如下:
(1)
其中:NI是計(jì)入旋律音程的總和,count(x=i)表示音程i計(jì)入的數(shù)量,i=0,1,2,…,12.
但是,旋律音程直方圖只能反映音樂中旋律音程的分布,而不能反映旋律音程的順序.因此,在音樂序列上訓(xùn)練1個(gè)馬爾科夫鏈有助于提取進(jìn)一步的時(shí)序信息.馬爾科夫鏈描述了馬爾科夫過程(下1個(gè)狀態(tài)只取決于當(dāng)前狀態(tài)的過程)中狀態(tài)轉(zhuǎn)移的概率.馬爾科夫鏈訓(xùn)練完成后將會(huì)得到狀態(tài)轉(zhuǎn)移矩陣M=(pij),其中pij為狀態(tài)i轉(zhuǎn)移到狀態(tài)j的概率,且
pij=Pr(X1=j|X0=i).
(2)
計(jì)算每種音程轉(zhuǎn)移的數(shù)量并進(jìn)行歸一化,就可以得出狀態(tài)轉(zhuǎn)移矩陣.本方法中馬爾科夫鏈直接使用數(shù)據(jù)表示中的旋律音程作為狀態(tài).由于旋律音程有從0到12共13種,狀態(tài)轉(zhuǎn)移矩陣M的維度也相應(yīng)地為13×13.對于1個(gè)時(shí)間點(diǎn)包含多個(gè)旋律音程的情況,我們計(jì)入所有可能的旋律音程轉(zhuǎn)移組合.
在建立統(tǒng)計(jì)模型并提取特征后,本方法通過衡量特征間的相似度來評估風(fēng)格的相似度,其中,特征矩陣的相似度度量使用KL(Kullback-Leibler)散度計(jì)算.KL散度是1種直觀的非對稱度量方式,用以衡量兩個(gè)矩陣的相似度.兩個(gè)矩陣越相似,其KL散度就越小,若兩個(gè)矩陣完全一致,其KL散度為0.
設(shè)P(x)與Q(x)為離散隨機(jī)變量x的兩個(gè)概率分布,則P與Q間的KL散度DKL(P‖Q)定義如下:
(3)
對在某風(fēng)格G上提取的某一特征矩陣DG與在任意測試樣本S上提取的同1種特征矩陣DS,兩個(gè)矩陣的KL散度為
(4)
在對兩個(gè)風(fēng)格的音樂數(shù)據(jù)建立旋律音程直方圖與馬爾科夫鏈后,我們將得到這兩種統(tǒng)計(jì)模型提取的特征矩陣:IHBach,MBach,IHGuqin與MGuqin,其中矩陣的上標(biāo)表示音樂風(fēng)格.給定1個(gè)新的音樂樣本S,我們計(jì)算出旋律音程直方圖IHS與旋律音程轉(zhuǎn)移矩陣MS,并對相應(yīng)種類的矩陣計(jì)算KL散度,以獲得相似度.
實(shí)際操作時(shí),我們在計(jì)算KL散度之前對所有矩陣的元素都加上大小為10-5的微小常量,以避免KL散度在0概率上的計(jì)算.
圖9 中國古琴音樂的旋律音程直方圖(藍(lán))與 巴赫音樂的旋律音程直方圖(綠)Fig.9 The melodic interval histogram of Guqin music(blue) and Bach music(green)
在兩種風(fēng)格的數(shù)據(jù)集上建立的旋律音程直方圖如圖9所示.從圖9可以看出,巴赫音樂與古琴音樂最大的區(qū)別在于小二度的使用.巴赫音樂中使用了大量的小二度,而古琴音樂中包含更多的小三度.這種差異反映了兩種音樂調(diào)式的差異.對巴赫音樂的旋律音程的統(tǒng)計(jì)結(jié)果與Knopoff等的統(tǒng)計(jì)結(jié)果[17]相似,后者對巴赫的賦格作品的統(tǒng)計(jì)結(jié)果表明大二度與小二度共占旋律音程的70%.對古琴的旋律音程的統(tǒng)計(jì)結(jié)果表明其在八度音程的比例較大,這也反映了古琴音樂對八度跳躍音程的偏好.
在兩種風(fēng)格的數(shù)據(jù)集上建立的旋律音程轉(zhuǎn)移矩陣如圖10所示.從圖10可以看出,巴赫的旋律音程轉(zhuǎn)移矩陣集中在左上角,而古琴的旋律音程轉(zhuǎn)移矩陣則更為分散.這種稀疏性差異進(jìn)一步體現(xiàn)了調(diào)式的差異,同時(shí)也表現(xiàn)出巴赫音樂的旋律更連續(xù),古琴音樂旋律跳躍的特點(diǎn).有趣的是,兩個(gè)矩陣中的最大值皆為小二度到小二度的轉(zhuǎn)移.
圖10 數(shù)據(jù)集中巴赫音樂與古琴音樂的旋律音程轉(zhuǎn)移矩陣Fig.10 The melodic interval transition matrix of Bach music and Guqin music橫軸與縱軸的數(shù)字代表半音大小的音程,矩陣中元素的灰度代表了其相對占比.
本方法使用五折交叉驗(yàn)證來檢驗(yàn)方法的正確性.對兩個(gè)風(fēng)格的數(shù)據(jù)集,均將其按小節(jié)長度均分為5份.五折交叉驗(yàn)證中,數(shù)據(jù)將被計(jì)算5次,在每次中,將5等分的數(shù)據(jù)集其中1份作為測試集,其余4份作為訓(xùn)練集.統(tǒng)計(jì)模型使用訓(xùn)練集中的數(shù)據(jù)進(jìn)行訓(xùn)練,并使用測試集中的數(shù)據(jù)進(jìn)行相似度計(jì)算.在計(jì)算測試集樣本對兩個(gè)風(fēng)格的相似度后,本方法使用配對t校驗(yàn)以驗(yàn)證兩個(gè)相似度差異的顯著性.
表2為兩種音樂風(fēng)格的旋律音程直方圖和轉(zhuǎn)移矩陣的KL散度的配對t檢驗(yàn)結(jié)果.表中的p值均小于0.01,這說明計(jì)算得出的兩個(gè)風(fēng)格的相似度在統(tǒng)計(jì)意義上有顯著差異.該結(jié)論說明使用的兩種方法都可以區(qū)分巴赫音樂與古琴音樂.同時(shí),使用旋律音程轉(zhuǎn)移矩陣計(jì)算的配對t檢驗(yàn)結(jié)果中p值普遍小于使用旋律音程直方圖計(jì)算的配對t檢驗(yàn)結(jié)果中的,這說明建立馬爾科夫鏈可以更有效地區(qū)分巴赫與古琴音樂.
本文介紹了1個(gè)中國古琴曲的符號(hào)化音樂數(shù)據(jù)集——古琴數(shù)據(jù)集的組成及構(gòu)建方式.該數(shù)據(jù)集收錄了71首古琴曲,共有408個(gè)段落,9860個(gè)小節(jié),以MusicXML格式儲(chǔ)存古琴音樂,并包含元信息標(biāo)注.古琴數(shù)據(jù)集為現(xiàn)有的符號(hào)化音樂數(shù)據(jù)集添加了來自中國傳統(tǒng)音樂的實(shí)用音樂數(shù)據(jù),便于研究古琴曲.本文不僅介紹了古琴與古琴音樂、古琴數(shù)據(jù)集并討論了數(shù)據(jù)集可能的應(yīng)用,還給出了1種基于統(tǒng)計(jì)模型的巴赫音樂與古琴音樂風(fēng)格的區(qū)分方法作為古琴數(shù)據(jù)集的應(yīng)用實(shí)例.該方法通過分別對古琴音樂與巴赫音樂進(jìn)行旋律音程的統(tǒng)計(jì)建模,證明兩種音樂的旋律音程分布有顯著差異,并進(jìn)一步通過KL散度依據(jù)旋律音程分布進(jìn)行風(fēng)格區(qū)分.
致謝:我們衷心地感謝張子謙、張逸嘉、許陽、苗天辰同學(xué)在轉(zhuǎn)錄譜子中做出的貢獻(xiàn),并感謝所有為本工作提供幫助的朋友們.