iT邦幫忙

4

終於!ChatGPT 生出音樂了:一場 AI 音樂的冒險

Ben 2023-11-05 14:19:522551 瀏覽
  • 分享至 

  • xImage
  •  

終於!ChatGPT 生出音樂了:一場 AI 音樂的冒險

累了嗎?來聽一段用 AI 做出的輕音樂吧~~

Yes
今年六月的時候,有個朋友突發奇想,問我可不可以用 GPT 為某個活動產生一段開場音樂。聽到這麼有趣的挑戰,我受不了啊~~忍不住就動手實作了起來~~~

EarSketch

我先初步調查了一下,發現有個教育平台叫 EarSketch,透過音樂創作和混音來教授 Python 和 Javascript,其中包含了大量的音樂素材,可以讓使用者在網站上透過程式碼將素材組合成音樂片段。在網站上可以選擇不同的創作者、曲風、曲調和樂器的音樂片段來組合創作,感覺起來比較像是 DJ 的體驗網站。網站上也可以讓我們直接編輯 python script,依照自己的喜好產生音樂。可惜沒有 python 套件可以直接在本地端使用。

所以,我試著直接要求 ChatGPT 產生一段 EarSketch 的範例程式碼給我,但很不幸的是,ChatGPT 往往會給錯誤的素材名稱,導致無法正確執行。

只好自己試著在網站自己玩玩看。但是,這種事情真的很講天份,自己以為好聽的東西,別人就是聽起來怪怪的

  • 別人的音樂:https://earsketch.gatech.edu/earsketch2/?sharing=AzRbY74ElgfN2-tA5d-3n0E_zBFlqiqL2JJHKzMxWZk
  • 我的音樂:https://earsketch.gatech.edu/earsketch2/?sharing=C9p2oaPUPySZrh0xXOFViGW32m5XSxrdTP7OlEU9pKc

而且音樂片段真的太豐富了,有四千多個,要一一聽過,並且做組合真的有點辛苦~~~
只好,開始想辦法偷懶。

ChatGPT ABC Notation

以下嘗試使用 GPT-4 來產出音樂。

abcjs quick editor

接著,我在網路上發現了一種稱為ABC譜的記譜方式,它使用數字和英文字母來表示音長和音階。由於我高中時學過吉他且能讀懂吉他譜,我決定在網上尋找一段和絃譜,將其以文字方式丟給 ChatGPT 轉換為 ABC 譜。我隨後將轉換後的譜貼到了ABCjs Quick Editor這個網站上,該網站能夠將ABC譜演奏出音樂,並最終產生了一段聲音:
和弦 ABC notation

這段音樂雖然只是和弦的MIDI版本,但至少是一個還可以接受的開始。於是我便產生了一個想法:是否能直接獲得久石讓《天空之城》的主題曲『君をのせて』?不過,由於版權的問題,我再次被拒絕了。沒關係,我轉而請求對剛才的和弦進行改編,希望能讓音樂帶有久石讓的風格,並希望能夠有點《天空之城》的感覺。結果,我收到了一段新的音樂:
不知道該怎麼描述的聲音

就是一段聲音......,似乎也沒必要討論風格了XD,聽起來就是有個人很用力地彈奏鋼琴,每一下都要用力按到底的感覺~~~
試了幾次,其實都是得到這樣的聲音,看來真的無法用無腦的方式讓 ChatGPT 產出音樂。

讓 ChatGPT 模仿一下

ABCjs Quick Editor 的網站預設會給一首標題為 Cooley's 的愛爾蘭傳統舞曲(但應該是叫 Cooley's Reel),這首曲子給我了一個靈感,既然要 ChatGPT 憑空產出音樂不容易,不如讓他模仿一下現成的樂譜,然後再加以改造,例如改成天空之城風格的 Cooley's Reel。幾經嘗試之後得到著個版本的"音樂":
In the Style of Hisaishi from Cooley's

教 ChatGPT 樂理

我拿這段像是音樂的片段請學音樂的朋友們給點意見,大多都是覺得聽起來笨重、希望輕快一點、伴奏太大聲......之類的意見。把這些意見直接要求 ChatGPT 改善,其實成效不大,只會產生一些聽起來很像的作品。稍微檢視樂譜,我發現曲子大多由四分音符和二分音符組成,所以不夠輕快。

八分音符

