講堂 | 譚旭:AI音樂(lè ),技術(shù)與藝術(shù)的碰撞(1)
編者按:日前,在2021全球人工智能技術(shù)大會(huì )(GAITC)的“當 AI 與藝術(shù)相遇”專(zhuān)題論壇上,微軟亞洲研究院主管研究員譚旭發(fā)表了題為《基于深度學(xué)習的流行音樂(lè )創(chuàng )作》的演講。該分享從分析流行音樂(lè )的工業(yè)化制作流程切入,介紹了深度學(xué)習是如何輔助流行音樂(lè )的創(chuàng )作,微軟亞洲研究院在 AI 音樂(lè )創(chuàng )作領(lǐng)域的一系列研究成果,以及當前AI音樂(lè )生成所面臨的研究挑戰等。本文為此次演講內容的完整整理,希望可以給大家在A(yíng)I與藝術(shù)相互結合的研究方向上帶來(lái)更多啟發(fā)。
大家好!我是微軟亞洲研究院主管研究員譚旭,這次報告的題目是“基于深度學(xué)習的流行音樂(lè )創(chuàng )作”,我們將詳細探討如何將深度學(xué)習應用到流行音樂(lè )的創(chuàng )作過(guò)程中。我們先來(lái)看一下流行音樂(lè )的創(chuàng )作流程是什么樣的。
什么是流行音樂(lè )?按照字面的理解就是流行的音樂(lè ),實(shí)際上流行音樂(lè )我們通常指的是商品音樂(lè ),也就是通俗、大眾、喜聞樂(lè )見(jiàn),又能商品化制作的音樂(lè )。因此,這類(lèi)音樂(lè )具有固定的制作流程,包括詞曲創(chuàng )作、伴奏編曲、錄制樂(lè )器聲音和人聲、進(jìn)行混音,最后進(jìn)入到唱片制作等環(huán)節。而這是典型的工業(yè)制作流程,我們需要將其進(jìn)行抽象以便在音樂(lè )創(chuàng )作中充分利用深度學(xué)習技術(shù)。
經(jīng)過(guò)抽象我們得到了以下三個(gè)環(huán)節:
1)曲譜生成,包括詞曲和伴奏編曲的生成;
2)演奏生成,曲譜到聲音需要經(jīng)過(guò)演奏的過(guò)程,相同的曲譜經(jīng)過(guò)不同的演奏技巧演奏可以有非常大的差別,所以我們要基于曲譜生成演奏技巧;
3)聲音合成,根據曲譜和演奏技巧合成音樂(lè )聲音,包括人聲和樂(lè )器聲音的合成。
有了這個(gè)抽象以后,深度學(xué)習技術(shù)尤其是內容生成技術(shù)就可以應用到流行音樂(lè )的創(chuàng )作中了。其實(shí)音樂(lè )不只是藝術(shù),它還包括邏輯和規則,而這些都是深度學(xué)習所擅長(cháng)的。如果有足夠的數據、模型容量和計算力,深度學(xué)習就能產(chǎn)生比較好的效果。所以我們可以把上述流程對應到典型的深度學(xué)習應用任務(wù)上。曲譜和演奏技巧的生成,可以對應自然語(yǔ)言處理里的語(yǔ)言生成,因為它們就是用 symbolic token 符號表示,而聲音生成則可以對應到語(yǔ)音合成,這樣我們就能借鑒這些成熟領(lǐng)域的深度學(xué)習技術(shù)來(lái)幫助音樂(lè )生成了。
過(guò)去一段時(shí)間,微軟亞洲研究院在 AI 音樂(lè )創(chuàng )作方向上開(kāi)展了一系列研究工作,包括 Song Writing(詞曲寫(xiě)作)、Arrangement(伴奏生成)、Singing Voice Synthesis(歌聲合成)等。在詞曲寫(xiě)作方面又涵蓋了:1) SongMASS,歌詞到旋律以及旋律到歌詞的生成;2) StructMelody,利用音樂(lè )結構信息生成旋律;3) DeepRapper,Rap歌詞押韻和節奏的生成;4) MusicBERT,通過(guò)大規模音樂(lè )數據學(xué)習音樂(lè )表征以更好的理解音樂(lè ),對音樂(lè )的風(fēng)格、情感、曲式結構的理解。在伴奏編曲方面有 PopMAG 伴奏生成。在歌聲合成方面有 HiFiSinger 高保真的歌聲合成。接下來(lái),我們將依次介紹這些工作。
詞曲寫(xiě)作
在詞曲寫(xiě)作方面,我們探討了歌詞生成旋律以及旋律生成歌詞兩個(gè)任務(wù),并分析了這兩個(gè)任務(wù)的特點(diǎn):
1. 要保證生成的歌詞和旋律本身具有歌詞性和旋律性。這個(gè)方面靠大量的數據做語(yǔ)言模型的建??梢宰龅眠€不錯;
2. 要保證歌詞和旋律的匹配度。按照傳統的術(shù)語(yǔ)講就是腔詞關(guān)系 (腔就是旋律、詞就是歌詞),好的腔詞關(guān)系能互相促進(jìn)表達,而不好的腔詞關(guān)系會(huì )導致腔害于詞、詞害于腔。
因此,建模歌詞和旋律的關(guān)系是一個(gè)重點(diǎn)。要建模好關(guān)系,很重要的一個(gè)因素是要有數據,但往往歌詞和旋律的配對數據比較缺乏。除此之外,歌詞和旋律的連接也比較弱,一句歌詞可以配不同的旋律,一句旋律也可以配不同的歌詞。類(lèi)比其它序列到序列學(xué)習的任務(wù),比如語(yǔ)音識別、語(yǔ)音合成、機器翻譯等,我們可以發(fā)現源序列和目標序列都有很強的對應關(guān)系。在語(yǔ)音識別中,一個(gè)語(yǔ)音片段會(huì )嚴格對應一個(gè)字。所以歌詞和旋律這種弱的連接關(guān)系更加需要數據才能學(xué)得好,或者我們可以探索不用純依賴(lài)數據的方發(fā)去學(xué)習這種關(guān)系。
我們可以從兩方面去考慮上述問(wèn)題,一方面是純粹基于深度學(xué)習的方法,從數據中去學(xué)習。另一方面是利用先驗知識,因為人類(lèi)在創(chuàng )作歌曲時(shí)也是需要學(xué)習很多音樂(lè )知識的,比如音調、節奏、結構、曲式等,通過(guò)把音樂(lè )知識和深度學(xué)習相結合,可以更好地建模歌詞和旋律的關(guān)系。
首先介紹 SongMASS,它是純粹靠數據驅動(dòng),用深度學(xué)習來(lái)建模歌詞和旋律關(guān)系的方法。因為歌詞和旋律是弱耦合關(guān)系,缺乏數據,所以我們利用了預訓練,通過(guò)無(wú)監督、自監督、半監督的方法從無(wú)標簽數據中學(xué)習以彌補數據不足。歌詞和旋律雖然在內容上是弱耦合,但它們之間需要嚴格對齊,一個(gè)字或者音節需要對應到具體的音符。為此,我們提出了通過(guò)序列到序列學(xué)習的 encoder-attention-decoder 里的 attention 來(lái)抽取對齊關(guān)系。
預訓練采用了我們之前提出的 Masked Sequence to Sequence Pre-training (MASS) 方法,將歌詞和旋律分別看成是自然語(yǔ)言的一個(gè)段落,每句歌詞和旋律對應一個(gè)句子。再從源句子掩蓋一個(gè)片段,然后在****預測這個(gè)片段,通過(guò)這樣的方法我們就可以學(xué)習數據的知識了。
同時(shí)我們給 encoder-decoder attention 施加了一些約束,讓它能學(xué)習到歌詞和旋律的對齊關(guān)系。我們分別施加了句子級別和詞級別的約束,讓它呈現一個(gè)單調遞增的對角線(xiàn)形式。在預測過(guò)程中,可以從 attention 里抽取得到這個(gè)對齊關(guān)系。
我們從客觀(guān)和主觀(guān)評價(jià)的方式分別評估了 SongMASS 和基線(xiàn)方法的效果,在兩個(gè)評價(jià)方式上,SongMASS 都取得了比基線(xiàn)方法好很多的效果,具體實(shí)驗結果可參考 SongMASS 論文(論文鏈接:https://arxiv.org/pdf/2012.05168.pdf),更多的生成樣例可參見(jiàn) demo 網(wǎng)頁(yè):https://speechresearch.github.io/songmass/ 。
接下來(lái)介紹基于音樂(lè )知識輔助的深度學(xué)習方法實(shí)現的歌詞到旋律的生成。有哪些音樂(lè )知識能夠幫助歌詞到旋律的生成呢?這里大概包括以下幾個(gè)維度:音調、節奏、結構等。
我們先來(lái)看一下這些知識應用得不好會(huì )產(chǎn)生什么樣的問(wèn)題。首先是音調的知識,我們的原則是保證歌詞和旋律的音調要一致,不能相違背,比如《故鄉的云》中“歸來(lái)吧”聽(tīng)起來(lái)像是“鬼來(lái)吧”,而《你知道我在等你嗎》中“你知道我在等你嗎?”聽(tīng)起來(lái)像是“你知道我在等你媽?zhuān) ?。導致這個(gè)問(wèn)題產(chǎn)生的原因就是因為歌詞和旋律的聲調不一致。
第二個(gè)是節奏知識,我們說(shuō)重要的歌詞要重拍、要高音、要持續。一個(gè)好的例子就是《明明白白我的心》,里面的“愿意”和“靠近”,對應的旋律就做到了強調。第三方面是結構知識,這里我們需要考慮歌詞的語(yǔ)句和旋律的語(yǔ)句要對應,起承轉合要對應,還要考慮旋律本身的重復、模進(jìn)以及曲式結構。我們開(kāi)展了相應的工作來(lái)利用這些音樂(lè )知識幫助旋律生成得更好。
我們的 StructMelody 工作利用音樂(lè )的結構信息實(shí)現了歌詞到旋律的生成。我們構建了一個(gè)兩階段的旋律生成方法,利用結構信息作為歌詞和旋律的橋梁。首先從歌詞中提取結構信息,然后從結構信息生成旋律。第二階段的結構信息生成旋律則可以利用自監督的方法,也就是從旋律中抽取結構,然后再訓練結構到旋律的序列到序列模型。我們只需要讓第一階段生成的結構和第二階段的結構盡量一致就可以。
舉個(gè)例子,我們對古詩(shī)詞《春曉》進(jìn)行了譜曲,從歌詞抽取的結構信息包括節奏和小節劃分等信息,然后再配上****生成旋律。古詩(shī)詞一般具有固定的格律,所以可以人工設計規則,而對于不規則的歌詞,比如散文詩(shī),就需要通過(guò)學(xué)習的方法預測結構信息了。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。