- +1
我花了八個(gè)月和一萬塊,用AI做了毫無靈魂的音樂
原創(chuàng) 陳東澤 果殼
用程序員的方式,作一首曲子
八個(gè)月前,我,一名 33 歲的程序員,報(bào)名了小區(qū)的鋼琴班。在此之前,我沒學(xué)過音樂。
第一節(jié)課,在那間被鋼琴旋律塞滿的教室里,我被樂譜上連綿有序的音符吸引,萌生出了一個(gè)想法:“我是否可以用程序員的方式創(chuàng)作出一首曲子?”
本質(zhì)上,音樂是一系列按時(shí)間有序排列的音符。那么,只要用程序找到藏匿在音符之間的排列規(guī)則,就能讓程序自動(dòng)作曲。
對(duì)于尋找規(guī)則,自然是人工智能(AI)最在行。AI 系統(tǒng)與傳統(tǒng)系統(tǒng)最大的區(qū)別就是:傳統(tǒng)系統(tǒng)的目標(biāo)是獲得答案;AI 系統(tǒng)則是利用已有答案獲得規(guī)則。
AI 在音樂領(lǐng)域的應(yīng)用已經(jīng)很常見,像聽歌識(shí)曲、曲風(fēng)分類、自動(dòng)扒譜等,而用 AI 實(shí)現(xiàn)“半自動(dòng)”作曲?也不是新想法了,網(wǎng)上也早已經(jīng)有現(xiàn)成的模型和 demo。比如 Google 上線的交互鋼琴 A.I. Duet,人們只需彈奏少量音符,AI 就能據(jù)此彈奏出風(fēng)格協(xié)調(diào)的曲子;而 OpenAI 的 Jukebox 能在人們給定旋律開頭和歌詞內(nèi)容后,生成歌曲。

A.I. Duet丨Google
這里不得不提史上第一位被認(rèn)證的 AI 作曲家——Aiva,Aiva 學(xué)習(xí)了由莫扎特、貝多芬等名家譜寫的 15000 首曲子,利用深度學(xué)習(xí)搭建出了模型,然后作出原創(chuàng)曲子。自 2016 年誕生,Aiva 迅速得到商用,廣泛用于網(wǎng)絡(luò)視頻的自動(dòng)配樂,還出了 5 張專輯。
但我不打算用這些現(xiàn)成系統(tǒng)去生成音樂,我想借助更基礎(chǔ)的論文和工具,從理解機(jī)器是如何“聽懂”音樂開始,到把音樂解構(gòu)成最小單位的數(shù)字、選定最合適的模型,再到訓(xùn)練 AI 生成像模像樣的音樂,都自己摸索。這樣才夠“程序員”。
但沒想到的是,這一摸索就花了八個(gè)月。但這次舍近求遠(yuǎn)的嘗試,也讓我明白:在巨大的參數(shù)量和人類的模型設(shè)計(jì)面前,藝術(shù)的美雖然不可被量化,但卻有跡可循。
為了讓機(jī)器聽懂,首先得解構(gòu)音樂
AI 是機(jī)器,它只能讀懂?dāng)?shù)字。因此第一步就要在音樂與數(shù)字之間建立橋梁。我想到了 MIDI(樂器數(shù)字化接口)。MIDI 所存儲(chǔ)的實(shí)際只是一組指令,告訴鍵盤、貝斯、架子鼓等在某個(gè)時(shí)間以怎樣的方式發(fā)聲。MIDI 存儲(chǔ)了設(shè)備,時(shí)間與音符之間各自的對(duì)應(yīng)關(guān)系。

