汪 濤,靳 聰,李小兵,帖 云,,齊 林
(1.鄭州大學(xué)信息工程學(xué)院,鄭州 450001;2.中國(guó)傳媒大學(xué)信息與通信工程學(xué)院,北京 100024;3.中央音樂(lè)學(xué)院,北京 100031)
(?通信作者電子郵箱jincong0623@cuc.edu.cn)
隨著生活水平的提高,人們?cè)谝魳?lè)方面的需求也逐漸增加,如游戲背景音樂(lè)、影視插曲、主題曲等,人類(lèi)作曲遠(yuǎn)遠(yuǎn)滿(mǎn)足不了市場(chǎng)的需求,因此人工智能作曲隨之出現(xiàn)。一般來(lái)說(shuō),音樂(lè)可以分為單音軌和多音軌兩種類(lèi)型,從音樂(lè)生成的方法看,分為符號(hào)音樂(lè)生成[1-3]和音頻音樂(lè)生成[4-5]。本文主要對(duì)三種音軌的符號(hào)音樂(lè)生成進(jìn)行了研究。
針對(duì)多音軌音樂(lè)生成所提出的音樂(lè)模型有分層遞歸神經(jīng)網(wǎng)絡(luò)(Hierarchical Recurrent Neural Network,HRNN)[6]、卷積生成對(duì)抗網(wǎng)絡(luò)MidiNet(Musical instrument digital interface Network)[7]和多音軌序列生成對(duì)抗網(wǎng)絡(luò)(Multi-track Sequential Generative Adversarial Network,MuseGAN)[8]等幾種。經(jīng)大量實(shí)驗(yàn)發(fā)現(xiàn),這些模型只允許網(wǎng)絡(luò)從真實(shí)的音樂(lè)數(shù)據(jù)中學(xué)習(xí)音符特征之間的關(guān)系,而沒(méi)有從整首音樂(lè)中學(xué)習(xí)和聲以及作曲家作曲時(shí)需要遵循的規(guī)則。
為了解決以上問(wèn)題,本文提出了Transformer-GAN 模型,該模型在Transformer[9]的基礎(chǔ)上改進(jìn)得到能夠更好學(xué)習(xí)不同音軌之間信息的Cross-Track Transformer(CT-Transformer)網(wǎng)絡(luò),并與生成對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)結(jié)合,以音樂(lè)規(guī)則為指導(dǎo)生成符合大眾音樂(lè)素養(yǎng)的多音軌音樂(lè)。最后還提出了一套音樂(lè)評(píng)價(jià)指標(biāo),經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn),Transformer-GAN 模型比基準(zhǔn)和其他多音軌音樂(lè)生成模型生成的音樂(lè)更接近真實(shí)的音樂(lè)作品。本文的主要工作包括:
1)基于Transformer 網(wǎng)絡(luò),提出了一種以音樂(lè)理論知識(shí)為規(guī)則,引導(dǎo)生成符合人類(lèi)音樂(lè)素養(yǎng)的GAN;
2)針對(duì)單音軌序列的內(nèi)部信息及不同音軌序列間的信息在多音軌音樂(lè)生成中的重要程度,對(duì)Transformer 進(jìn)行改進(jìn)來(lái)生成滿(mǎn)足單音軌內(nèi)部信息相關(guān)性及多音軌間和諧性的作品;
3)針對(duì)音樂(lè)理論規(guī)則在音樂(lè)中的重要性,提出了一種將音樂(lè)規(guī)則數(shù)學(xué)模型化,并與GAN相結(jié)合的新型判別方法;
4)在基準(zhǔn)數(shù)據(jù)集上進(jìn)行了充分的實(shí)驗(yàn),并對(duì)比了相關(guān)的多音軌生成方法,結(jié)果驗(yàn)證了本文模型的有效性及優(yōu)越性。
在多音軌音樂(lè)的生成中,需要考慮兩個(gè)重要因素:第一是音樂(lè)連貫性,即時(shí)間結(jié)構(gòu);第二是不同音軌之間的相互聯(lián)系,即音軌之間的相互作用。
近年來(lái),研究人員們開(kāi)始將神經(jīng)網(wǎng)絡(luò)與變分自編碼器(Variational Auto-Encoder,VAE)、GAN 和Transformer 結(jié)合用于多音軌音樂(lè)的生成任務(wù)之中[10-12]?;谘h(huán)神經(jīng)網(wǎng)絡(luò)(Rerrent Neural Network,RNN)的分層模型HRNN[6]由底層結(jié)構(gòu)生成旋律而高層結(jié)構(gòu)生成和弦和鼓點(diǎn)進(jìn)行伴奏,在節(jié)奏上得到了較大的提升;MidiNet 模型[7]通過(guò)遵循和弦序列或通過(guò)給定一個(gè)小節(jié)的旋律進(jìn)行旋律的續(xù)寫(xiě),進(jìn)而以生成具有多個(gè)MIDI(Musical Instrument Digital Interface)通道(即音軌)的音樂(lè),在和諧度上有較好的表現(xiàn);MuseGAN[8]將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和GAN 結(jié)合起來(lái)生成具有多音軌的MIDI音樂(lè)。文獻(xiàn)[13]中提出將Transformer的譯碼結(jié)構(gòu)作為生成器、編碼結(jié)構(gòu)作為鑒別器的方法生成多音軌音樂(lè),將MIDI文件中的所有音軌信息統(tǒng)一在一個(gè)文本中,包括樂(lè)器信息,經(jīng)過(guò)預(yù)訓(xùn)練生成器后,通過(guò)文本續(xù)寫(xiě)的方式進(jìn)行音樂(lè)創(chuàng)作;但該方法生成的音樂(lè)中有部分音符的出現(xiàn)不符合音樂(lè)規(guī)則,且音軌之間的和諧程度較差。為了解決此問(wèn)題,本文在此模型基礎(chǔ)上進(jìn)行改進(jìn),即在生成器中加入多音軌學(xué)習(xí)模塊,并引入音樂(lè)規(guī)則指導(dǎo)模型的訓(xùn)練,進(jìn)而生成和諧度高且符合音樂(lè)規(guī)則的音樂(lè)。文獻(xiàn)[14]中提出了能夠很好地學(xué)習(xí)不同音軌之間關(guān)系的多音軌音樂(lè)生成(Multi-Track Music Generation,MTMG)模型。但是,現(xiàn)存的音樂(lè)生成模型在旋律、節(jié)奏及整體的和諧度及匹配度上均有所欠缺,并且生成的音樂(lè)大多不符合基礎(chǔ)的樂(lè)理知識(shí)。
因此,本文在已有成果的基礎(chǔ)上,根據(jù)人類(lèi)的音樂(lè)創(chuàng)作過(guò)程,結(jié)合Transformer 模型與GAN,提出了以音樂(lè)規(guī)則為指導(dǎo)的多音軌音樂(lè)生成模型,并通過(guò)實(shí)驗(yàn)驗(yàn)證了模型的有效性。
為了使MIDI 文件適應(yīng)該模型的生成任務(wù),需要提取MIDI 文件的八種特征,并根據(jù)特征編碼成事件序列,其中每個(gè)事件都表示為一個(gè)元組,即Bar、Position、Chord、Tempo Value、Tempo Class、Note On、Note Velocity 及Note Duration。本文實(shí)驗(yàn)的MIDI文件按十六分音符劃分,按照每個(gè)事件類(lèi)型的開(kāi)始時(shí)間進(jìn)行排序。Bar 表示第幾小節(jié),Position 表示每個(gè)事件類(lèi)型的位置,Chord 表示本文所設(shè)定的和弦進(jìn)行,Tempo Class 表示節(jié)奏類(lèi)型(快、適中、慢),Tempo Value 表示將節(jié)奏類(lèi)型進(jìn)行量化后的值,Note On 表示音高的起始時(shí)間(音高量化范圍“0~127”),Note Velocity 表示音符的感知響度(量化范圍“0~127”),Note Duration表示每個(gè)音符的音長(zhǎng)。
如圖1 所示,本文所使用的音樂(lè)數(shù)據(jù)均為MIDI 格式,且所有文件只包含鋼琴、吉他及貝斯三條音軌。首先,分別將三條音軌編碼成時(shí)間序列,通過(guò)三個(gè)生成器(Gp、Gg、Gb)進(jìn)行單音軌序列的內(nèi)部信息進(jìn)行學(xué)習(xí)并生成下一時(shí)刻的狀態(tài)yt;其次,使用6 個(gè)CT-Transformer 模塊對(duì)音軌序列進(jìn)行兩兩學(xué)習(xí),并將學(xué)習(xí)吉他及貝斯兩個(gè)音軌序列后的鋼琴序列進(jìn)行拼接得到新的鋼琴序列,吉他序列及貝斯序列的學(xué)習(xí)與鋼琴序列相同;最后,將真實(shí)樣本序列與生成樣本序列通過(guò)鑒別器Dφ進(jìn)行判別。
圖1 多音軌音樂(lè)生成對(duì)抗網(wǎng)絡(luò)框架Fig.1 Framework of multi-track music generative adversarial network
在單音軌部分,使用Transformer 的譯碼部分作為單軌序列生成網(wǎng)絡(luò)的組成部分,如圖2 所示,輸入字符序列是通過(guò)嵌入矩陣映射到Embedding 中表示。然后,這個(gè)嵌入序列加上位置嵌入,通過(guò)Ng(Ng=5)個(gè)self-attention 模塊,將其中的第k時(shí)刻后的信息屏蔽掉,確保字符只能學(xué)習(xí)第k時(shí)刻之前的信息。最后一個(gè)self-attention 模塊的輸出首先映射到詞匯空間,然后由softmax 層激活,得到輸出字符分布。在預(yù)訓(xùn)練階段,訓(xùn)練單音軌生成器使預(yù)測(cè)的字符與輸入是真實(shí)字符之間的交叉熵?fù)p失最小化。在生成階段,生成器以自回歸的方式逐個(gè)生成字符。生成時(shí)可以從頭開(kāi)始或給一個(gè)起始序列開(kāi)始。
圖2 單軌音樂(lè)生成結(jié)構(gòu)Fig.2 Single-track music generation structure
在多音軌部分,該模塊以Transformer 為基礎(chǔ)對(duì)selfattention 機(jī)制進(jìn)行改進(jìn),即CT-Transformer,其核心部分為Cross-Track attention 機(jī)制。將鋼琴序列作為學(xué)習(xí)對(duì)象,吉他序列作為被學(xué)習(xí)對(duì)象,分別表示為Xp∈RTp×dp、Xg∈RTg×dg。T(·)和d(·)分別表示序列長(zhǎng)度和特征維度。首先定義查詢(xún)?yōu)镼p=XpWQp,鍵值對(duì)分別為Kg=XgWKg和Vg=XgWVg,其 中表示鋼琴及吉他所對(duì)應(yīng)的權(quán)重。如圖3 所示,為在第i時(shí)刻得到的狀態(tài),i={1,2,3,4,5,6},如式(1)所示。
圖3 鋼琴序列學(xué)習(xí)吉他序列模塊Fig.3 Piano sequence learning guitar sequence module
得到輸出序列后,為了使輸出序列與輸入序列維度相同,將輸出序列進(jìn)行層歸一化,然后將其輸入前饋?zhàn)訉?,與歸一化后的輸出序列進(jìn)行殘差連接,得到第i層模塊后的輸出序列。同理,鋼琴軌學(xué)習(xí)貝斯軌信息為。
損失函數(shù)能使深度學(xué)習(xí)網(wǎng)絡(luò)有效地學(xué)習(xí)特征信息之間的聯(lián)系,讓模型網(wǎng)絡(luò)完成設(shè)定的任務(wù),所以,在得到相應(yīng)的預(yù)測(cè)值之后,本文將下一時(shí)刻輸入的音符向量Xt+1當(dāng)作當(dāng)前時(shí)刻的目標(biāo)值,即構(gòu)成一個(gè)監(jiān)督學(xué)習(xí)環(huán)境,根據(jù)預(yù)測(cè)值與原樣本更新模型參數(shù)。本文將softmax 層作為輸出層,即輸出為音符的概率分布,因此使用交叉熵構(gòu)建損失函數(shù)[15]。如式(6)所示,在生成多音軌音樂(lè)時(shí),通過(guò)對(duì)模型交叉熵訓(xùn)練,能夠極大地優(yōu)化參數(shù)并改善音樂(lè)作品的質(zhì)量。
為了得到符合樂(lè)理知識(shí)的音樂(lè),本文將樂(lè)理規(guī)則數(shù)學(xué)模型化[16],按照樂(lè)理知識(shí)在音樂(lè)中的重要程度反饋給生成網(wǎng)絡(luò)不同的獎(jiǎng)懲值,從而以樂(lè)理規(guī)則引導(dǎo)音樂(lè)生成。在流行音樂(lè)的鋼琴軌、吉他軌和貝斯軌中,音符需要分別在A2-C5、E-C3及E-1-E1 之中。如式(7)所示,其中:ymin和ymax是根據(jù)音樂(lè)的調(diào)式事先設(shè)定好的最低音和最高音;yt為t時(shí)刻的音高;Rm1(S1:t,yt)表示在前t時(shí)刻中,t時(shí)刻狀態(tài)的獎(jiǎng)勵(lì)值。
在同一時(shí)刻鋼琴、吉他和貝斯發(fā)聲的音符數(shù)量分別不得超過(guò)8、6及1,如式(8),其中:at表示在t時(shí)刻的音符個(gè)數(shù),n表示音符發(fā)聲的最大數(shù)量,Rm2(at)表示音符個(gè)數(shù)在要求范圍內(nèi)的獎(jiǎng)勵(lì)值。
在鋼琴和吉他的音軌中,每個(gè)小節(jié)休止符的數(shù)量不宜過(guò)多,否則會(huì)影響整個(gè)音軌的辨識(shí)度,如式(9),其中:S1:t表示該小節(jié)預(yù)測(cè)序列的音符數(shù),y為休止符的數(shù)目,Rm3(y)表示本小節(jié)中休止符數(shù)目滿(mǎn)足條件的獎(jiǎng)勵(lì)值。
本文設(shè)定的和弦為三和弦,如F-G-Am-F。對(duì)于和弦內(nèi)音,在強(qiáng)起的音樂(lè)中強(qiáng)拍基本均在奇數(shù)拍的位置。假如、為t時(shí)刻的和弦內(nèi)音,yt表示生成網(wǎng)絡(luò)在該時(shí)刻所選擇的音符,如式(10),其中:RC(S1:t,yt)為該規(guī)則所提供的獎(jiǎng)勵(lì)值。
根據(jù)不同規(guī)則在音樂(lè)中的重要程度分配不同的權(quán)重比,如式(11)所示,其中:RG(S1:t,yt)表示滿(mǎn)足所設(shè)定規(guī)則的獎(jiǎng)勵(lì)值,αi(i={1,2,3,4})表示第i條規(guī)則所占的權(quán)重。
經(jīng)鑒別網(wǎng)絡(luò)對(duì)獎(jiǎng)勵(lì)函數(shù)和交叉熵?fù)p失函數(shù)分配不同的權(quán)重,進(jìn)而得到模型的目標(biāo)函數(shù),如式(12)所示,其中:JGθ為獎(jiǎng)勵(lì)值與損失函數(shù)值分配權(quán)重值β1、β2后的目標(biāo)函數(shù)值。
本文所有實(shí)驗(yàn)均使用Lakh MIDI 數(shù)據(jù)集[17],該數(shù)據(jù)集包含176 581 個(gè)多軌MIDI 文件。實(shí)驗(yàn)前對(duì)數(shù)據(jù)集進(jìn)行初步過(guò)濾,只保留拍號(hào)為4/4的歌曲。然后采用Music21包對(duì)MIDI文件進(jìn)行遍歷,對(duì)樂(lè)器編號(hào)進(jìn)行篩選,判斷出屬于同種樂(lè)器演奏的音軌。根據(jù)樂(lè)器編碼篩選出鋼琴、吉他和貝斯三種樂(lè)器演奏的音軌,最后將這三種樂(lè)器進(jìn)行合并。經(jīng)一系列的數(shù)據(jù)處理,得到了34 610 個(gè)只包含這三種樂(lè)器軌的MIDI 文件,將其中的24 610個(gè)MIDI文件作為訓(xùn)練集,10 000個(gè)MIDI文件作為測(cè)試集。
實(shí)驗(yàn)使用Adam 優(yōu)化器對(duì)生成器和鑒別器進(jìn)行優(yōu)化,使用獎(jiǎng)勵(lì)網(wǎng)絡(luò)使模型的輸出達(dá)到最優(yōu)狀態(tài)。設(shè)定Adam 優(yōu)化器的學(xué)習(xí)率ε為0.000 2;訓(xùn)練所進(jìn)行的迭代次數(shù)為10 000。若訓(xùn)練迭代次數(shù)未到10 000,loss收斂,則訓(xùn)練停止;若訓(xùn)練迭代次數(shù)到10 000,loss 未收斂,則終止訓(xùn)練。在訓(xùn)練過(guò)程中Gθ網(wǎng)絡(luò)每次獲得獎(jiǎng)勵(lì)時(shí),都會(huì)更新自身網(wǎng)絡(luò)參數(shù),更新的目標(biāo)為最大化長(zhǎng)期獎(jiǎng)勵(lì)。本文對(duì)目標(biāo)函數(shù)相對(duì)于生成器網(wǎng)絡(luò)的參數(shù)θ進(jìn)行梯度推導(dǎo),如式(13),并可按式(14)更新網(wǎng)絡(luò)Gθ的網(wǎng)絡(luò)參數(shù)θ,直至參數(shù)達(dá)到最優(yōu)。
把所有的參與者分成專(zhuān)業(yè)作曲家和非作曲家兩組。專(zhuān)業(yè)群體的參與者是擁有音樂(lè)創(chuàng)作或電子音樂(lè)創(chuàng)作和制作教育學(xué)位的人,包括中央音樂(lè)學(xué)院、中國(guó)傳媒大學(xué)和鄭州大學(xué)。
3.2.1 人為作曲&智能作曲
首先,準(zhǔn)備一個(gè)混合音樂(lè)集,里面有5 首由專(zhuān)業(yè)人類(lèi)作曲家創(chuàng)作的音樂(lè)作品和5 首由本文模型創(chuàng)作的作品,供人們判斷它們是由人類(lèi)還是由人工智能創(chuàng)作。40 名專(zhuān)業(yè)作曲家被要求對(duì)他們從音樂(lè)創(chuàng)作理論方面聽(tīng)到的每首樂(lè)曲進(jìn)行評(píng)分,而60 名非作曲家被要求根據(jù)他們的主觀感受進(jìn)行評(píng)分。每位聽(tīng)者會(huì)對(duì)測(cè)試樣本進(jìn)行評(píng)價(jià)和打分(分?jǐn)?shù)范圍為1~10),匯總最后的分?jǐn)?shù)[18]。為了避免參與者受到其他方面的影響,如樂(lè)器音色,所有測(cè)試音樂(lè)無(wú)論是由人類(lèi)還是模型創(chuàng)作的,都是從相同樂(lè)器中導(dǎo)出的。
由表1 可知,在專(zhuān)業(yè)作曲家中,人類(lèi)音樂(lè)作品的平均得分高于人工智能作曲;然而,在所有參與者中,Transformer-GAN模型創(chuàng)作的音樂(lè)得分8.11 高于真實(shí)人類(lèi)作品的得分(7.93),這表明Transformer-GAN 模型的人工智能音樂(lè)創(chuàng)作質(zhì)量非常接近人類(lèi)作曲家的質(zhì)量。
表1 人工作曲與人工智能作曲評(píng)價(jià)結(jié)果Tab.1 Composition evaluation results of human and artificial intelligence
3.2.2 對(duì)比實(shí)驗(yàn)
該實(shí)驗(yàn)將生成的樣本與MTMG、MuseGAN 和HRNN 比較。參與者(15 名作曲家和30 名非作曲家)收到了20 個(gè)音樂(lè)片段,它們來(lái)自四種不同的模型,這些模型都經(jīng)過(guò)相同的訓(xùn)練集訓(xùn)練后被給予了相同的啟動(dòng)音符與樂(lè)器音色,每個(gè)模型生成5 個(gè)音樂(lè)片段;然后參與者被要求在旋律、和聲、節(jié)奏和情感四個(gè)方面對(duì)音樂(lè)進(jìn)行評(píng)價(jià)和打分,匯總分?jǐn)?shù)之后,求其平均值并得到標(biāo)準(zhǔn)差。
由表2 可知,相對(duì)于MuseGAN、MTMG、HRNN 三種生成模型,Transformer-GAN 的整體質(zhì)量得到了顯著提升,除了情感,其他指標(biāo)得分明顯高于其他三種模型,表明Transformer-GAN 模型生成的音樂(lè)更加符合作曲的要求和規(guī)則,并在未來(lái)工作中需要在情感這一方面加強(qiáng)研究。
表2 四種模型得分結(jié)果Tab.2 Scoring results of four models
此次評(píng)價(jià)中選用相同的訓(xùn)練集對(duì)MuseGAN、MTMG 及HRNN進(jìn)行訓(xùn)練,與Transformer-GAN模型結(jié)果進(jìn)行比較。
預(yù)測(cè)精確度(Prediction Accuracy,PA):PA 定義為預(yù)測(cè)生成的音符與輸入音符的相同程度,PA 值越大,模型學(xué)習(xí)及預(yù)測(cè)能力越好。定義如式(15),其中:yi表示第i個(gè)真實(shí)音符,表示第i個(gè)預(yù)測(cè)生成的音符,M表示小節(jié)中音符的數(shù)量,表示與yi之間的誤差值。
序列相似度(Sequence Similarity,SS):序列距離(Sequence Distance,SD)是指將輸入序列轉(zhuǎn)換為預(yù)測(cè)序列所要插入、刪除或替換單字符的最小值,可以用來(lái)評(píng)估兩個(gè)序列的相似度。相似度越高說(shuō)明模型生成的音樂(lè)更加真實(shí),定義如式(16),其中:M為輸入音符長(zhǎng)度,為生成的音符長(zhǎng)度。
休止符:由于預(yù)測(cè)結(jié)果會(huì)有一定的不穩(wěn)定性,生成結(jié)果若出現(xiàn)了休止符而實(shí)際結(jié)果不是休止符,則預(yù)測(cè)效果不好,分?jǐn)?shù)越低表示性能越好。
由圖4 可知,Transformer-GAN 模型生成的每條音軌相對(duì)于其他三種模型在以上三種指標(biāo)中都達(dá)到了最好的效果。從圖4 中可知鋼琴序列相比其他兩種樂(lè)器序列更容易學(xué)習(xí)音符信息,在與真實(shí)序列相似度上,Transformer-GAN 模型比MuseGAN 模型提高了3%,說(shuō)明Transformer-GAN 模型在風(fēng)格控制及音樂(lè)模仿生成的效果上具有一定的優(yōu)勢(shì);Transformer-GAN 模型在休止符指標(biāo)上相對(duì)其他三種模型的得分較低,說(shuō)明Transformer-GAN 模型具有較好的生成效果,且生成結(jié)果比 較符合音樂(lè)理論知識(shí)。
圖4 三種指標(biāo)結(jié)果分布圖Fig.4 Distribution diagram of results of three indicators
本文提出了一個(gè)新的多音軌音樂(lè)生成模型Transformer-GAN。在該模型中,我們通過(guò)數(shù)據(jù)預(yù)處理輸入轉(zhuǎn)換后的文本序列,并采用交叉熵?fù)p失與音樂(lè)規(guī)則相結(jié)合的方法對(duì)模型進(jìn)行訓(xùn)練;然后經(jīng)生成網(wǎng)絡(luò)學(xué)習(xí)單音軌內(nèi)部及不同音軌之間的信息后,預(yù)測(cè)生成三個(gè)單音軌音樂(lè);最后通過(guò)多聲道融合生成含有三種樂(lè)器的音樂(lè)作品。實(shí)驗(yàn)結(jié)果表明,該模型在節(jié)奏性、可聽(tīng)性、流暢度及符合音樂(lè)規(guī)則等方面與現(xiàn)有的一些技術(shù)相比具有顯著優(yōu)勢(shì)。