演算法音樂往事:二次元女神“初音未來”誕生記

大資料文摘發表於2018-07-04

音樂的誕生甚至早於語言,人類對於音樂的探索卻從未停止。從最初的“音樂骰子”到如今火遍二次元的宅男女神“初音未來”,演算法與音樂之間的故事,才剛剛開始。

演算法與音樂的結合在最近幾年中取得了很大進展,突然火了起來。谷歌語音助手的“人聲”預約讓人們大呼,谷歌AI成精了;IBM Waston創作的歌曲甚至獲得了格萊美音樂獎……

人們希望藉助自然的力量,更自動地創作音樂,這種想法實際上早已出現。

從某種程度上說,第一首自動生成音樂來自於大自然:中國的風鈴、古希臘的風絃琴、日本的水琴窟等。

但是,演算法音樂真正出現,是在17世紀的時候。有人發明了這個名叫“音樂骰子(Musikalisches Würfelspiel)”的遊戲,它能通過擲骰子選擇音樂片段,再合成出鋼琴片曲。

☟“音樂骰子”遊戲示例


早期的演算法音樂發展史

馬爾可夫鏈模型成形於19世紀早期,它被用於模擬概率系統,也可以用來生成全新的音樂作品。

比起骰子游戲的原理,馬爾可夫鏈作曲在兩個方面都更勝一籌:第一,馬爾可夫鏈只需現成的音樂片段即可作曲,而不用專門譜寫可互換音樂片段;第二,馬爾可夫鏈根據音樂內容來編碼音樂片段的概率分佈,而非假設所有的片段具有相同的概率。

演算法音樂往事:二次元女神“初音未來”誕生記

 “重組中午”(Remixing Noon) ,作者為Rev Dan Catt:一條基於散文訓練出的馬爾可夫鏈的路徑

Iannis Xenakis在他1958年的專輯《模擬》(Analogique)中就使用了馬爾可夫鏈來作曲。在他的文章《合成音樂:樂曲中的思想與數學》裡詳細描述了每個音符的概率轉移矩陣。

演算法音樂往事:二次元女神“初音未來”誕生記

☟第三章“馬爾可夫的隨機音樂:應用”(節選)

《模擬A和B》Iannis Xenakis

1981年,David Cope開始利用演算法作曲來解決其創作瓶頸的問題。他將馬爾可夫鏈和其它技術(音樂語法和音樂組合學)結合成一個半自動作曲系統,他稱之為“音樂智慧實驗”或Emmy。Davi寫了論文和專利來詳細描述Emmy,甚至把原始碼傳到了GitHub上。Emmy在學習、模仿其他作曲家方面很出名。

☟Emmy模仿肖邦瑪祖卡舞曲的音訊

https://soundcloud.com/machinelearningmusic/mazurka-after-chopin-by-david-cope

神經網路應用於音樂創作

基於一組樂譜上訓練出的馬爾可夫鏈只能產生原始資料中存在的子序列,而遞迴神經網路(RNNs)卻可以推斷出現存子序列中沒有的東西。1989年,Peter M.Todd, Michael C, Mozer和其他夥伴第一次嘗試使用遞迴神經網路生成音樂。但是由於RNN只能生成在短期內連貫的音樂,因此生成的質量一般。

☟由CONCERT系統生成的三段巴赫風格的音樂

https://soundcloud.com/machinelearningmusic/after-bach-by-michael-c-mozer

2002年,Doug Eck用“長短期記憶(LSTMs)”神經元替代標準的RNN神經元,從而改進了這種方法。Doug利用該架構在一段短錄音的基礎上即興創作了一段布魯斯。他寫道:“非常令人讚歎,只要有人願意聽,LSTM就能以不錯節奏和恰當的構曲來演奏布魯斯音樂。”