圖源 Unsplash
說得再簡(jiǎn)單點(diǎn),MIDI 就像是《節(jié)奏大師》游戲飛過來的那些小方塊。
我最終使用的數(shù)據(jù)源叫 Pop17k,由臺(tái)灣人工智慧實(shí)驗(yàn)室開源,它包含了 1700 首 MIDI 鋼琴音樂。我也嘗試過自制爵士樂的數(shù)據(jù)源,即通過轉(zhuǎn)錄(transcript)技術(shù)將大量爵士樂純音頻轉(zhuǎn)換成 MIDI,但發(fā)現(xiàn)生成的 MIDI 文件會(huì)有個(gè)別錯(cuò)音,因此仍需要一次人工校正,工作量太大,所以放棄,選用開源數(shù)據(jù)源。
MIDI 雖然已經(jīng)將音樂轉(zhuǎn)換成二進(jìn)制的數(shù)字,但想讓 AI 精細(xì)化地學(xué)習(xí)音樂,仍要將 MIDI 做進(jìn)一步的解構(gòu),即將旋律拆解成音高、音長(zhǎng)、音強(qiáng)、和弦、小節(jié)等基本元素(音高是指聲音的頻率,音長(zhǎng)則是一個(gè)聲音持續(xù)的時(shí)間。顯然,沒有說一個(gè)時(shí)刻只能有一個(gè)音符,因此就有了和弦),并與數(shù)字建立映射的關(guān)系。

解構(gòu) MIDI丨作者制圖
我之前用 AI 做文字翻譯時(shí),涉及過單詞的解構(gòu),當(dāng)時(shí)用到的技術(shù)點(diǎn)叫做 Word Tokenize,即是把單詞解構(gòu)成最基本的詞根與字母,通過讓 AI 學(xué)習(xí),就能找到語句與詞根間的隱秘關(guān)系,甚至能生成訓(xùn)練集之外的新單詞。那么,是否存在 MIDI Tokenize 方案呢?
我嘗試搜尋“MIDI Tokenize”,老天眷顧,我找到了一套剛發(fā)布一周的開源 MIDI Tokenize 方案“MidiTok”,是索邦大學(xué)的一名叫 Natooz 的博士生做的。

有了這個(gè)項(xiàng)目的支持,解構(gòu) MIDI 便水到渠成了,這時(shí)拆解一首曲子,就如同把玩具拆成最基本的樂高積木,將這些樂高積木與數(shù)字一一映射,最終就得到了一串?dāng)?shù)字序列,這就是 AI 能聽懂的音符了。

MIDI Tokenize丨作者制圖
不期而遇的模型,讓 AI 理解音樂
拿到了音符對(duì)應(yīng)的數(shù)字,是個(gè)好彩頭。但接下來的才是真正的挑戰(zhàn)——要讓 AI 在連綿不絕的數(shù)字中尋找規(guī)律。模型架構(gòu)決定了 AI 的學(xué)習(xí)能力,即合適的模型能有效地抓住音符間的關(guān)系,從而預(yù)測(cè)出下一個(gè)音符的概率。

模型推理丨作者制圖
我的切入點(diǎn)是,按照之前做 AI 文字翻譯的方式來做音樂生成。兩者區(qū)別不大,前者是生成文字,后者是生成音符。這種文字生成類的模型,其關(guān)鍵技術(shù)點(diǎn)就是注意力(Attention)機(jī)制。
注意力機(jī)制源于對(duì)生物行為的模仿,即用算法模仿了生物觀測(cè)行為的內(nèi)部過程,依據(jù)外在刺激與內(nèi)在經(jīng)驗(yàn),增強(qiáng)局部的觀測(cè)精度。就好比人類在集中觀測(cè)某個(gè)具象物體時(shí),無關(guān)的畫面會(huì)自動(dòng)模糊。

經(jīng)過一段時(shí)間的實(shí)踐發(fā)現(xiàn),注意力機(jī)制確實(shí)能有效地抓到音符的規(guī)律,也生成了一些簡(jiǎn)單的旋律。但卻遇到了一個(gè)問題,即單純的注意力機(jī)制無法有效在較長(zhǎng)的音樂序列中抓到規(guī)律,結(jié)果只能輸出 20~30 秒的旋律,時(shí)長(zhǎng)增加就會(huì)“糊掉”。
一番查閱后,我發(fā)現(xiàn)解決方案就藏在一篇論文中,也就是 Google Megenta 團(tuán)隊(duì)發(fā)布的論文 Music Transformer。論文提到了將注意力機(jī)制應(yīng)用于音樂,并指出音樂序列不同于傳統(tǒng)的文字序列,音符的序列所對(duì)應(yīng)的是旋律,而旋律具有周期性與規(guī)律性。因此,注意力機(jī)制必須將音符之間的相對(duì)位置信息納入考量,即 Relative Attention(相對(duì)位置的注意力機(jī)制)。

