微软亚洲研究院谭旭:AI音乐,技术与艺术的碰撞
編者按:日前,在2021全球人工智能技術大會(GAITC)的“當 AI 與藝術相遇”專題論壇上,微軟亞洲研究院主管研究員譚旭發表了題為《基于深度學習的流行音樂創作》的演講。該分享從分析流行音樂的工業化制作流程切入,介紹了深度學習是如何輔助流行音樂的創作,微軟亞洲研究院在 AI 音樂創作領域的一系列研究成果,以及當前AI音樂生成所面臨的研究挑戰等。本文為此次演講內容的完整整理,希望可以給大家在AI與藝術相互結合的研究方向上帶來更多啟發。
大家好!我是微軟亞洲研究院主管研究員譚旭,這次報告的題目是“基于深度學習的流行音樂創作”,我們將詳細探討如何將深度學習應用到流行音樂的創作過程中。我們先來看一下流行音樂的創作流程是什么樣的。
什么是流行音樂?按照字面的理解就是流行的音樂,實際上流行音樂我們通常指的是商品音樂,也就是通俗、大眾、喜聞樂見,又能商品化制作的音樂。因此,這類音樂具有固定的制作流程,包括詞曲創作、伴奏編曲、錄制樂器聲音和人聲、進行混音,最后進入到唱片制作等環節。而這是典型的工業制作流程,我們需要將其進行抽象以便在音樂創作中充分利用深度學習技術。
經過抽象我們得到了以下三個環節:?
1)曲譜生成,包括詞曲和伴奏編曲的生成;
2)演奏生成,曲譜到聲音需要經過演奏的過程,相同的曲譜經過不同的演奏技巧演奏可以有非常大的差別,所以我們要基于曲譜生成演奏技巧;
3)聲音合成,根據曲譜和演奏技巧合成音樂聲音,包括人聲和樂器聲音的合成。
有了這個抽象以后,深度學習技術尤其是內容生成技術就可以應用到流行音樂的創作中了。其實音樂不只是藝術,它還包括邏輯和規則,而這些都是深度學習所擅長的。如果有足夠的數據、模型容量和計算力,深度學習就能產生比較好的效果。所以我們可以把上述流程對應到典型的深度學習應用任務上。曲譜和演奏技巧的生成,可以對應自然語言處理里的語言生成,因為它們就是用 symbolic token 符號表示,而聲音生成則可以對應到語音合成,這樣我們就能借鑒這些成熟領域的深度學習技術來幫助音樂生成了。
過去一段時間,微軟亞洲研究院在 AI 音樂創作方向上開展了一系列研究工作,包括 Song Writing(詞曲寫作)、Arrangement(伴奏生成)、Singing Voice Synthesis(歌聲合成)等。在詞曲寫作方面又涵蓋了:1) SongMASS,歌詞到旋律以及旋律到歌詞的生成;2) StructMelody,利用音樂結構信息生成旋律;3) DeepRapper,Rap歌詞押韻和節奏的生成;4) MusicBERT,通過大規模音樂數據學習音樂表征以更好的理解音樂,對音樂的風格、情感、曲式結構的理解。在伴奏編曲方面有 PopMAG 伴奏生成。在歌聲合成方面有 HiFiSinger 高保真的歌聲合成。接下來,我們將依次介紹這些工作。
詞曲寫作
在詞曲寫作方面,我們探討了歌詞生成旋律以及旋律生成歌詞兩個任務,并分析了這兩個任務的特點:
1. 要保證生成的歌詞和旋律本身具有歌詞性和旋律性。這個方面靠大量的數據做語言模型的建模可以做得還不錯;
2. 要保證歌詞和旋律的匹配度。按照傳統的術語講就是腔詞關系 (腔就是旋律、詞就是歌詞),好的腔詞關系能互相促進表達,而不好的腔詞關系會導致腔害于詞、詞害于腔。
因此,建模歌詞和旋律的關系是一個重點。要建模好關系,很重要的一個因素是要有數據,但往往歌詞和旋律的配對數據比較缺乏。除此之外,歌詞和旋律的連接也比較弱,一句歌詞可以配不同的旋律,一句旋律也可以配不同的歌詞。類比其它序列到序列學習的任務,比如語音識別、語音合成、機器翻譯等,我們可以發現源序列和目標序列都有很強的對應關系。在語音識別中,一個語音片段會嚴格對應一個字。所以歌詞和旋律這種弱的連接關系更加需要數據才能學得好,或者我們可以探索不用純依賴數據的方發去學習這種關系。
我們可以從兩方面去考慮上述問題,一方面是純粹基于深度學習的方法,從數據中去學習。另一方面是利用先驗知識,因為人類在創作歌曲時也是需要學習很多音樂知識的,比如音調、節奏、結構、曲式等,通過把音樂知識和深度學習相結合,可以更好地建模歌詞和旋律的關系。
首先介紹?SongMASS,它是純粹靠數據驅動,用深度學習來建模歌詞和旋律關系的方法。因為歌詞和旋律是弱耦合關系,缺乏數據,所以我們利用了預訓練,通過無監督、自監督、半監督的方法從無標簽數據中學習以彌補數據不足。歌詞和旋律雖然在內容上是弱耦合,但它們之間需要嚴格對齊,一個字或者音節需要對應到具體的音符。為此,我們提出了通過序列到序列學習的 encoder-attention-decoder 里的 attention 來抽取對齊關系。
預訓練采用了我們之前提出的?Masked Sequence to Sequence Pre-training (MASS) 方法,將歌詞和旋律分別看成是自然語言的一個段落,每句歌詞和旋律對應一個句子。再從源句子掩蓋一個片段,然后在解碼器預測這個片段,通過這樣的方法我們就可以學習數據的知識了。
同時我們給 encoder-decoder attention 施加了一些約束,讓它能學習到歌詞和旋律的對齊關系。我們分別施加了句子級別和詞級別的約束,讓它呈現一個單調遞增的對角線形式。在預測過程中,可以從 attention 里抽取得到這個對齊關系。
我們從客觀和主觀評價的方式分別評估了 SongMASS 和基線方法的效果,在兩個評價方式上,SongMASS 都取得了比基線方法好很多的效果,具體實驗結果可參考 SongMASS 論文(論文鏈接:https://arxiv.org/pdf/2012.05168.pdf),更多的生成樣例可參見 demo 網頁:https://speechresearch.github.io/songmass/ 。
接下來介紹基于音樂知識輔助的深度學習方法實現的歌詞到旋律的生成。有哪些音樂知識能夠幫助歌詞到旋律的生成呢?這里大概包括以下幾個維度:音調、節奏、結構等。
我們先來看一下這些知識應用得不好會產生什么樣的問題。首先是音調的知識,我們的原則是保證歌詞和旋律的音調要一致,不能相違背,比如《故鄉的云》中“歸來吧”聽起來像是“鬼來吧”,而《你知道我在等你嗎》中“你知道我在等你嗎?”聽起來像是“你知道我在等你媽!”。導致這個問題產生的原因就是因為歌詞和旋律的聲調不一致。
第二個是節奏知識,我們說重要的歌詞要重拍、要高音、要持續。一個好的例子就是《明明白白我的心》,里面的“愿意”和“靠近”,對應的旋律就做到了強調。第三方面是結構知識,這里我們需要考慮歌詞的語句和旋律的語句要對應,起承轉合要對應,還要考慮旋律本身的重復、模進以及曲式結構。我們開展了相應的工作來利用這些音樂知識幫助旋律生成得更好。
我們的?StructMelody 工作利用音樂的結構信息實現了歌詞到旋律的生成。我們構建了一個兩階段的旋律生成方法,利用結構信息作為歌詞和旋律的橋梁。首先從歌詞中提取結構信息,然后從結構信息生成旋律。第二階段的結構信息生成旋律則可以利用自監督的方法,也就是從旋律中抽取結構,然后再訓練結構到旋律的序列到序列模型。我們只需要讓第一階段生成的結構和第二階段的結構盡量一致就可以。
舉個例子,我們對古詩詞《春曉》進行了譜曲,從歌詞抽取的結構信息包括節奏和小節劃分等信息,然后再配上和弦生成旋律。古詩詞一般具有固定的格律,所以可以人工設計規則,而對于不規則的歌詞,比如散文詩,就需要通過學習的方法預測結構信息了。
除了我們前面考慮的結構信息以外,還有一個非常重要的信息就是曲式結構,這個對于生成一首完整的旋律非常重要。我們常見的曲式結構有單一、單二、單三、回旋、變奏、奏鳴曲式以及流行音樂常見的主副歌結構,這些信息非常有助于音樂的生成。同時也需要考慮一首歌的情緒推動,起承轉合,比如下圖上這種經典的穩定開始、變化擴張、緊張運動、穩定結束的形式,還需要對旋律的情感、情緒做出理解。而這些知識都需要有對音樂的理解。
因此,我們開展了?MusicBERT 工作,利用大規模音樂數據進行預訓練,從而更好地理解音樂,包括情感分類、流派分類、旋律伴奏抽取、結構分析等。
為了能夠開展大規模的預訓練,我們構建了一個大規模的音樂數據集 MMD 包含150萬首音樂數據,比之前的音樂數據集大10倍。然后針對音樂理解任務我們提出了 OctupleMIDI 這種編碼方式,其中含有8種基本的 token,包括拍號、速度、小節、位置、樂器、音高、時長、速度等。相比之前的 REMI、CP 等,編碼方式?OctupleMIDI 能極大地縮短音樂序列長度,同時還可以容納足夠的音樂信息。更短的序列長度可以使模型一次性處理更長的音樂片段,從而提升模型對音樂的理解能力。
我們使用了 BERT 的 Masked Language Modeling 訓練方式,采用了 bar-level 的掩碼策略,即一次性掩蓋一個小節內相同類型的 token,以防止信息泄露。
MusicBERT 模型結構采用了基本的 Transformer,同時在模型的輸入和輸出上針對 OctupleMIDI 的編碼做了一些特殊的設計——輸入時將8個 token 的 embedding 拼接后通過一個線性層映射到模型的隱層維度,在輸出時接8個 softmax 矩陣分別預測相應的 token。
MusicBERT 在三個下游任務:Melody Completion、Accompaniment Completion 和 Genre Classification 上取得了 SOTA 的效果,遠超以前的音樂理解模型。
伴奏編曲
在伴奏編曲的生成方面,我們進行了?PopMAG?這個工作。PopMAG 處理的任務形式是給定主旋律和和弦進而生成不同樂器的伴奏,包括鼓、貝斯、吉他、鍵盤、弦樂等。這其中的一個難點就是要保證多軌音樂的和諧。因此,我們提出了MuMIDI 的編碼方式,將多軌音樂編碼到一個序列里,使得多軌音樂生成變成了單個序列的生成,這樣自然地建模了不同軌音符之間的依賴關系。
我們在三個數據集上評估了 PopMAG 的伴奏生成效果,根據人的主觀評測,生成的伴奏已經比較接近真實的伴奏了。
歌曲合成
針對歌聲合成,我們做了 HiFiSinger 的工作。事實上,和說話的聲音相比,歌聲需要更高的保真度來傳達表現力和情感。那么怎么實現高保真度呢?一個方面是提高聲音質量,另一方面是提高聲音的采樣率。
之前的工作大都關注在提高聲音質量,而我們考慮的是提高采樣率。我們知道人耳對頻率的感知范圍為20到20kHz,如果采用16kHz或者24kHz的采樣率的話,根據奈奎斯特-香農采樣定理,它只能覆蓋8kHz或者12kHz的頻帶范圍,并不能很好地覆蓋人耳的聽覺范圍。因此我們將采樣率從24kHz升到48kHz來進行建模。
整個歌聲合成的流程采用了聲學模型和聲碼器級聯的方式,如下圖(右)所示。但是升級到48kHz的采樣率有兩個挑戰:1)48kHz在頻譜維度有更寬的頻譜,這給聲學模型的建模帶來了挑戰;2)48kHz在時間維度上有更長的語音采樣點,這給聲碼器的建模帶來了挑戰。
所以,我們分別提出了針對聲學模型的 Sub-frequency GAN 和針對聲碼器的 Multi-length GAN來解決上述問題。
實驗結果顯示 HiFiSinger 相比之前的基線方法取得了明顯的音質提升,表明了我們的方法對高采樣率建模的有效性。同時采用48kHz采樣率的 HiFiSinger 模型甚至超過了24kHz的錄音音質,也證明了高采樣率的優勢。
以上就是我們在 AI 音樂生成方面開展的一系列研究工作。目前 AI 音樂生成仍存在一些研究挑戰,包括以下幾個方面:1)對音樂結構的理解有助于音樂的生成以及編排;2)音樂的情感以及風格的建模;3)交互式的音樂創作;4)對于生成音樂原創性的保證等。
?
微軟亞洲研究院機器學習組一直致力于 AI 音樂的研究,研究課題包括詞曲寫作、伴奏編曲、歌聲合成、音樂理解等。我們即將推出 AI 音樂開源項目 Muzic,涵蓋了我們在 AI 音樂的一系列研究工作,敬請期待。
AI 音樂研究項目主頁:
https://www.microsoft.com/en-us/research/project/ai-music/
Muzic 開源項目頁面(頁面將于近期公開):
https://github.com/microsoft/muzic
論文列表:
[1] SongMASS: Automatic Song Writing with Pre-training and Alignment Constraint, AAAI 2021, https://arxiv.org/pdf/2012.05168.pdf?
[2] DeepRapper: Neural Rap Generation with Rhyme and Rhythm Modeling, ACL 2021, https://arxiv.org/pdf/2107.01875.pdf?
[3] MusicBERT: Symbolic Music Understanding with Large-Scale Pre-Training, ACL 2021, https://arxiv.org/pdf/2106.05630.pdf
[4] PopMAG: Pop Music Accompaniment Generation, ACM MM 2020, https://arxiv.org/pdf/2008.07703.pdf?
[5] HiFiSinger: Towards High-Fidelity Neural Singing Voice Synthesis, arXiv 2021, https://arxiv.org/pdf/2009.01776.pdf?
相關鏈接:
https://www.microsoft.com/en-us/research/project/ai-music/?
https://www.bilibili.com/video/BV1Kg411G78m?
https://github.com/microsoft/muzic?
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的微软亚洲研究院谭旭:AI音乐,技术与艺术的碰撞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 622700开头是什么银行卡 建设银行卡
- 下一篇: 等额本息还款法计算公式