Doug現在在谷歌大腦帶領Magenta團隊,自從2016年初,他們就一直致力於開發、分享與機器學習和創造力有關的程式碼。Magenta已經利用Doug的基於LSTM的方法進行鼓型生成、旋律生成和復調音樂生成。他們已經構建了能夠與人類演奏者一起即興創作二重奏的系統,以及能夠生成富有動感、節奏合適的復調音樂的工具。

☟開啟連結欣賞音樂

https://soundcloud.com/machinelearningmusic/performance-rnn-by-magenta

訓練這些系統時常常遇到的難題是如何確定音樂的表示方式。編碼一個RNN模型可能從文字材料的一個隱喻開始:RNN會處理一系列隨著時間或空間(紙張)排列的狀態(字母)序列。

但是不同於文字,音樂裡的一個瞬間含義更加豐富,它可以是一個和絃,或者是各種特性的組合以此獲得更好的表達。除此以外,音樂裡還可能有長時間的無聲或長度不一的小節。這些不同可以通過下面的方式來解決:人為構建更為合適的表示、資料增強以及設計合理的架構以保證能學習到所有的規律。

資料驅動的演算法作曲所面臨的另一個挑戰是,用什麼資料來訓練?哪位音樂家的音樂有代表性?當任何自動化的創新系統需要在大量文化作品上訓練時,系統往往會受那些資料量最多的文化資料的支配。

以音樂為例,巴赫、貝多芬等早期歐洲音樂大師的音樂會佔音樂訓練資料的大半(除了一些英國和愛爾蘭民謠)。另一方面,資料是由研究人員來選取的,而研究人員們也是相對同質化的群體。

雖然LSTMs能夠比標準RNN或馬爾科夫鏈更好地保持長期一致性,但在生成短語和生成整個樂譜之間還是有差距,這一點仍需依靠手工調整。像Jukedeck, Aiva, Amper等初創公司正試圖填補這種手工調整的、按需生成的公式化音樂的市場空白。

有些公司甚至已經發行了整張唱片作為營銷。大公司也加入戰局。François Pachet之前在索尼電腦科學實驗室(Sony Computer Science Laoratories)工作,目前任職於Spotify,他研究演算法生成音樂已經很長時間了,從他開發的“延續者Continuator”系統到最近的 “流動機器”Flow Machine。


“延續者(Continuator)”旨在“利用風格一致、自動學習的音樂材料擴充音樂家的技術能力”

☟開啟連結觀看欣賞音樂

https://youtu.be/LSHZ_b05W7o

由“流動機器”創作的《爸爸的車》(2016)是François Pachet在 Sony CSL組織的一個研究專案。“流動機器”計劃去“研究和開發出能夠自主或與人類藝術家合作產生音樂的人工智慧系統”。《爸爸的車》的編曲、歌詞和製作都由作曲家Benoît Carré完成。

儘管這些研究機構的技術都是獨有的,但我們仍然可以根據它們背後的研究人員猜測出它們的關係。比如Flow Machine很可能與Continuator用的相近的方法,即比起Doug Eck更像David Cope一些。

如果對基於RNN的輔助重奏或者連續性音樂生成感興趣,可以去看下Mason Breton的Deep Musical Dialogue或者谷歌Magenta的AI Duet。二者都是由使用者輸入一段音樂,然後模型就會為你生成和諧的和聲。

IBM的Watson團隊開發了一個系統叫做Watson Beat可以在有限的音樂型別中基於旋律生成完整的歌曲。

☟開啟連結欣賞相關音訊

https://soundcloud.com/ibmresearch/fallen-star-amped

上面的音樂是Watson的其他研究人員和英國歌手Alex Da Kid合作,基於從社交媒體中挖掘出的資料來為音樂尋找主題和靈感。這首曲子在格萊美還得了獎。

骰子游戲、馬爾可夫鏈和RNN並不是唯一用程式創作音樂的方法。有一些機器學習工作者們同樣嘗試了hierarchical temporal memory(分層時序記憶),和principal components analysis(主成分分析)。