相對(duì)位置的注意力機(jī)制丨作者制圖
有了理論支撐,我便開始著手實(shí)現(xiàn) Relative Attention。但就是在這個(gè)過程中,我卻意外地發(fā)現(xiàn)了 Compond Word Transformer。這是臺(tái)灣人工智慧實(shí)驗(yàn)室于 2021 年初新發(fā)布的論文。
Compond Word Transformer 建立在 Music Transformer 之上,因此更加先進(jìn)。Music Transformer 是將所有的音樂元素按照時(shí)間順序排成一個(gè)有序隊(duì)列作為輸入。

Music Transformer 的數(shù)據(jù)輸入方式丨作者制圖
而 Compond Word Transformer 則通過線性變換技巧,將原本的串行輸入變換成為并行輸入。

Compond Word Transformer 的數(shù)據(jù)輸入方式丨作者制圖
如此一來,不但解決了時(shí)長(zhǎng)增加就“糊掉”的問題,同時(shí)模型的訓(xùn)練和采樣也更加高效靈活了。
最終,我用 Tensorflow 實(shí)現(xiàn)了 Compond Word Transformer,并開源在 GitHub。
訓(xùn)練費(fèi)用花了 10000 塊
要生成好的音樂,就離不開合理的訓(xùn)練與采樣。
訓(xùn)練是模型不斷學(xué)習(xí)成長(zhǎng)的過程,模型在學(xué)習(xí)數(shù)據(jù)的過程中不斷自我調(diào)整參數(shù),讓模型的輸出效果在一定范圍內(nèi)接近訓(xùn)練數(shù)據(jù),而模型的體量、訓(xùn)練的并發(fā)數(shù)(batch_size)與模型自我調(diào)節(jié)的次數(shù)(step)等都會(huì)對(duì)最終的效果產(chǎn)生影響。
于是,我反復(fù)調(diào)整模型與訓(xùn)練參數(shù),并且嘗試不同條件之下的單 GPU 訓(xùn)練和多 GPU 合作式的分布式訓(xùn)練。
這個(gè)過程大概持續(xù)了三個(gè)月,在 GPU 租賃平臺(tái)花了 10000 元,最終才找到一套最佳實(shí)踐的方案,當(dāng)時(shí)確實(shí)走了不少“彎路”。

模型的詳細(xì)參數(shù)不過多贅述,代碼中已經(jīng)說明,我來說說模型自我調(diào)節(jié)的次數(shù)(step)對(duì)生成音樂效果的影響。在訓(xùn)練時(shí),模型每學(xué)習(xí)一次數(shù)據(jù)之后,都會(huì)自我調(diào)整參數(shù)來使自己的輸出更加接近數(shù)據(jù)集,這樣一次模型自我調(diào)節(jié)的過程就叫一個(gè) step。隨著 step 的次數(shù)增多,模型會(huì)與數(shù)據(jù)集逐步擬合,生成的音樂效果也會(huì)大相徑庭。比如讓 AI 對(duì)同一段旋律(來自 Pop17k 數(shù)據(jù)源)進(jìn)行續(xù)作。

訓(xùn)練折線圖丨作者制圖
對(duì)于絕大多數(shù) AI 模型來說,驗(yàn)證集達(dá)到最高精度之時(shí),模型的表現(xiàn)往往最佳。但在生成音樂這里卻不是這樣。我在反復(fù)實(shí)驗(yàn)后發(fā)現(xiàn),能生成流暢自然旋律的那套參數(shù),往往發(fā)生在驗(yàn)證集達(dá)到最高精度之后。
這或許恰恰說明理性數(shù)字所標(biāo)記的精度,只能表達(dá)模型對(duì)于訓(xùn)練集的擬合程度,不能 100% 標(biāo)記感性音樂的動(dòng)聽程度,音樂感受是因人而異的主觀體驗(yàn)。
好的采樣策略,旋律的把控更靈活
我拿到了一個(gè)訓(xùn)練完成的模型,但卻未必能得到好聽的旋律。因?yàn)?AI 模型最終給出的結(jié)果是數(shù)字,是概率分布。我還需要用合理的算法,將概率分布轉(zhuǎn)換成最終與音符對(duì)應(yīng)的那個(gè)數(shù)字。這個(gè)過程叫做“采樣”。

