王嵩超,李金龍
(中國科學技術大學 計算機科學與技術學院,安徽 合肥 230026)
多目標序列生成技術在多軌音樂生成等任務中有著重要應用,這需要同時確保多個生成的序列自身的連續性與序列之間很強的相關性。本文關注音樂生成背景下的多序列生成問題。現代音樂歌曲通常包含多個音軌,包括旋律音軌和用于伴奏的多個樂器音軌。早期的研究[1-2]專注于只有單軌的旋律生成,而最近的工作[3-4]已經開始探索多軌音樂生成。在本文中,僅關注使用基于序列的方法的多軌音樂生成問題。
基于序列的方法首先會將樂譜序列化為一個或多個符號序列,并輸入至序列模型。通常,會設計出類似MIDI協議的序列格式來表示一個單軌音樂序列[1-2,5]。 與單軌生成相比,多軌生成任務需要其生成的軌道具有很強的相關性,同時保持其自身的連續性。
最近幾年提出的多軌音樂生成模型主要有Muse-GAN[4,6]、XiaoIce Band[7]以 及PopMAG。這 些 模 型 并沒有細致地模擬不同音軌之間的音符依賴關系。具體而言,正如Ren等人[8]指出,MuseGAN僅僅在多個生成器的參數上共享了一些特征,這樣并不能細粒度地去為單個音符間的依賴關系建模;對于XiaoIce Band,在一個生成步驟中不同解碼器的生成過程仍然是獨立的,所以同一時間步驟中音符標記之間的依賴關系仍然沒有被建模;而對于PopMAG,將多條軌道合并至單條序列的操作會破壞單軌樂譜的序列結構,影響生成效果。
本文提出了用于多軌音樂生成的MuseTransformer。MuseTransformer遵循多生成器樣式。每個生成器都是一個基于Transformer的網絡,包含一個Transformer編碼器和一個解碼器。為了對當前生成的符號和各個音軌的歷史內容之間的依賴關系建模,來自各生成器的編碼器與解碼器通過全相聯連接,這樣每個解碼器均可以獲取到任意軌道任意歷史時刻的上下文信息。通過在每個軌道上使用一種迭代生成的策略,本文模型在生成過程中也能夠模擬在相同演奏時刻中產生的音符之間的依賴關系。為了模擬大時間跨度的人類作曲行為,MuseTransformer將來自合并序列方法的位置標記引入其序列格式,這使得模型能夠在任意樂譜位置生成未來的音符,而不受限于固定的時間步長。
為了提高訓練效率以及支持長序列的生成,樂譜的序列表示長度應盡可能短。本文基于MuMIDI[8]和REMI[9]設計了一種新的序列格式,以進一步縮短序列長度,即MuseSeq。MuseSeq引入了一種名為KPS的新型位置符號來標記樂譜中的符號位置。與常規位置符號不同,KPS僅插入在每組緊湊音符序列的開頭。實驗證明,與傳統的位置標記相比,使用KPS標記時,表示相同長度的樂譜所需的符號要少得多。綜上,本文的貢獻總結如下:
(1)提出了多軌音樂生成框架MuseTransformer,采用多輸入、多輸出的Transformer網絡變體,能夠對當前符號與任意時刻任意軌道的歷史符號間的依賴關系進行建模。
(2)設計了MuseSeq,一種新穎的緊湊序列格式,能夠顯著縮短多軌音符序列編碼后的總長度。
在MuseSeq多軌序列表示中,包含兩種符號序列:一個和聲符號序列與多個音軌序列。在多個音軌序列中,有一個序列被指定為主旋律序列。
MuseSeq序列表示的符號類型與PopMAG工作[8]類似,包含了音符符號(Note Symbol)、和聲符號(Chord Symbol)與位置標記(Position Symbol)三種類型。與PopMAG不同的是,MuseSeq提出了關鍵位置標記(Key Position Symbol,KPS)來替代傳統的位置標記。
1.1.1 音符符號
一個音符符號由Note表示,記為yn。一個音符包含三個屬性,如式(1)所示:

其 中,ynp∈{0,1,2,…,127},ynv∈[0,120]與ynd∈{0,1,2,…,80}分別表示音高、音量與音符時長。對于音符時長的編碼,定義一個四分音符的1/8為最小的基本時長單位,并忽略時長小于該時值的音符符號。對于原樂譜中的多個相同音高的連續音符,使用時值相同的單個音符符號來表示它們。MuseSeq不對休止音符進行編碼。
1.1.2 關鍵位置標記
一個關鍵位置標記記作yk。yk是一個二元組,如式(2)所示:

其中pbar∈{0,1,…,100}是小節位置,poff∈{0,1,…,63}是小節內偏移數。
與傳統位置標記類似,KPS一般在序列中位于音符符號的前面,其作用是明確序列中的音符符號的演奏時刻。在生成模型中,KPS的另一個作用是將多個序列中的符號按時序進行對齊。與傳統位置標記不同的是,KPS僅被插入在少量關鍵的音符前面。具體的插入規則在1.2小節介紹。
1.1.3 和聲標記
和聲標記記為yc,用來指明序列中特定位置的和聲類型。與音符符號不同,和聲標記并沒有使用單獨的關鍵位置符號來標記位置,而是將位置信息直接編碼至符號內容中。因此,和聲標記的結構如式(3)所示:

其 中pbar、poff定義同1.1.2小節,而ych∈{0,1,2,…,83}是一整型數,用來表明和聲類型。根據樂理知識,和聲類型ych由根音的音高與和聲色彩(Chord Quality)兩個因素決定。 類似Ren等人[8]與Huang等人[9]工作,和聲標記符號選擇了12個根音音高級與7個和聲色彩,總共有84個和聲類型。
在MuseSeq中,一張樂譜S的結構如式(4)所示:

其中Yc是和聲標記序列,Yti(i=1,2,…,nt)是第i個音軌的音符序列。
和聲標記序列Yc僅由和聲符號組成,如式(5)所示:

第i個音符序列包含兩種符號類型:位置符號yp與音符yn,如式(6)、(7)所示:

在每個音軌序列中,音符符號按照符號的演奏開始時間升序排列。在每個音符符號的前面,可以存在一個KPS符號來指明音符的位置。然而,不一定每個音符都會有對應的KPS存在其前面。KPS當且僅當如下兩個條件之一成立時才被附加到音符前面:
(1)當前音符位于強拍位置。
(2)上一個音符與當前音符的演奏間隔大于等于1個四分音符。
作為例子,圖1展示了同一段樂句被序列化為MuseSeq與包含傳統位置符號的序列(以PopMAG工作的Mu-MIDI為例)的比較,可見MuseSeq序列在空間復雜度上的明顯優勢。

圖1 單軌樂譜被序列化為MuseSeq表示與Mu-MIDI表示的對比
如圖2所示,MuseTransformer由四大模塊組成:嵌入表示模塊、編碼器模塊、解碼器模塊與輸出模塊。嵌入表示模塊接收一個和聲序列的輸入和nt個音軌序列的輸入,輸出模塊分別輸出nt個音軌序列的每個下一個符號的概率分布。

圖2 MuseTransformer架構
嵌入表示模塊包含一個和聲符號嵌入器Embc與音軌符號嵌入器Embt。
2.2.1 和聲符號嵌入器
和聲符號嵌入器Embc對和聲符號yc進行編碼,將和聲類型與譜面位置ycpos編碼成詞向量xc,如式(8)所示:

其中Wct是可訓練的嵌入矩陣,而Embpos是sinusoid位置嵌入函數[10]。此處為了簡潔,忽略了下標中的符號序列數。
2.2.2 音軌序列嵌入器
音軌序列嵌入器Embt將第i條音軌的符號yti編碼得到相應的詞向量xni,如式(9)所示:

具體的嵌入過程取決于符號yti的類型,如式(10)所示:

對于音符符號yn,通過各種嵌入矩陣分別編碼,如式(11)所示:

其中Wpi、Wdur、Wvol分別是對應音高、時長與音量的嵌入矩陣。是位置符號的嵌入函數,它將小節數與小節內偏移ynoff進行編碼,如式(12)所示:

其中Wbeat與Woff分別是對應小節數與小節內偏移的嵌入矩陣。
對于KPS符號yp,使用與音符符號同樣的位置嵌入函數進行位置嵌入。
2.3.1 編碼器
MuseTransformer中有nt+2個編碼器,即nt個音軌 的 編 碼 器En1,En2, …,Ennt,1個 旋 律 音 軌 編 碼 器Em與1個和聲序列編碼器Ec。
Ec將和聲序列編碼成相應的特征向量Cc,如式(13)所示:

Em與Ei(i=1,2,…,nt)將各音軌的音符序列編碼成相應的特征向量,如式(14)所示:

2.3.2 解碼器
解碼器模塊包含nt個解碼器{D1,D2,…,Dnt}。每個解碼器Dk(k=1,2,…,nt)接收所有編碼器的特征向量作為輸入,包括和聲序列特征向量Cc與音軌序列特征向量,然后生成解碼器輸出向量如式(15)所示:

每個解碼器Dk(k=1,2,…,nt)由nt+1個線性堆疊的LSH注意力塊B0,B1,…,Bnt組成,如式(16)所示:

每個LSH注意力塊Bi接收一個關鍵字向量Ki、值向量Vi與查詢向量Qi作為輸入,并產生注意力輸出,如式(17)所示:

模型采用序列式的方法混合來自各個音軌的編碼器輸出,如圖3所示。每個注意力層的查詢向量輸入Qi均是前一個注意力塊所計算得到的注意力輸出,如式(18)所示:

圖3 Dn的各個解碼器塊

第i個LSH注意力塊的值向量輸入Vi與關鍵字向量Ki輸入是相同的,均依次取自各個編碼器輸出:

在輸出模塊中,對應各軌道的各個解碼器的輸出被輸入到一前饋層,得到logit向量,如 式(20)所示:

2.5.1 訓練方法
MuseTransformer使用teacher-forcing策略來完成訓練,按照層次結構依次遍歷集中每個曲譜、每個音軌與音軌中的每個符號。在每個訓練步驟中,漸增式地將數據集中的真實音軌數據的前段部分輸入各編碼器Eni,并預測每條軌道的下一個符號與計算損失函數。為了使模型能夠學得利用其他軌道的當前時刻與歷史時刻的信息,在每條音軌被訓練時,其他音軌會根據當前被訓練音軌的訓練進度,僅保留與被訓練音軌相同的演奏時間部分,輸入對應的編碼器。
訓練用到的損失函數由以下兩項損失函數構成:第一項稱為類型損失,它度量預測出的符號類型與真實符號類型的差距;第二項稱為內容損失,它度量生成符號內容與真實內容的差距。兩個損失函數的定義如式(21)~(23)所示:

2.5.2 生成方法
在生成過程中,和聲序列與一條音軌序列會作為輸入,而MuseTransformer會從零生成其他音軌信息。
序列生成策略:每個生成步驟中,均會為多個軌道中的某個軌道生成一個符號。為了保證各個軌道能生成時長相同的內容,每次生成步時,都會選擇當前所生成內容最少的那條軌道進行生成。MuseTransformer會對每個新符號做兩個校驗測試:(1)新符號若是KPS類型,其位置值需要比之前的KPS符號大;(2)KPS類型符號的下一個符號需要是音符符號。若校驗測試通過,新符號會附加到當前音軌的最后,若未通過,則重新生成直至測試通過為止。當所有序列的長度都大于等于最大序列長度nseq時,或者最大譜面小節數與節內偏移超過max([pbar,poff]),即[100,64]時,生成過程停止。 圖4展示了一個多軌序列按照序列生成策略的生成過程。