但我在這裡更關注神經網路,因為它們是主流的研究方向。儘管這樣,在神經網路裡還有一些小分支被我忽略了,比如用restricted Boltzmann machines(RBM,受限玻爾茲曼機)在四小節爵士樂的小節及整首歌曲的創作,又或混合RNN-RBM模型以及混合autoencoder-LSTM models(自編碼器-長短期記憶模型),還有neuroevolutionary strategies (神經進化策略)。

史丹佛學者Andrej Karpathy 在2015年5月發表部落格The Unreasonable Effectiveness of Recurrent Neural Networks(RNN不講道理地有效) 之後,RNN的威力才被眾人所知道。Andrej在該文章中用了一個相對簡單的神經網路叫char-rnn可以創造出十分逼真的文字,內容從莎士比亞風格的文章到C++的程式碼。

就如同骰子游戲在理論主義復興和人們對數學的興趣中火了一把一樣,Andrej的文章正好在神經網路的風潮中應運而生,重新激起了人們對RNN的興趣。一些人就把Andrej的模型應用到了音樂符號生成上。

☟開啟連結觀看欣賞音樂

https://youtu.be/RaO4HpM07hE

由Bob Sturm創作“8個簡短音樂”,用了char-rnn和23000個愛爾蘭鄉村音樂的譜子生成。他還領導著其它研究組織進行類似的創作。

有些人受char-rnn的啟發,改變了其中的結構使得更適用於創作音樂。一些值得注意的成果有Daniel Johnson和Ji-Sung Kim。

Daniel Johnson:

http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/ 

Ji-Sung Kim:

http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/ 

Christian Walder以一種特殊的方式使用LSTM:用一個已經設計好的節奏作為起步,讓神經網路去補充中間的音符。這種方法彌補了在其他模型中缺失的全域性結構,但同時也限制了模型的可能性。

到目前為止,上述所有的例子都是基於音樂的符號來表示音樂的,一些愛好者們已經在想如何直接把原始的音訊訊號作為char-rnn的輸入。

☟開啟連結觀看欣賞音樂

https://youtu.be/eusCZThnQ-U

演算法音樂往事:二次元女神“初音未來”誕生記

Joseph L. Chu作品, 在30分鐘的日本流行搖滾樂隊上訓練

☟Priya Pramesi作品,訓練於Joanna Newsom的音樂。

https://youtu.be/q0ZdSAkGo48

很遺憾的是char-rnn在抽取音訊訊號的更高階的表示上是有天然的不足。最好的結果也只是輸入資料的噪音版罷了。在機器學習裡面,這種情況同“過擬合”有關,即模型在訓練集上的效果很好,而對沒有見過的測試集資料的效果很差。

在訓練過程中,模型起初在訓練集上和測試集上表現都很差,而後開始逐漸轉好。但是如果訓練時間過長,就會導致模型的泛化能力下降,從而發生過擬合。研究者們通常會在模型開始過擬合前停止訓練。

過擬合在這種創造性任務中其實不算是一個“問題”,因為對現有音樂的重新排列也是一種創作的方式,而很難和“歸納”區分開。比如David Cope就說過“所有的音樂本質上都是靈感上的抄襲”(當然這話有點諷刺因為他自己曾被指控發表偽科學和直接的抄襲)。

2016年9月DeepMind釋出了WaveNet。這個神經網路框架能夠通過連續的取樣抽象出出音訊的高階表示。

演算法音樂往事:二次元女神“初音未來”誕生記

WaveNet網路結構裡用到的空洞卷積示意圖

演算法音樂往事:二次元女神“初音未來”誕生記

WaveNet 樣本在8位數值上的概率分佈

WaveNet並沒有用RNN學習音訊在時間上的表示,而是使用CNN,即卷積神經網路。CNN學習的是過濾器的組合。雖然CNN通常被用來處理影像資料,但WaveNet通過CNN可以用空間卷積的方式來處理時序資料。

