基于深度神經(jīng)網(wǎng)絡(luò)進(jìn)行語音合成、音樂風(fēng)格遷移,正成為不少致力于“讓人人成為音樂家”的研究人員所追求的事情。像此前我們報道的微軟小冰作詞又作曲,AI幫清華博士寫說唱歌詞晉級,甚至不久前中央音樂學(xué)院招音樂AI方向博士生。不久前,為了紀(jì)念著名作曲家巴赫誕辰,Google 根據(jù)巴赫合唱和聲訓(xùn)練而成的機(jī)器學(xué)習(xí)模式 Coconet 吸引了不少人前來圍觀。
最近,OpenAI最新研發(fā)的MuseNet的深度神經(jīng)網(wǎng)絡(luò),可以制作 4 分鐘時長的音樂作品,其中涵蓋 10 種不同的樂器(如鋼琴、鼓、貝斯、吉他),甚至還能將諸如鄉(xiāng)村風(fēng)格、莫扎特風(fēng)格、甲殼蟲樂隊風(fēng)格的音樂融合起來。
首先需要說明的是,MuseNet 并沒有根據(jù)人類輸入的對音樂理解進(jìn)行顯式編程,而是通過學(xué)習(xí)預(yù)測成千上萬個 MIDI 文件的下一個 token 來發(fā)現(xiàn)和弦、節(jié)奏和風(fēng)格的模式。MuseNet 采用了無監(jiān)督神經(jīng)網(wǎng)絡(luò)語言模型 GPT2.0(是的,就是此前被譽(yù)為可以 BERT 媲美的 NLP 模型 GPT2.0,普遍觀點(diǎn)是,經(jīng)過預(yù)訓(xùn)練可以預(yù)測上下文,無論是音頻還是文本。)
據(jù)悉,5 月 12 日將正式開放 MuseNet 語言生成工具的試用版本。(以下為學(xué)習(xí)了肖邦作曲風(fēng)格的英國女歌手 Adele 的 Someone Like You的 AI編曲錄音。)
傳送門:
https://openai.com/blog/musenet/
▌過程原理
在簡單模式(默認(rèn)顯示)中,用戶會聽到預(yù)設(shè)生成的隨機(jī)未切割樣本;然后選擇某作曲家或風(fēng)格下的著名作品片段,即可生成各種風(fēng)格的音樂。
在高級模式下,用戶可直接與模型交互。這個過程需要完成的時間會更長,但用戶可以創(chuàng)建一個全新的作品。
注意:MuseNet 通過計算所有可能的音符和樂器的概率來生成每個音符,模型會傾向采用你選擇的樂器,但也可能會選擇逼得樂器;同樣,MuseNet 也會搭配不同風(fēng)格的樂器,如果用戶自行選擇最接近作家或樂隊常用分風(fēng)格或樂器,產(chǎn)生的音樂會更自然。
研究人員還創(chuàng)建了作曲家和樂器的 token,以便更好地控制 MuseNet 生成的樣本類型。訓(xùn)練期間,這些作曲家和樂器 token 將預(yù)先添加到每個樣本中,因此模型將學(xué)習(xí)利用該信息進(jìn)行音符預(yù)測。生成音樂時,可以調(diào)整模型,如拉赫瑪尼諾夫的鋼琴曲為前提,以創(chuàng)建選定風(fēng)格的音樂。
研究人員還將 MuseNet 中的嵌入進(jìn)行可視化,以深入了解模型所學(xué)到的內(nèi)容。他們采用了 t-SNE 創(chuàng)建各種風(fēng)格嵌入的余弦相似性。(如下 2D 圖像所示,可查看某個特定作曲家或風(fēng)格之間的關(guān)系。)
▌利用 Sparse Transformer 記住長期結(jié)構(gòu)
MuseNet 使用 Sparse Transformer 的重算和優(yōu)化內(nèi)核來訓(xùn)練一個具有 24 個注意力頭的 72 層網(wǎng)絡(luò),并將全部注意力放在 4096 個 token 的上下文中。這個長文本的目的是能夠記住一個片段中的長期結(jié)構(gòu)。或者,它還可以創(chuàng)建音樂旋律結(jié)構(gòu)。
音樂生成是測試 Sparse Transformer 的一個有用域,因?yàn)樗挥谖谋竞蛨D像的中間位置。它具有文本的 token 結(jié)構(gòu)。在圖形中,你可以查看 N 個 token,而在音樂中,查看之前的起點(diǎn)沒有固定數(shù)。此外,還可以很容易聽到該模型是否在按照成百上千個 token 順序來獲取長期結(jié)構(gòu)。
▌數(shù)據(jù)集
研究人員收集了不同來源的 MuseNet 訓(xùn)練數(shù)據(jù)(ClassicalArchives、BitMidi、MAESTRO ),涵蓋爵士樂、流行樂,以及非洲、印度和阿拉伯等不同風(fēng)格的音樂。
首先,研究人員采用 transformer 在序列數(shù)據(jù)上進(jìn)行訓(xùn)練:給定一組音符,要求它預(yù)測其他即將出現(xiàn)的音符。在嘗試了幾種不同方法后將 MIDI 文件編碼為適用于此任務(wù)的 token。
在這種其中,他們采用和弦方法,將每次聽到的音符組合視為單獨(dú)的 “和弦”,并為每個和弦指定一個 token。然后,通過僅關(guān)注音符開頭壓縮音樂模式,并嘗試使用字節(jié)對編碼方案進(jìn)行近一步壓縮。
研究人員還嘗試了標(biāo)記時間推移的兩種不同方法:一是根據(jù)音樂節(jié)奏進(jìn)行縮放的 token,代表節(jié)拍或節(jié)拍的一小部分;二是以絕對時間為單位來標(biāo)記 token。他們采用了一種結(jié)合了表現(xiàn)力和簡潔性的編碼方式:將音高、音量以及樂器信息組合稱一個 token。
在訓(xùn)練中,
通過提高和降低音高來調(diào)換音符。(之后的訓(xùn)練中,減少了調(diào)換數(shù)量,使得每個樂器都有生成的音符。)
提高音量,調(diào)高或降低不同樣本的整體音量。
增加時間,當(dāng)使用以秒為單位的絕對時間編碼時,可有效稍微減緩或加速片段。
在 token 嵌入空間中使用 mixup。
研究人員還創(chuàng)建了一個內(nèi)部評測,在訓(xùn)練中,通過模型預(yù)測給定的樣本是否來自數(shù)據(jù)集還是之前生成的樣本,進(jìn)行評判。
▌嵌入
為了給模型提供更加結(jié)構(gòu)化的上下文,研究人員還添加幾種不同類型的嵌入。
除了標(biāo)準(zhǔn)位置嵌入外,還有學(xué)習(xí)到的嵌入,可在給定的樣本中追蹤時間推移;然后,他們還在每個和弦中的音符添加了嵌入;最后,他們添加了兩個結(jié)構(gòu)化嵌入,該嵌入可表明模型既定的音樂樣本在較大音樂片段中的位置。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100994 -
生成器
+關(guān)注
關(guān)注
7文章
318瀏覽量
21068 -
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29828 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8434瀏覽量
132868
原文標(biāo)題:程序員拯救樂壇?OpenAI用“逆天”GPT2.0搞了個AI音樂生成器
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論