圖4 生成過程示例
本文設計了三個實驗來驗證方法的有效性以及與其他方法進行效果對比:(1)消融實驗;(2)采用MuseSeq序列表示的序列長度與其他表示法的序列長度的對比;(3)MuseTransformer與其他方法的生成性能比較。
在實驗中,軌道數nt設為5,音軌序列長度上限nseq設為512,和聲序列長度上限nch設為256。每個編碼器均由12層LSH注意力層組成,并具有8個注意力頭。訓練過程使用了SGD方法,在一塊24 GB顯存的NVIDIA 3090顯卡上訓練模型,學習率設為0.0002,mini-batch被設成50張樂譜。
所有實驗在以下多軌樂譜數據集上進行:
(1)MuseData數據集。該數據集是本文提出的多軌樂譜數據集,含有6579張由MuseScore社區用戶上傳的高質量管弦樂樂譜。每張樂譜的音軌數量在5~30,且每個音軌至少包含40個音符,平均音符數為324。
(2)Lakh MIDI數據集。該數據集由哥倫比亞大學的Colin等人提出[11],包含176581個MIDI樂譜。為了讓Lakh MIDI數據集能與MuseData數據集以相同的方式使用,在該數據集中篩選出了音軌數大于5且音軌長度都大于40的8327張樂譜,這些樂譜的平均音軌長度是102個音符。
由于音樂體裁的特殊性,傳統的NLP評價指標并不適合評估音符序列。為了同時評估生成序列的準確性與多軌序列之間的關聯性強度,設計了如下評價指標:
(1)和弦飽和度(Chord Saturation),記為CS,該指標用于評估生成內容與真實和弦類型的匹配程度。對于一個生成的音符序列片段,首先計算出該片段所涵蓋的調性音高級(Tonal Pitch Class)的集合,再將該集合與對應的真實和弦類型所包含的調性音高級的集合求交,和弦飽和度則定義為求交后的集合與原集合的元素數量比值,如式(24)所示:

其中Xn表示模型生成的音符序列片段,x^c為輸入的真實和弦類型,tpc(xc)表示音符xc的調性音高級。
CS指標既可以針對單軌音符序列計算,也可以針對多軌音符序列計算。在這兩種情況下,均依次以每個小節為單位,將小節內一個或多個軌道的所有音符作為一個片段來計算和弦飽和度。整個音軌或樂譜的和弦飽和度則取自各個小節的和弦飽和度的均值。
(2)等音高級音程數量(Number of Same Pitch Intervals at Same Time),是一個多軌相關程度衡量指標,記為SPIAST。來自不同音軌的音符經常會構成音程(interval)關系。在這些音程關系中,純八度(perfect octave)與純一度(perfect unison)音程最有代表性。在不同軌道間,這些音程的高頻率出現也就代表著軌道間生成內容的高相關性。所以,對于多軌音軌片段,通過度量這兩個音程的出現次數來作為評估關聯性程度的參考。
(3)音高級數量(Used Pitch Class),記為UPC。受MuseGAN工作[12]的啟發,該指標將樂譜連續均勻劃分成相等時間段,并統計在每個時間段內樂譜所用到的音高級數量,最后將每個時間段的音高級數量取平均得到。UPC既可以用于評價單軌音符序列的連貫性,也可以用于多軌音符序列,以評價整體和弦的飽滿程度。在MuseGAN中,UPC所計算的單位為每個小節。為了避免統計多軌序列的UPC時音符過于擁堵,本文選擇的時間跨度為每個四分音符。對于多軌序列,更高的UPC值通常意味著更少的相關性,因為各個軌道傾向于各自獨立,音符會有較少重疊。
(4)困惑度(Perplexity),記為PPL。與Ren等人[8]、XiaoIce樂隊[7]的工作類似,實驗中也使用了常用于NLP任務的困惑度來評價每條生成音符序列的準確性。由于MuseSeq中的音符符號包含多個字段,首先計算音符符號的每個字段的PPL,再將它們相乘得到整個符號的PPL。
消融實驗用來證明含有KPS的符號序列格式(見1.2小節)、序列生成策略(見2.5.2小節)和輸入混合策略(見2.3.2小節)的有效性。所有的消融實驗均為執行從旋律音軌到其他音軌的生成任務,且均在MuseData數據集上完成訓練,但使用的是不同的MuseTransformer變種。對于PPL指標,直接采用訓練過程中用到的teacher-forcing完成評估,每次根據新生成符號的概率分布與真實符號的內容來計算PPL,并將每步的PPL相乘得到最終的PPL。對于其他評價指標,在生成的多軌序列上完成評估。
消融測試的實驗結果見表1,這里“CS”列指生成多軌序列上的和弦飽和度,“CS0”列指原真實序列上的和弦飽和度,其他列均對應為其他評價指標。