我的第一直覺是直接使用 Greedy Search(只選擇概率最大的)。可在實(shí)際的測(cè)試中發(fā)現(xiàn)這并不可行,因?yàn)樵趯?shí)際的測(cè)試中發(fā)現(xiàn),Greedy Search 會(huì)導(dǎo)致音樂缺少變化,甚至陷入一種永不回轉(zhuǎn)的單調(diào),也叫做“Get Stuck In Loops”現(xiàn)象。

我需要一種方案讓生成的旋律在采樣后具有一定變化。這里我結(jié)合了之前用 AI 做文字生成的一些經(jīng)驗(yàn),我選擇的是 TOP-P Sampling 與 Temperature Sampling 結(jié)合的算法。

TOP-P Sampling 的核心是可以甩掉末尾的小概率,可通過設(shè)置參數(shù) P 來配置候選者的數(shù)量,P 的值越大則參選的候選者越少。Temperature Sampling 則給了我一個(gè)可調(diào)節(jié)的“溫度”參數(shù),即可通過調(diào)整溫度 T 來把控旋律的變化幅度。
比如以下兩首是為相同開頭續(xù)作,對(duì)比“T-音高”不同的旋律。


第一首(T-音高 = 0.01)的音高會(huì)保持較好的前后一致性。而第二首(T-音高 = 1)的旋律則相對(duì)有了更加靈動(dòng)多變的感覺。這精細(xì)獨(dú)立的把控得益于 Compond Word Transformer 的模型架構(gòu),可將不同的音樂元素分別進(jìn)行獨(dú)立采樣,十分靈活高效。
AI 創(chuàng)作的旋律誕生了
時(shí)間過得很快,八個(gè)月了,我如愿以償用程序員的方式創(chuàng)作出了幾段旋律。
這八個(gè)月的 AI 作曲之路就像一次舍近求遠(yuǎn)的旅行,我本可以直接使用現(xiàn)成可用的系統(tǒng)去生成音樂,比如 MusicRNN,Jukebox 等。但我選擇了從零到一親自實(shí)踐,這一路的疲憊與充實(shí),茫然與靈感,失落與成長(zhǎng),讓我在抵達(dá)終點(diǎn)后仍感覺到一絲意猶未盡。因?yàn)樘剿鞯臉啡げ⒎莵碜宰罱K的結(jié)果,而是源自于探索本身。
人類文明發(fā)展至今,已擁有八大藝術(shù)。而技術(shù)與藝術(shù)結(jié)合的則是一個(gè)廣闊的新領(lǐng)域。新領(lǐng)域也意味著新問題與新挑戰(zhàn)。
比如 AI 創(chuàng)作的藝術(shù)作品,版權(quán)歸屬于誰?由于 AI 音樂的產(chǎn)生是根據(jù)算法模型,讓機(jī)器在大量現(xiàn)成作品中尋求“規(guī)律”,按照這些規(guī)律提取資料中特定的樂章片段,依據(jù)計(jì)算得出的概率重新進(jìn)行排列組合,所以這些涉及到資料庫中大量現(xiàn)成作品的版權(quán)問題。據(jù)說,Aiva 研發(fā)人員特意選擇古典音樂為 AI 學(xué)習(xí)對(duì)象,主要就是為了避免版權(quán)問題,因?yàn)樗褂玫哪亍⒇惗喾业热说淖髌窔v史久遠(yuǎn),版權(quán)時(shí)效已過。即便 AI 作曲技術(shù)經(jīng)過不斷優(yōu)化,最終得以生產(chǎn)出純?cè)瓌?chuàng)、不涉及任何侵權(quán)的作品,此作品又將面臨到版權(quán)認(rèn)證的問題。
再比如當(dāng)下 AI 的藝術(shù)作品往往被評(píng)價(jià)缺少“靈魂”,人們認(rèn)為 AI 不具備情感,不了解音符、節(jié)奏等音樂表層結(jié)構(gòu)和基于情緒表達(dá)的音樂深層邏輯之間的對(duì)應(yīng)關(guān)系,只是在“猜”音符。那人類做出的音樂的“靈魂”又是什么呢?
我認(rèn)為藝術(shù)的“靈魂”一定與一個(gè)現(xiàn)象有關(guān)。那就是聯(lián)覺(Synesthesia)現(xiàn)象。
聯(lián)覺,又稱通感,是指一種通道的刺激同時(shí)引起的另一種通道的感覺。比如藍(lán)色容易使人產(chǎn)生冷靜或憂傷的感覺, 而音樂作曲中也往往會(huì)使用大調(diào)或小調(diào)來傳達(dá)明亮或陰郁的感受。
出眾的聯(lián)覺感受是藝術(shù)家的一種天賦。《權(quán)力的游戲》的主題曲作者拉民·賈瓦迪,就有出眾的聯(lián)覺感受。他能在音樂中看到顏色,在文字中聽見旋律。將這些不同通道的感受串聯(lián)起來的,似乎是一種神秘力量,只是我們還沒將它發(fā)現(xiàn)。