但是,直接要求 ChatGPT 增加八分音符其實是沒有用的,ChatGPT 並不理解八分音符要怎麼用 ABC 譜呈現。所以只好當起音樂小老師教 ChatGPT 了。

https://ithelp.ithome.com.tw/upload/images/20231105/20139923NxNxKDeaho.png

產出的作品:教 ChatGPT 八分音符

https://ithelp.ithome.com.tw/upload/images/20231105/20139923owDhczrvye.png

補滿四拍

如果眼尖的讀者應該會發現,還有一個問題,其實 ChatGPT 給的樂譜,每個小節應該都要有四拍,但實際上許多小節都不滿四拍,所以,只好提醒一下 ChatGPT 了~~

產出的作品:補滿四拍

ChatGPT 教會我的事

我覺得還是有點沈重,ChatGPT 突然給了一個,到目前為止最好的建議:改成大調~

https://ithelp.ithome.com.tw/upload/images/20231105/20139923mZVGIHy3tk.png

改變曲調後,音樂的感覺確實有了顯著的變化,感覺比較輕柔~適合當作開場音樂的感覺~

https://ithelp.ithome.com.tw/upload/images/20231105/201399236LZYXquttq.png

產出的作品:D大調

花音與多樂器樂譜

後來我發現上述的每一個 ABC 譜的連結都有 ABC Cheat Sheet,說明更多進階的做法。我這邊試了一下花音和多聲部,一整個驚艷,整個曲風活潑了起來。

產出的作品:花音與雙手鋼琴譜

https://ithelp.ithome.com.tw/upload/images/20231105/20139923xvfxMfhLbP.png

也可以要求 ChatGPT 改成合聲樂譜,並且標示四部合唱:第一高音(Soprano I)、第二高音(Soprano II)、第一低音(Bass I)和第二低音(Bass II)。(只有 MIDI)

產出的作品:四部合唱

https://ithelp.ithome.com.tw/upload/images/20231105/20139923FYqRU1Zvge.png

MusicGEN

到目前為止,對音樂不太了解的我,其實覺得好像已經可以了,但這種事情很主觀的,給不同的人聽,就會有不同的感受,有些朋友就對這個作品不置可否。好吧~~我們還有進步空間。

後來有朋友跟我提到在 Hugging Face 上有 MusicGEN 的公開 AI 音樂生成模型,感覺值得一試。MusicGEN 可以讓使用者上傳音樂進行改編,或者直接告訴它你想要什麼風格的音樂,然後產生一段 15 秒的音樂片段。我直接上傳用 ChatGPT 最後產出的音樂,結果比想像中的好很多,它讓原本的 MIDI 變得比較豐富,增加了許多音樂元素,使其更具音樂性。

產出的作品:MusicGen- 上傳檔案

也可以同時也加上描述,就又會針對描述改編,下面的音樂片段,我是加了:The style of Joe Hisaishi's theme song for 'Laputa: Castle in the Sky'

產出的作品:MusicGen- 檔案 + 描述

我也嘗試了一下,只有描述的情況,一樣是The style of Joe Hisaishi's theme song for 'Laputa: Castle in the Sky'

產出的作品:MusicGen- 只有描述

老實說,這一段聽起來很酷,有種天空很寬廣,在空中360度俯瞰天空之城的感覺,中間強烈節奏之後的停頓,就很像是正要從高處往下跳的瞬間,心臟漏跳一拍,接著急速墜向大地,真的很有冒險的 feel。

嘗試使用不同的工具和方法來製作音樂,對於我來說是一個很有趣的過程,現階段利用 AI 產生音樂,其實還是需要一點音樂相關知識,無法完全無腦產生。不過,各種 AI 模型都在光速成長,說不定過一陣子,也會有超強的 AI 模型可以讓人 無腦 生成音樂了。

追加內容:ChatGPT Plugin for Music

ChatGPT 有很多音樂相關的 plugin 可以用,以下挑兩個跟產生音樂有關的 Plugin 稍微說明一下:

  • ABC Music Notation:
    • 可以直接將 ABC 譜轉換成 MIDI ,並且提供 URL 下載。
  • Music:
    • 可以用這個套件生成音樂,生成的效果其實還不錯,但是結尾的感覺不太完整。
    • 生成音樂後,會提供網址可以線上聆聽。
    • 範例:Sky Castle Theme – A Full Narrative

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言