表1 本文模型在MuseData數據集上的消融測試
3.4.1 序列化生成策略的消融測試
為了驗證本文提出的序列生成方案的有效性,設計了一個生成算法的變種,它并行地運行對應各個音軌的多個生成器,而沒有采用異步執行策略。本小節比較了該變種(記為MT w/o serial gen)與原始模型(記為MT)的生成性能,結果如表1前兩行所示。通過比較CS與SPIAST兩列的結果,可以發現序列化生成策略帶來了更飽滿的和弦實現,這表明不同軌道間有更強的關聯性。在UPC數據方面,原始模型具有不超過4的平均音高級數量,也意味著較為集中的和弦分布。
3.4.2 含有關鍵位置標記序列的消融測試
為了驗證關鍵位置標記相對于普通位置標記,并不會對模型性能產生顯著不良影響,設計了MuseTransformer的另一變種,該變種所使用的音符序列中,為所有音符符號都加入了普通位置標記。該變種(記為MT w/o KPS)與原始模型的性能比較如表1的第3行與第1行所示。可以觀察出,原始模型與該變種的性能較為接近,這說明關鍵位置標記的引入并不會對模型性能帶來顯著影響。
3.4.3 輸入混合策略的消融測試
為了驗證輸入混合策略有助于增強序列間的相關性,使MuseTransformer的解碼器僅使用其對應軌道的編碼輸入,即讓各個生成器完全獨立工作,該變種(記為MT w/o input comb)的實驗結果如表1的第5行所示。可以發現,雖然在生成準確性方面(如PPL值)該變種并不明顯遜于其他變種,但在多軌關聯性方面(如CS與UPC指標),該變種在所有消融實驗變種中為最差,SPIAST值也處于較低水平。這說明輸入混合策略對于保障生成序列的相關性起到了至關重要的作用。
3.5.1 序列表示效率對比
分別使用MuseSeq與PopMAG工作中的Mu-MIDI表示對MuseData數據集中隨機選擇的100張有代表性的樂譜進行編碼。各音軌編碼后的平均序列長度與總樂譜平均長度的對比如表2所示。

表2 各音軌在不同表示下的平均序列長度
從表2可以看出,對于各個音軌序列,得益于MuseSeq縮減了冗余的位置符號信息,其表示長度比含有完全位置符號的Mu-MIDI序列減少40%左右。而對于包含全部音軌的總譜,MuseSeq序列長度也要比Mu-MIDI減少15%左右。
3.5.2 多軌生成效果對比
本小節將本文模型與MuseGAN[12]相比較。為了讓MuseGAN生成與本文工作類似的樂譜結構與配置,將MuseGAN的生成器數量設成4,單小節內的時間單位數設為與本文工作等同的64,并使用文獻[12]中所描述的作曲家模型(Composer Model)與track-conditional生成方法。為了簡化工作流程,MuseGAN使用了其原先工作中的四件樂器(貝斯、小提琴、吉他、鋼琴),而在MuseTransfomer生成器中也保留了這4件相同的樂器。MuseGAN所用到的LPD-matched數據集的鋼琴卷簾表示被轉換為含有KPS符號的MuseSeq序列表示,以供MuseTransformer訓練。各項指標的實驗結果見表3。實驗統計了CS、UPC與SPIAST三 個 評 價 指 標,其 中CSa、SPIASTa與UPCa列 均表示針對所有軌道計算的指標值,而其他指標均表示針對單個軌道計算的指標值。

表3 MuseTransformer與MuseGAN的性能比較
如表3所示,在和弦準確性方面,本文模型的CS指標在多數軌道以及整體上均優于MuseGAN,說明了本文模型的生成內容無論在單軌還是多軌方面都更加準確地反映出和弦類型。在UPC指標方面,兩模型的單軌UPC數據不相上下,說明了在單軌連貫性方面,兩模型表現相近;而在多軌UPC數據上,MuseGAN超過5的指標說明了其生成的多軌序列在音高級上的分布較為分散,關聯較少,而MuseTransformer在3與4之間的指標,表明其多軌序列較強的關聯性。
本文根據多軌音符序列軌道間的強關聯性、單軌的連續性等特征,在Transformer網絡基礎之上,針對性地設計了包含多個生成器的生成模型以及相應的協作生成策略,以及更優化的含有關鍵位置標記的序列表示。經實驗驗證,本文提出的網絡結構能夠明顯地提升生成內容的關聯性與和諧性;而更優化的序列表示,也在顯存空間的限制下,為未來長序列的音樂生成打下了基礎。