而 AI 對(duì)聯(lián)覺的探索也已上路,Google 也曾在 2021 年發(fā)布過一個(gè)模擬聯(lián)覺感受的實(shí)驗(yàn)性 AI,叫做 Play a Kandinsky丨Google Arts & Culture
相反,AI 沒有意識(shí),不存在任何對(duì)音樂的“理解”,只是在數(shù)字中尋找規(guī)律,并按照它掌握的規(guī)律,一個(gè)接一個(gè)地推測(cè)出接下來的音符。但在一些注重成本且審美要求不高的應(yīng)用場(chǎng)景中,AI 作曲就是一個(gè)高效的選擇。
一些前沿科技團(tuán)隊(duì)也清楚 AI 作曲的斤兩,所以他們?cè)谘芯坑?AI 百分百作曲的同時(shí),也在做一些人機(jī)交互,是把 AI 作為作曲的一種協(xié)同工具,比如 Google Magenta 團(tuán)隊(duì)開發(fā)的 COCOCO,就是幫助作曲家尋找靈感的工具。
AI 作曲的存在,也不斷在提醒蹩腳的作曲家們不能再做簡(jiǎn)單又粗糙的音樂,而應(yīng)該珍視、鉆研音樂這一個(gè)表達(dá)媒介。至少,你作品里寄托的情感,不能還沒有機(jī)器猜音符那種概率游戲真誠(chéng)吧?
參考文獻(xiàn)
[0]源碼:https://github.com/netpi/compound-word-transformer-tensorflow
[1] MT3: https://arxiv.org/abs/2111.03017
[2] REMI: https://arxiv.org/abs/2002.00212
[3] Attention: https://arxiv.org/abs/1706.03762
[4] Music-Transfomer: https://arxiv.org/abs/1809.04281
[5] CP-Word-Transfomer: https://arxiv.org/abs/2101.02402
作者:陳東澤
原標(biāo)題:《我花了八個(gè)月和一萬塊,用 AI 做了毫無靈魂的音樂》
本文為澎湃號(hào)作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀點(diǎn),不代表澎湃新聞的觀點(diǎn)或立場(chǎng),澎湃新聞僅提供信息發(fā)布平臺(tái)。申請(qǐng)澎湃號(hào)請(qǐng)用電腦訪問http://renzheng.thepaper.cn。





- 報(bào)料熱線: 021-962866
- 報(bào)料郵箱: news@thepaper.cn
滬公網(wǎng)安備31010602000299號(hào)
互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006
增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:滬B2-2017116
? 2014-2025 上海東方報(bào)業(yè)有限公司