王嵩超,李金龍
(中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 合肥 230026)
多目標(biāo)序列生成技術(shù)在多軌音樂生成等任務(wù)中有著重要應(yīng)用,這需要同時(shí)確保多個(gè)生成的序列自身的連續(xù)性與序列之間很強(qiáng)的相關(guān)性。本文關(guān)注音樂生成背景下的多序列生成問題?,F(xiàn)代音樂歌曲通常包含多個(gè)音軌,包括旋律音軌和用于伴奏的多個(gè)樂器音軌。早期的研究[1-2]專注于只有單軌的旋律生成,而最近的工作[3-4]已經(jīng)開始探索多軌音樂生成。在本文中,僅關(guān)注使用基于序列的方法的多軌音樂生成問題。
基于序列的方法首先會(huì)將樂譜序列化為一個(gè)或多個(gè)符號(hào)序列,并輸入至序列模型。通常,會(huì)設(shè)計(jì)出類似MIDI協(xié)議的序列格式來表示一個(gè)單軌音樂序列[1-2,5]。 與單軌生成相比,多軌生成任務(wù)需要其生成的軌道具有很強(qiáng)的相關(guān)性,同時(shí)保持其自身的連續(xù)性。
最近幾年提出的多軌音樂生成模型主要有Muse-GAN[4,6]、XiaoIce Band[7]以 及PopMAG。這 些 模 型 并沒有細(xì)致地模擬不同音軌之間的音符依賴關(guān)系。具體而言,正如Ren等人[8]指出,MuseGAN僅僅在多個(gè)生成器的參數(shù)上共享了一些特征,這樣并不能細(xì)粒度地去為單個(gè)音符間的依賴關(guān)系建模;對(duì)于XiaoIce Band,在一個(gè)生成步驟中不同解碼器的生成過程仍然是獨(dú)立的,所以同一時(shí)間步驟中音符標(biāo)記之間的依賴關(guān)系仍然沒有被建模;而對(duì)于PopMAG,將多條軌道合并至單條序列的操作會(huì)破壞單軌樂譜的序列結(jié)構(gòu),影響生成效果。
本文提出了用于多軌音樂生成的MuseTransformer。MuseTransformer遵循多生成器樣式。每個(gè)生成器都是一個(gè)基于Transformer的網(wǎng)絡(luò),包含一個(gè)Transformer編碼器和一個(gè)解碼器。為了對(duì)當(dāng)前生成的符號(hào)和各個(gè)音軌的歷史內(nèi)容之間的依賴關(guān)系建模,來自各生成器的編碼器與解碼器通過全相聯(lián)連接,這樣每個(gè)解碼器均可以獲取到任意軌道任意歷史時(shí)刻的上下文信息。通過在每個(gè)軌道上使用一種迭代生成的策略,本文模型在生成過程中也能夠模擬在相同演奏時(shí)刻中產(chǎn)生的音符之間的依賴關(guān)系。為了模擬大時(shí)間跨度的人類作曲行為,MuseTransformer將來自合并序列方法的位置標(biāo)記引入其序列格式,這使得模型能夠在任意樂譜位置生成未來的音符,而不受限于固定的時(shí)間步長(zhǎng)。
為了提高訓(xùn)練效率以及支持長(zhǎng)序列的生成,樂譜的序列表示長(zhǎng)度應(yīng)盡可能短。本文基于MuMIDI[8]和REMI[9]設(shè)計(jì)了一種新的序列格式,以進(jìn)一步縮短序列長(zhǎng)度,即MuseSeq。MuseSeq引入了一種名為KPS的新型位置符號(hào)來標(biāo)記樂譜中的符號(hào)位置。與常規(guī)位置符號(hào)不同,KPS僅插入在每組緊湊音符序列的開頭。實(shí)驗(yàn)證明,與傳統(tǒng)的位置標(biāo)記相比,使用KPS標(biāo)記時(shí),表示相同長(zhǎng)度的樂譜所需的符號(hào)要少得多。綜上,本文的貢獻(xiàn)總結(jié)如下:
(1)提出了多軌音樂生成框架MuseTransformer,采用多輸入、多輸出的Transformer網(wǎng)絡(luò)變體,能夠?qū)Ξ?dāng)前符號(hào)與任意時(shí)刻任意軌道的歷史符號(hào)間的依賴關(guān)系進(jìn)行建模。
(2)設(shè)計(jì)了MuseSeq,一種新穎的緊湊序列格式,能夠顯著縮短多軌音符序列編碼后的總長(zhǎng)度。
在MuseSeq多軌序列表示中,包含兩種符號(hào)序列:一個(gè)和聲符號(hào)序列與多個(gè)音軌序列。在多個(gè)音軌序列中,有一個(gè)序列被指定為主旋律序列。
MuseSeq序列表示的符號(hào)類型與PopMAG工作[8]類似,包含了音符符號(hào)(Note Symbol)、和聲符號(hào)(Chord Symbol)與位置標(biāo)記(Position Symbol)三種類型。與PopMAG不同的是,MuseSeq提出了關(guān)鍵位置標(biāo)記(Key Position Symbol,KPS)來替代傳統(tǒng)的位置標(biāo)記。
1.1.1 音符符號(hào)
一個(gè)音符符號(hào)由Note表示,記為yn。一個(gè)音符包含三個(gè)屬性,如式(1)所示:
其 中,ynp∈{0,1,2,…,127},ynv∈[0,120]與ynd∈{0,1,2,…,80}分別表示音高、音量與音符時(shí)長(zhǎng)。對(duì)于音符時(shí)長(zhǎng)的編碼,定義一個(gè)四分音符的1/8為最小的基本時(shí)長(zhǎng)單位,并忽略時(shí)長(zhǎng)小于該時(shí)值的音符符號(hào)。對(duì)于原樂譜中的多個(gè)相同音高的連續(xù)音符,使用時(shí)值相同的單個(gè)音符符號(hào)來表示它們。MuseSeq不對(duì)休止音符進(jìn)行編碼。
1.1.2 關(guān)鍵位置標(biāo)記
一個(gè)關(guān)鍵位置標(biāo)記記作yk。yk是一個(gè)二元組,如式(2)所示:
其中pbar∈{0,1,…,100}是小節(jié)位置,poff∈{0,1,…,63}是小節(jié)內(nèi)偏移數(shù)。
與傳統(tǒng)位置標(biāo)記類似,KPS一般在序列中位于音符符號(hào)的前面,其作用是明確序列中的音符符號(hào)的演奏時(shí)刻。在生成模型中,KPS的另一個(gè)作用是將多個(gè)序列中的符號(hào)按時(shí)序進(jìn)行對(duì)齊。與傳統(tǒng)位置標(biāo)記不同的是,KPS僅被插入在少量關(guān)鍵的音符前面。具體的插入規(guī)則在1.2小節(jié)介紹。
1.1.3 和聲標(biāo)記
和聲標(biāo)記記為yc,用來指明序列中特定位置的和聲類型。與音符符號(hào)不同,和聲標(biāo)記并沒有使用單獨(dú)的關(guān)鍵位置符號(hào)來標(biāo)記位置,而是將位置信息直接編碼至符號(hào)內(nèi)容中。因此,和聲標(biāo)記的結(jié)構(gòu)如式(3)所示:
其 中pbar、poff定義同1.1.2小節(jié),而ych∈{0,1,2,…,83}是一整型數(shù),用來表明和聲類型。根據(jù)樂理知識(shí),和聲類型ych由根音的音高與和聲色彩(Chord Quality)兩個(gè)因素決定。 類似Ren等人[8]與Huang等人[9]工作,和聲標(biāo)記符號(hào)選擇了12個(gè)根音音高級(jí)與7個(gè)和聲色彩,總共有84個(gè)和聲類型。
在MuseSeq中,一張樂譜S的結(jié)構(gòu)如式(4)所示:
其中Yc是和聲標(biāo)記序列,Yti(i=1,2,…,nt)是第i個(gè)音軌的音符序列。
和聲標(biāo)記序列Yc僅由和聲符號(hào)組成,如式(5)所示:
第i個(gè)音符序列包含兩種符號(hào)類型:位置符號(hào)yp與音符yn,如式(6)、(7)所示:
在每個(gè)音軌序列中,音符符號(hào)按照符號(hào)的演奏開始時(shí)間升序排列。在每個(gè)音符符號(hào)的前面,可以存在一個(gè)KPS符號(hào)來指明音符的位置。然而,不一定每個(gè)音符都會(huì)有對(duì)應(yīng)的KPS存在其前面。KPS當(dāng)且僅當(dāng)如下兩個(gè)條件之一成立時(shí)才被附加到音符前面:
(1)當(dāng)前音符位于強(qiáng)拍位置。
(2)上一個(gè)音符與當(dāng)前音符的演奏間隔大于等于1個(gè)四分音符。
作為例子,圖1展示了同一段樂句被序列化為MuseSeq與包含傳統(tǒng)位置符號(hào)的序列(以PopMAG工作的Mu-MIDI為例)的比較,可見MuseSeq序列在空間復(fù)雜度上的明顯優(yōu)勢(shì)。
圖1 單軌樂譜被序列化為MuseSeq表示與Mu-MIDI表示的對(duì)比
如圖2所示,MuseTransformer由四大模塊組成:嵌入表示模塊、編碼器模塊、解碼器模塊與輸出模塊。嵌入表示模塊接收一個(gè)和聲序列的輸入和nt個(gè)音軌序列的輸入,輸出模塊分別輸出nt個(gè)音軌序列的每個(gè)下一個(gè)符號(hào)的概率分布。
圖2 MuseTransformer架構(gòu)
嵌入表示模塊包含一個(gè)和聲符號(hào)嵌入器Embc與音軌符號(hào)嵌入器Embt。
2.2.1 和聲符號(hào)嵌入器
和聲符號(hào)嵌入器Embc對(duì)和聲符號(hào)yc進(jìn)行編碼,將和聲類型與譜面位置ycpos編碼成詞向量xc,如式(8)所示:
其中Wct是可訓(xùn)練的嵌入矩陣,而Embpos是sinusoid位置嵌入函數(shù)[10]。此處為了簡(jiǎn)潔,忽略了下標(biāo)中的符號(hào)序列數(shù)。
2.2.2 音軌序列嵌入器
音軌序列嵌入器Embt將第i條音軌的符號(hào)yti編碼得到相應(yīng)的詞向量xni,如式(9)所示:
具體的嵌入過程取決于符號(hào)yti的類型,如式(10)所示:
對(duì)于音符符號(hào)yn,通過各種嵌入矩陣分別編碼,如式(11)所示:
其中Wpi、Wdur、Wvol分別是對(duì)應(yīng)音高、時(shí)長(zhǎng)與音量的嵌入矩陣。是位置符號(hào)的嵌入函數(shù),它將小節(jié)數(shù)與小節(jié)內(nèi)偏移ynoff進(jìn)行編碼,如式(12)所示:
其中Wbeat與Woff分別是對(duì)應(yīng)小節(jié)數(shù)與小節(jié)內(nèi)偏移的嵌入矩陣。
對(duì)于KPS符號(hào)yp,使用與音符符號(hào)同樣的位置嵌入函數(shù)進(jìn)行位置嵌入。
2.3.1 編碼器
MuseTransformer中有nt+2個(gè)編碼器,即nt個(gè)音軌 的 編 碼 器En1,En2, …,Ennt,1個(gè) 旋 律 音 軌 編 碼 器Em與1個(gè)和聲序列編碼器Ec。
Ec將和聲序列編碼成相應(yīng)的特征向量Cc,如式(13)所示:
Em與Ei(i=1,2,…,nt)將各音軌的音符序列編碼成相應(yīng)的特征向量,如式(14)所示:
2.3.2 解碼器
解碼器模塊包含nt個(gè)解碼器{D1,D2,…,Dnt}。每個(gè)解碼器Dk(k=1,2,…,nt)接收所有編碼器的特征向量作為輸入,包括和聲序列特征向量Cc與音軌序列特征向量,然后生成解碼器輸出向量如式(15)所示:
每個(gè)解碼器Dk(k=1,2,…,nt)由nt+1個(gè)線性堆疊的LSH注意力塊B0,B1,…,Bnt組成,如式(16)所示:
每個(gè)LSH注意力塊Bi接收一個(gè)關(guān)鍵字向量Ki、值向量Vi與查詢向量Qi作為輸入,并產(chǎn)生注意力輸出,如式(17)所示:
模型采用序列式的方法混合來自各個(gè)音軌的編碼器輸出,如圖3所示。每個(gè)注意力層的查詢向量輸入Qi均是前一個(gè)注意力塊所計(jì)算得到的注意力輸出,如式(18)所示:
圖3 Dn的各個(gè)解碼器塊
第i個(gè)LSH注意力塊的值向量輸入Vi與關(guān)鍵字向量Ki輸入是相同的,均依次取自各個(gè)編碼器輸出:
在輸出模塊中,對(duì)應(yīng)各軌道的各個(gè)解碼器的輸出被輸入到一前饋層,得到logit向量,如 式(20)所示:
2.5.1 訓(xùn)練方法
MuseTransformer使用teacher-forcing策略來完成訓(xùn)練,按照層次結(jié)構(gòu)依次遍歷集中每個(gè)曲譜、每個(gè)音軌與音軌中的每個(gè)符號(hào)。在每個(gè)訓(xùn)練步驟中,漸增式地將數(shù)據(jù)集中的真實(shí)音軌數(shù)據(jù)的前段部分輸入各編碼器Eni,并預(yù)測(cè)每條軌道的下一個(gè)符號(hào)與計(jì)算損失函數(shù)。為了使模型能夠?qū)W得利用其他軌道的當(dāng)前時(shí)刻與歷史時(shí)刻的信息,在每條音軌被訓(xùn)練時(shí),其他音軌會(huì)根據(jù)當(dāng)前被訓(xùn)練音軌的訓(xùn)練進(jìn)度,僅保留與被訓(xùn)練音軌相同的演奏時(shí)間部分,輸入對(duì)應(yīng)的編碼器。
訓(xùn)練用到的損失函數(shù)由以下兩項(xiàng)損失函數(shù)構(gòu)成:第一項(xiàng)稱為類型損失,它度量預(yù)測(cè)出的符號(hào)類型與真實(shí)符號(hào)類型的差距;第二項(xiàng)稱為內(nèi)容損失,它度量生成符號(hào)內(nèi)容與真實(shí)內(nèi)容的差距。兩個(gè)損失函數(shù)的定義如式(21)~(23)所示:
2.5.2 生成方法
在生成過程中,和聲序列與一條音軌序列會(huì)作為輸入,而MuseTransformer會(huì)從零生成其他音軌信息。
序列生成策略:每個(gè)生成步驟中,均會(huì)為多個(gè)軌道中的某個(gè)軌道生成一個(gè)符號(hào)。為了保證各個(gè)軌道能生成時(shí)長(zhǎng)相同的內(nèi)容,每次生成步時(shí),都會(huì)選擇當(dāng)前所生成內(nèi)容最少的那條軌道進(jìn)行生成。MuseTransformer會(huì)對(duì)每個(gè)新符號(hào)做兩個(gè)校驗(yàn)測(cè)試:(1)新符號(hào)若是KPS類型,其位置值需要比之前的KPS符號(hào)大;(2)KPS類型符號(hào)的下一個(gè)符號(hào)需要是音符符號(hào)。若校驗(yàn)測(cè)試通過,新符號(hào)會(huì)附加到當(dāng)前音軌的最后,若未通過,則重新生成直至測(cè)試通過為止。當(dāng)所有序列的長(zhǎng)度都大于等于最大序列長(zhǎng)度nseq時(shí),或者最大譜面小節(jié)數(shù)與節(jié)內(nèi)偏移超過max([pbar,poff]),即[100,64]時(shí),生成過程停止。 圖4展示了一個(gè)多軌序列按照序列生成策略的生成過程。
圖4 生成過程示例
本文設(shè)計(jì)了三個(gè)實(shí)驗(yàn)來驗(yàn)證方法的有效性以及與其他方法進(jìn)行效果對(duì)比:(1)消融實(shí)驗(yàn);(2)采用MuseSeq序列表示的序列長(zhǎng)度與其他表示法的序列長(zhǎng)度的對(duì)比;(3)MuseTransformer與其他方法的生成性能比較。
在實(shí)驗(yàn)中,軌道數(shù)nt設(shè)為5,音軌序列長(zhǎng)度上限nseq設(shè)為512,和聲序列長(zhǎng)度上限nch設(shè)為256。每個(gè)編碼器均由12層LSH注意力層組成,并具有8個(gè)注意力頭。訓(xùn)練過程使用了SGD方法,在一塊24 GB顯存的NVIDIA 3090顯卡上訓(xùn)練模型,學(xué)習(xí)率設(shè)為0.0002,mini-batch被設(shè)成50張樂譜。
所有實(shí)驗(yàn)在以下多軌樂譜數(shù)據(jù)集上進(jìn)行:
(1)MuseData數(shù)據(jù)集。該數(shù)據(jù)集是本文提出的多軌樂譜數(shù)據(jù)集,含有6579張由MuseScore社區(qū)用戶上傳的高質(zhì)量管弦樂樂譜。每張樂譜的音軌數(shù)量在5~30,且每個(gè)音軌至少包含40個(gè)音符,平均音符數(shù)為324。
(2)Lakh MIDI數(shù)據(jù)集。該數(shù)據(jù)集由哥倫比亞大學(xué)的Colin等人提出[11],包含176581個(gè)MIDI樂譜。為了讓Lakh MIDI數(shù)據(jù)集能與MuseData數(shù)據(jù)集以相同的方式使用,在該數(shù)據(jù)集中篩選出了音軌數(shù)大于5且音軌長(zhǎng)度都大于40的8327張樂譜,這些樂譜的平均音軌長(zhǎng)度是102個(gè)音符。
由于音樂體裁的特殊性,傳統(tǒng)的NLP評(píng)價(jià)指標(biāo)并不適合評(píng)估音符序列。為了同時(shí)評(píng)估生成序列的準(zhǔn)確性與多軌序列之間的關(guān)聯(lián)性強(qiáng)度,設(shè)計(jì)了如下評(píng)價(jià)指標(biāo):
(1)和弦飽和度(Chord Saturation),記為CS,該指標(biāo)用于評(píng)估生成內(nèi)容與真實(shí)和弦類型的匹配程度。對(duì)于一個(gè)生成的音符序列片段,首先計(jì)算出該片段所涵蓋的調(diào)性音高級(jí)(Tonal Pitch Class)的集合,再將該集合與對(duì)應(yīng)的真實(shí)和弦類型所包含的調(diào)性音高級(jí)的集合求交,和弦飽和度則定義為求交后的集合與原集合的元素?cái)?shù)量比值,如式(24)所示:
其中Xn表示模型生成的音符序列片段,x^c為輸入的真實(shí)和弦類型,tpc(xc)表示音符xc的調(diào)性音高級(jí)。
CS指標(biāo)既可以針對(duì)單軌音符序列計(jì)算,也可以針對(duì)多軌音符序列計(jì)算。在這兩種情況下,均依次以每個(gè)小節(jié)為單位,將小節(jié)內(nèi)一個(gè)或多個(gè)軌道的所有音符作為一個(gè)片段來計(jì)算和弦飽和度。整個(gè)音軌或樂譜的和弦飽和度則取自各個(gè)小節(jié)的和弦飽和度的均值。
(2)等音高級(jí)音程數(shù)量(Number of Same Pitch Intervals at Same Time),是一個(gè)多軌相關(guān)程度衡量指標(biāo),記為SPIAST。來自不同音軌的音符經(jīng)常會(huì)構(gòu)成音程(interval)關(guān)系。在這些音程關(guān)系中,純八度(perfect octave)與純一度(perfect unison)音程最有代表性。在不同軌道間,這些音程的高頻率出現(xiàn)也就代表著軌道間生成內(nèi)容的高相關(guān)性。所以,對(duì)于多軌音軌片段,通過度量這兩個(gè)音程的出現(xiàn)次數(shù)來作為評(píng)估關(guān)聯(lián)性程度的參考。
(3)音高級(jí)數(shù)量(Used Pitch Class),記為UPC。受MuseGAN工作[12]的啟發(fā),該指標(biāo)將樂譜連續(xù)均勻劃分成相等時(shí)間段,并統(tǒng)計(jì)在每個(gè)時(shí)間段內(nèi)樂譜所用到的音高級(jí)數(shù)量,最后將每個(gè)時(shí)間段的音高級(jí)數(shù)量取平均得到。UPC既可以用于評(píng)價(jià)單軌音符序列的連貫性,也可以用于多軌音符序列,以評(píng)價(jià)整體和弦的飽滿程度。在MuseGAN中,UPC所計(jì)算的單位為每個(gè)小節(jié)。為了避免統(tǒng)計(jì)多軌序列的UPC時(shí)音符過于擁堵,本文選擇的時(shí)間跨度為每個(gè)四分音符。對(duì)于多軌序列,更高的UPC值通常意味著更少的相關(guān)性,因?yàn)楦鱾€(gè)軌道傾向于各自獨(dú)立,音符會(huì)有較少重疊。
(4)困惑度(Perplexity),記為PPL。與Ren等人[8]、XiaoIce樂隊(duì)[7]的工作類似,實(shí)驗(yàn)中也使用了常用于NLP任務(wù)的困惑度來評(píng)價(jià)每條生成音符序列的準(zhǔn)確性。由于MuseSeq中的音符符號(hào)包含多個(gè)字段,首先計(jì)算音符符號(hào)的每個(gè)字段的PPL,再將它們相乘得到整個(gè)符號(hào)的PPL。
消融實(shí)驗(yàn)用來證明含有KPS的符號(hào)序列格式(見1.2小節(jié))、序列生成策略(見2.5.2小節(jié))和輸入混合策略(見2.3.2小節(jié))的有效性。所有的消融實(shí)驗(yàn)均為執(zhí)行從旋律音軌到其他音軌的生成任務(wù),且均在MuseData數(shù)據(jù)集上完成訓(xùn)練,但使用的是不同的MuseTransformer變種。對(duì)于PPL指標(biāo),直接采用訓(xùn)練過程中用到的teacher-forcing完成評(píng)估,每次根據(jù)新生成符號(hào)的概率分布與真實(shí)符號(hào)的內(nèi)容來計(jì)算PPL,并將每步的PPL相乘得到最終的PPL。對(duì)于其他評(píng)價(jià)指標(biāo),在生成的多軌序列上完成評(píng)估。
消融測(cè)試的實(shí)驗(yàn)結(jié)果見表1,這里“CS”列指生成多軌序列上的和弦飽和度,“CS0”列指原真實(shí)序列上的和弦飽和度,其他列均對(duì)應(yīng)為其他評(píng)價(jià)指標(biāo)。
表1 本文模型在MuseData數(shù)據(jù)集上的消融測(cè)試
3.4.1 序列化生成策略的消融測(cè)試
為了驗(yàn)證本文提出的序列生成方案的有效性,設(shè)計(jì)了一個(gè)生成算法的變種,它并行地運(yùn)行對(duì)應(yīng)各個(gè)音軌的多個(gè)生成器,而沒有采用異步執(zhí)行策略。本小節(jié)比較了該變種(記為MT w/o serial gen)與原始模型(記為MT)的生成性能,結(jié)果如表1前兩行所示。通過比較CS與SPIAST兩列的結(jié)果,可以發(fā)現(xiàn)序列化生成策略帶來了更飽滿的和弦實(shí)現(xiàn),這表明不同軌道間有更強(qiáng)的關(guān)聯(lián)性。在UPC數(shù)據(jù)方面,原始模型具有不超過4的平均音高級(jí)數(shù)量,也意味著較為集中的和弦分布。
3.4.2 含有關(guān)鍵位置標(biāo)記序列的消融測(cè)試
為了驗(yàn)證關(guān)鍵位置標(biāo)記相對(duì)于普通位置標(biāo)記,并不會(huì)對(duì)模型性能產(chǎn)生顯著不良影響,設(shè)計(jì)了MuseTransformer的另一變種,該變種所使用的音符序列中,為所有音符符號(hào)都加入了普通位置標(biāo)記。該變種(記為MT w/o KPS)與原始模型的性能比較如表1的第3行與第1行所示??梢杂^察出,原始模型與該變種的性能較為接近,這說明關(guān)鍵位置標(biāo)記的引入并不會(huì)對(duì)模型性能帶來顯著影響。
3.4.3 輸入混合策略的消融測(cè)試
為了驗(yàn)證輸入混合策略有助于增強(qiáng)序列間的相關(guān)性,使MuseTransformer的解碼器僅使用其對(duì)應(yīng)軌道的編碼輸入,即讓各個(gè)生成器完全獨(dú)立工作,該變種(記為MT w/o input comb)的實(shí)驗(yàn)結(jié)果如表1的第5行所示??梢园l(fā)現(xiàn),雖然在生成準(zhǔn)確性方面(如PPL值)該變種并不明顯遜于其他變種,但在多軌關(guān)聯(lián)性方面(如CS與UPC指標(biāo)),該變種在所有消融實(shí)驗(yàn)變種中為最差,SPIAST值也處于較低水平。這說明輸入混合策略對(duì)于保障生成序列的相關(guān)性起到了至關(guān)重要的作用。
3.5.1 序列表示效率對(duì)比
分別使用MuseSeq與PopMAG工作中的Mu-MIDI表示對(duì)MuseData數(shù)據(jù)集中隨機(jī)選擇的100張有代表性的樂譜進(jìn)行編碼。各音軌編碼后的平均序列長(zhǎng)度與總樂譜平均長(zhǎng)度的對(duì)比如表2所示。
表2 各音軌在不同表示下的平均序列長(zhǎng)度
從表2可以看出,對(duì)于各個(gè)音軌序列,得益于MuseSeq縮減了冗余的位置符號(hào)信息,其表示長(zhǎng)度比含有完全位置符號(hào)的Mu-MIDI序列減少40%左右。而對(duì)于包含全部音軌的總譜,MuseSeq序列長(zhǎng)度也要比Mu-MIDI減少15%左右。
3.5.2 多軌生成效果對(duì)比
本小節(jié)將本文模型與MuseGAN[12]相比較。為了讓MuseGAN生成與本文工作類似的樂譜結(jié)構(gòu)與配置,將MuseGAN的生成器數(shù)量設(shè)成4,單小節(jié)內(nèi)的時(shí)間單位數(shù)設(shè)為與本文工作等同的64,并使用文獻(xiàn)[12]中所描述的作曲家模型(Composer Model)與track-conditional生成方法。為了簡(jiǎn)化工作流程,MuseGAN使用了其原先工作中的四件樂器(貝斯、小提琴、吉他、鋼琴),而在MuseTransfomer生成器中也保留了這4件相同的樂器。MuseGAN所用到的LPD-matched數(shù)據(jù)集的鋼琴卷簾表示被轉(zhuǎn)換為含有KPS符號(hào)的MuseSeq序列表示,以供MuseTransformer訓(xùn)練。各項(xiàng)指標(biāo)的實(shí)驗(yàn)結(jié)果見表3。實(shí)驗(yàn)統(tǒng)計(jì)了CS、UPC與SPIAST三 個(gè) 評(píng) 價(jià) 指 標(biāo),其 中CSa、SPIASTa與UPCa列 均表示針對(duì)所有軌道計(jì)算的指標(biāo)值,而其他指標(biāo)均表示針對(duì)單個(gè)軌道計(jì)算的指標(biāo)值。
表3 MuseTransformer與MuseGAN的性能比較
如表3所示,在和弦準(zhǔn)確性方面,本文模型的CS指標(biāo)在多數(shù)軌道以及整體上均優(yōu)于MuseGAN,說明了本文模型的生成內(nèi)容無論在單軌還是多軌方面都更加準(zhǔn)確地反映出和弦類型。在UPC指標(biāo)方面,兩模型的單軌UPC數(shù)據(jù)不相上下,說明了在單軌連貫性方面,兩模型表現(xiàn)相近;而在多軌UPC數(shù)據(jù)上,MuseGAN超過5的指標(biāo)說明了其生成的多軌序列在音高級(jí)上的分布較為分散,關(guān)聯(lián)較少,而MuseTransformer在3與4之間的指標(biāo),表明其多軌序列較強(qiáng)的關(guān)聯(lián)性。
本文根據(jù)多軌音符序列軌道間的強(qiáng)關(guān)聯(lián)性、單軌的連續(xù)性等特征,在Transformer網(wǎng)絡(luò)基礎(chǔ)之上,針對(duì)性地設(shè)計(jì)了包含多個(gè)生成器的生成模型以及相應(yīng)的協(xié)作生成策略,以及更優(yōu)化的含有關(guān)鍵位置標(biāo)記的序列表示。經(jīng)實(shí)驗(yàn)驗(yàn)證,本文提出的網(wǎng)絡(luò)結(jié)構(gòu)能夠明顯地提升生成內(nèi)容的關(guān)聯(lián)性與和諧性;而更優(yōu)化的序列表示,也在顯存空間的限制下,為未來長(zhǎng)序列的音樂生成打下了基礎(chǔ)。