如果我們仔細瞭解一下Wavenet作者們的背景,會發現很多有意思的WaveNet的先驅們。

  • Sender Dieleman是端到端音樂音訊學習論文的第一作者,這篇文章是早期用神經網路一個樣本一個樣本地處理原始音訊的一個應用,這裡是為了做樂種分類。

  • Aaron van der Oord是Pixel RNN的第一作者,該文章介紹了一個可以一個畫素接一個畫素地生成影像

  • Alex Graves,除了有很長時間處理演講模型與RNN外,還在2015年做了一個如何用神經網路生成具有語義的演講文章的講座。

    講座連結:

    https://youtu.be/-yX1SYeDHbg?t=2545 

我最喜歡的是Sageev Oore用WaveNet生成了下面這首簡單的鋼琴曲。Sageev當時正處在為谷歌大腦工作的休假期間。

☟開啟連結觀看欣賞音樂

https://youtu.be/xTVwYFpK5Mo

演算法音樂往事:二次元女神“初音未來”誕生記

Sageev Oore在彈奏WaveNet生成的音樂

在2017年4月,Magenta專案在WaveNet的基礎上創造了NSynth,這是一個用來分析和生成單聲道的樂器聲音的模型。他們同位於紐約的谷歌創造實驗室Google Creative Lab,共同推出了一個以NSynth驅動的“音樂生產者”的實驗。。

演算法音樂往事:二次元女神“初音未來”誕生記

兩首歌之間的線性插值與NSynth插值的對比

2017年2月,一個來自加拿大蒙特利爾的由Yoshua Bengio帶領的團隊發表了SampleRNN及其程式碼。它通過用一種層級結構的遞迴神經網路,來一段樣本一段樣本地生成音訊。

這個研究受到了Ishaan Gulrajani的實驗的影響。Ishaan曾經在原始的音訊訓練了一個層級結構版的char-rnn模型。

演算法音樂往事:二次元女神“初音未來”誕生記

簡化版的SampleRNN結構:在一個層級結構的遞迴網路中,第二層和第三層在更慢的時間跨度,而和神經網路相結合的第一層則在最快的時間跨度中,每一層都使用相同的上取樣率(上取樣率為4)

☟基於同一個人的幾百小時的演講資料集訓練的SampleRNN。

https://soundcloud.com/samplernn/samplernn-blizzard-mu-law-1

☟根據所有的32首貝多芬的鋼琴奏鳴曲訓練的SampleRNN。

https://soundcloud.com/samplernn/samplernn-music-1

☟由Richard Assar在32小時長的橘夢樂團(德國電子音樂先驅團體)音樂素材上訓練得到的結果。

https://soundcloud.com/psylent-v/samplernn-tangerine-dream-1

SampleRNN 和WaveNet都需要非常長的時間來訓練(超過一星期),並且如果不用優化的演算法(比如fast-wavenet),他們會比實時生成音訊的速度慢好幾倍。為了減少訓練和生成音訊的時間,研究者們使用16千赫茲和8位數的音訊資料。

但是,對於像谷歌和百度那樣的公司,音訊生成主要應用在把文字變成語音,這就對生成的實時性提出了很高的要求。2017年3月,谷歌發表了Tacotron研究成果。該研究成果通過把一連串的字母或文字作為輸入,譜表示作為下一步的輸出,從而逐片段地產生音訊。

演算法音樂往事:二次元女神“初音未來”誕生記

Tacotron的結構,顯示了許多技術的結合,比如注意力模型(attention),雙向遞迴神經網路(bidirectional RNNs),卷積網路技術(convolution)等等。

Tacotron的演示樣本與WaveNet的相似,僅有一些細微的差異。逐幀生成音訊的一個缺點是,最後的合成依賴於Griffin-Lim相位重建法,但是這個方法並不能很好地應對多音字或者噪音的干擾。所以,這個結構被侷限在了演講音訊(有可能單聲道的樂器也適用,但是我還沒有聽說過任何的例子)。

