當前位置:
首頁 > 科技 > 用AI作曲?MusiicVAE化身音樂家混合樂譜的調色板

用AI作曲?MusiicVAE化身音樂家混合樂譜的調色板

原文來源:magenta

作者:Adam Roberts、Jesse Engel、Colin Raffel、Lan Simon、Curtis Hawthorne

「雷克世界」編譯:嗯~是阿童木呀、KABUDA

一般來說,當畫家創作一件藝術品時,在下筆之前,她首先會在調色板上對顏色選項進行混合併探索。這一過程本身就是一種創造性的行為,並且對最終的作品有著深遠的影響。

音樂家和作曲家大多缺乏這一用於探索和混合音樂創意的類似設備,但我們希望能夠改變這種情況。下面我們將介紹一種機器學習模型—MusiicVAE,可以幫助我們創建一種能夠混合和探索樂譜的調色板。

作為一個例子,我們可以聽聽兩種不同的旋律—A和B的逐漸融合。而在接下來的文中將解釋這是如何形成的。

在Magenta團隊中,我們經常面臨願望衝突難以抉擇的局面:作為研究人員,我們希望儘可能地推動機器學習往更遠界限發展,但作為工具製造者,我們希望我們的模型能夠被藝術家和音樂家易於理解和控制。

最近,所有這些願望迫使我們將努力的重點放在了所謂的潛在空間模型上(latent space models)。這類模型的技術目標是使用較低維度的代碼表示高維數據集中的變化,從而更容易對數據的直觀特徵進行探索和操縱。作為一種創造性工具,其目標是提供一個直觀的調色板,創作者可以使用該調色板對藝術作品中的元素進行探索和操作。

我們所開發的潛在空間模型的示例包括,用於sketches的SketchRNN、用於音樂音色的NSynth、以及文中提到的MusicVAE:用於學習樂譜潛在空間的層次化循環變分自動編碼器。

為了儘可能簡單地使用MusicVAE構建可用的工具,我們還發布了一個JavaScript庫,以及一個可以用於在瀏覽器中進行推理的預訓練模型。

繼續閱讀以了解有關此技術的更多信息,或查看這些附加資源:

?在我們的arXiv論文(https://goo.gl/magenta/musicvae-paper)中閱讀有關模型架構的技術細節。

?在你的瀏覽器中使用旋律合成器、節拍器、和潛在的循環,播放MusicVAE的2節拍模型。

?使用本教程(https://medium.com/@torinblankensmith/8ad5b42b4d0b)學習如何在自己的項目中使用JavaScript實現。

?在Colab Notebook中對所有模型進行採樣和插值。

?在我們的GitHub存儲庫中查看Tensorflow和JavaScript實現。

?在此YouTube播放列表中聆聽更多音頻樣本。

潛在空間

音樂序列從根本上來說是高維度的。例如,考慮所有可能的單音鋼琴旋律的空間。在任何給定的時間內,88個鍵中的一個可以被按下或釋放,或者玩家可以休息。我們可以將其表示為90種類型的事件(88個按鍵,1次發布,1次休息)。如果我們忽略節奏並將時間量化到第16個音符,則4/4時間音樂的兩個測量(節拍)將具有9032個可能的序列。如果我們把它擴展到16個節拍,它將會是90256個可能的序列,它要比宇宙中的原子數量多很多倍!

可以說,想要通過列舉所有可能的變化來探索旋律是不可行的,並且會導致很多非音樂序列的音頻出現,本質上聽起來是隨機化的。例如,在這裡我們展示從9032個可能的2節拍序列中隨機選取的樣本的「自動鋼琴打孔紙卷(pianorolls)」。垂直軸代表鋼琴上的音符,橫軸代表第16個音符步的時間。還涵蓋了其中一個樣本的合成音頻。

潛在空間模型能夠學習訓練數據集的基本特徵,因此可以排除這些非常規的可能性。將這些2節拍旋律的潛在空間中的隨機抽樣點的與以前的那些進行比較:

排除不切實際的樣本外,潛在空間能夠表示低維空間中真實數據的變化。這意味著它們也可以重建具有高精確度的真實樣本。此外,當壓縮數據集的空間時,潛在空間模型傾向於基於基本質量對其進行組織,將相似的樣本聚集在一起,並根據這些質量所定義的向量列出變化。

潛在空間的理想特性可以總結如下:

1.表達性(Expression):任何真實的樣本都可以映射到潛在空間中的某個點並從中進行重構。

2.真實感(Realism):這個空間中的任何一點都代表了一些實際樣本,那些不在訓練集中的樣本也涵蓋在內。

3.流暢性(Smoothness):潛在空間附近點的樣本具有相似的性質。

這些屬性類似於藝術家的調色板,她可以在該調色板上對顏色選項進行探索和混合,從而進行創作,而且更像調色板的一點是,這些屬性可以增強創意。例如,由於Expression和Smoothness,一個潛在的空間,比如由SketchRNN學習的筆畫序列,使得你能夠通過在潛在空間中的點之間的插值以進行重建和融合:

Realism使得你能夠通過對潛在空間中隨機選取的點進行解碼,從而隨機抽取一些與你的數據集中樣本相類似的樣本。我們在上面演示了這種旋律,並在這裡用SketchRNN示範一下:

我們還可以使用潛在空間的結構來執行語義上有意義的轉換,例如「潛在約束」或「屬性向量算術」。後一種技術利用了這一事實,即潛在空間可以「解開」數據集中的重要特徵。通過對與共享給定質量的數據點集合相對應的潛在向量進行平均(例如,貓臉的草圖),我們獲得該屬性的屬性向量(「貓臉向量」)。通過從潛在代碼中加入和減去各種屬性向量並使用我們的模型進行解碼,我們可以獲得添加或刪除相關屬性的輸出。再次,我們用SketchRNN來說明這一點:

如何學習一個潛在空間

有許多不同的模型能夠學習潛在的表示,每種模式都與我們所期望的三種屬性有各種各樣的折中。

這樣的模型的一種被稱為自動編碼器(AE)。自動編碼器通過學習將每個樣本壓縮(編碼)為數字向量(潛在代碼或z),然後從該數字向量重新生成(解碼)為相同樣本,從而構建數據集的潛在空間。AE的一個關鍵組成部分是通過使向量具有比數據本身更小的維度而引入的瓶頸,這迫使模型區學習一個壓縮方案。在這個過程中,自動編碼器以理想的形式提取整個數據集中通用的性質。NSynth是一個自動編碼器的例子,它在音符的音頻中學習了音色的潛在空間:

這種類型的自動編碼器的一個局限性在於,它的潛在空間中通常存在「漏洞」。這意味著如果你對一個隨機向量進行解碼,它可能不會產生任何實際的結果。例如,NSynth能夠進行重構和插值,但由於這些漏洞,它缺乏真實性和隨機採樣能力。

另一種加強瓶頸限制的方式是使用所謂的變分損失(variational loss)。它不是不是限制向量的維度,而是鼓勵編碼器產生具有預定義結構的潛在代碼,例如來自多變數正態分布的樣本。然後,通過構造具有這種結構的新代碼,我們可以確保解碼器產生一些具有實際意義的東西。

SketchRNN是一個變分自動編碼器(VAE)的例子,它學習了一個用筆畫序列表示的草圖的潛在空間。這些筆畫由雙向循環神經網路(RNN)編碼並由單獨的RNN自動解碼。正如我們上面看到的,這個潛在空間具有我們所需的所有屬性,部分歸功於變分損失。

循環潛在空間

通過Music VAE,我們開始使用與Sketch RNN非常相似的體系結構以學習包含所有屬性在內的旋律片段(循環)的潛在空間。我們在這裡用一些例子來展示我們的結果。

首先,我們將展示我們在兩個序列間的變形能力,正如我們所做的那樣,中和它們的屬性。 儘管我們展示了一個混合兩首旋律的樣本,但我們前期做了一些更有難度的事情,進而將bassline轉變為旋律。

Bassline音頻連接:The red segment is the first step of the interpolation, and the purple is the final one. Each segment is 4 seconds (2 bars).

Melody音頻連接:https://magenta.tensorflow.org/assets/music_vae/mel_2bar-mel.mp3

我們首先嘗試在不使用MusicVAE的情況下,通過對兩者之間的音符進行採樣,類似於音頻中的交叉衰減(cross-fading),來流暢地將bassline轉化為旋律。你可以在下面聽到這個樸素插值的結果。第一部分(黑色)是bassline,後一部分(黑色)是旋律。紅色部分是插值的第一步,紫色部分是插值的最後一步,每段為4秒(2節拍)。

儘管開始(紅色)和結束(紫色)部分完全匹配原來的序列,但中間那部分是無效的旋律和bassline。附近確實存在類似的音符,但較高階的音質丟失了。輸出空間有表達性,但缺乏真實感和流暢性。另一方面,下面是通過MusicVAE潛在空間的插值進行的變形。

需要注意的是,中間序列現在是有效的,它們之間的轉換是流暢的。中間序列也不像像之前那樣局限於原文件中的音符,而在端點的上下文中選擇音符使得整體更具音樂感。在這一樣本中,我們完全滿足了表達性、真實感和流暢性的特性。

我們還在鼓循環中訓練了這種架構,取得了類似的結果。

長期結構

其中一種位置語言模型(如MelodyRNN和PerformanceRNN)的不足之處在於它們產生的輸出通常缺乏連貫的長期結構。正如我們過去用SketchRNN所展示的那樣,潛在空間模型可以編碼長期結構以生成完整的草圖。

然而,要想在長音樂序列中獲得類似的結果,通常要有比草圖更多的步驟,我們發現不能依靠相同的體系結構。相反,我們開發了一種全新的分層解碼器,能夠從單個潛在代碼生成長期結構。

我們不是使用我們的潛在代碼來直接初始化音符RNN(note RNN)解碼器,而是先將代碼傳遞給一個「導體」RNN,該RNN為每個輸出節拍輸出一個新的嵌入。然後,音符RNN基於嵌入而不是潛在代碼本身,獨立生成16個節拍中的每一個,然後我們從音符解碼器中進行自回歸採樣。

我們發現這種條件獨立性是我們體系結構的一個重要特徵。由於該模型不能簡單地回歸到音符解碼器中的自回歸以優化訓練期間的損失,所以它更依賴潛在代碼以重建序列。

使用這種體系結構,我們可以像以前一樣進行重建、採樣和平滑插值,但現在需要更長的時間(16節拍)旋律。在本文中,我們將樣本旋律A(頂部)與B(底部)混合在一起。

此外,我們可以使用屬性向量演算法(上面提到的「貓臉向量」)來控制音樂的特定品質,同時保留音樂的許多原始特徵,包括整體結構。在本文中,我們展示了我們通過在潛碼中添加或減去一個「音符密度向量」來調整旋律中音符數量的能力。

需要注意的是,我們並不是通過簡單重複音符來增加它們的密度。相反,Music VAE增加了琵琶和其他與音樂相關的用戶體驗。

重新組建樂隊

我們可以用短期和長期結構來模擬單個樂器,我們調整了我們的分層架構以對不同樂器之間的相互作用進行建模。在這些模型中,我們將嵌入傳遞給多個解碼器、每個樂器或每個軌道,而並非是將嵌入從導管傳遞至單個音符解碼器。

通過在潛在空間中對簡短的多樂器配置進行表示,我們可以完成所有與單曲操作相同的操作。例如,對於8種完全不同的樂器,我們可以在兩個1度量配置之間進行差值。下面是由模型選擇的樂器,在潛在空間中隨機點對之間的兩個插值合成的音頻。每個點代表2秒(1節拍)。

我們還可以將跨節拍的層次結構,重新添加到模型3的標準樂器(旋律、低音、鼓聲)中的16個節拍。我們「trio」模型中的這個樣本播放列表(https://www.youtube.com/watch?v=xU1W3c9p2RU&feature=youtu.be&list=PLBUMAYA6kvGVds2N7HIMQnZc0SMFk99Yl)證明,它已經學會了如何在長時間幀內模擬三種樂器之間的交互作用。

音樂家的工具

可以說,我們是剛剛觸及對於音樂家、作曲家及音樂製作人來說,由MusicVAE所學習的音樂調色板的可能應用的表面,並且已經開始與開發人員合作,讓儘可能多的人訪問這些調色板。

第一個樣本是由谷歌創意實驗室的技術人員製作的旋律混音器,可以讓人輕而易舉地在短旋律循環之間輕鬆生成插值。

第二個樣本是Beat Blender,也是由谷歌創意實驗室開發的。你可以使用它來生成鼓點的二維調色板,並通過潛在空間繪製路徑,以創建不斷變化的節拍。4個角可以手動編輯,替換為預設或從潛在空間採樣以重新生成調色板。

第三個樣本是谷歌Pie Shop的潛在循環(Latent Loops)。Latent Loops讓你可以在調整到不同音階的矩陣上勾勒旋律,探索生成旋律循環的調色板,並使用它們對更長的樂曲進行排序。

有了這個,音樂家就可以用這個界面創造出完整的旋律線,然後很容易地將它們轉移到他們的音頻工作站(DAW)上,進行創作。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷克世界 的精彩文章:

多國相繼出台政策法規:為自動駕駛的創新發展保駕護航
谷歌大腦提出通過對長序列進行摘要提取,AI可自動生成維基百科

TAG:雷克世界 |