百度在Tacotron的基礎上建立了Deep Voice2研究專案,它加入了一些音訊生成的後處理從而提高了聲音的質量。現在有許多其他的生成演講音訊的研究,但是很少是關於生成音樂的。

這種生成音訊的研究的下一步發展方向在哪裡呢?

另一個正在被開發的領域是基於語料庫的合成方式(離散的或連續的)與片段級的表示方法的結合。連續合成在音訊合成中是非常常見的(在音訊合成領域,也被稱為“單元選擇”) 。

這些技術在聲音設計方面也有一段很長的歷史,比如CataRT系統合成音色。這種基於語料庫的合成方式的一大缺點是它不可能生成“一段”在原來的語料庫中從來沒有出現過的音訊。也就是說,如果你在巴赫(德國作曲家)的所有作品作為語料庫的基礎上訓練一個模型,並且巴赫從來沒有寫過C小調七和絃,那麼這個模型永遠不可能生成一個C小調七和絃。

儘管這個模型學習怎樣生成和絃裡的每一個音符,甚至學習了怎樣表示對應的片段,但你還是沒法通過樣本音樂來合成C小調七和絃。想要解決這個問題,也許可以在逐幀的離散模型以及對音訊的分解研究的交叉領域內找到突破口。

說到研究方法,我反覆遇到以下兩個問題。第一,我們應該使用何種聲音表式呢?我們應該把音訊當作成獨立的樣本、還是擁有大多數單聲道音調內容的音訊譜幀、網格里的一個音高、或者是一個聲音合成器裡的特徵?在聲音表式中,我們需要用到多少音樂領域的專業知識?

第二,我們想要怎樣讓這些系統互相作用?我們想要系統們從一整個音樂歷史文件中學習到一個怎樣的大致結果,雷同的還是標新立異的?為了生成整個音樂作品集,或者和我們即興創作音樂?我會謹慎的對待那些聲稱這些問題只有一個答案的的人,如果真的只有一個答案,那麼我們就需要延展我們在聲音表達方面和互相作用的模式上的想象力。

我發現,如果用演算法生成的音樂作品集越唾手可得,那麼就越可能觸發記者們的問題:“這個會讓人類音樂家被淘汰嗎?”通常研究者們會說他們“沒有嘗試替代人類”,但是他們在嘗試“開發新的工具”,或者他們鼓勵人類音樂家“把演算法當作作品創作中的輔助工具”。把創造性的人工智慧是作為“擴充套件”人類創造過程的一個工具可以讓令人放心。

但是有沒有可能,人工智慧最終能從無到有地創造流行金曲,或者你最喜歡的歌?我覺得最大的問題不是人類藝術家或者音樂家會不會被人工智慧替代,而是什麼樣的作品能被我們接受成“藝術”或者“音樂”。

可能你最喜歡的創作型歌手不能被替代,因為你需要這些和絃與歌詞能夠如此美妙動聽的原因是有人類在其背後創作。但是當你在一個酒吧隨著音樂跳舞的時候,你不需要那首音樂也一定由人類創作,因為你注意到的僅僅是別人也都在隨著音樂搖擺。

演算法音樂往事:二次元女神“初音未來”誕生記

虛擬歌手“初音未來”(Hatsune Miku )

除了傳統模型之外,還有一個可能讓生成音樂美妙動聽。以電子音樂製作語音合成軟體Vocaloids為引擎的虛擬女性歌手——初音未來(Hatsune Miku),已經向世人展示了,其能夠召集上百萬的人們來進行大眾作曲並獲得大量聽眾的收聽。

音樂誕生甚至可能比語言還要早,但是至今我們依在探索音樂的所有可能性,以及創造音樂的所有方法。

相關文章