AI填詞能(五):寫一首Wonderwall,但大部份時間都花在流程設計

上回講到開始用填詞程式生成歌詞,用《Match of the Day》主題音樂小試牛刀,寫了一小段談不上有何章法的歌詞,但至少有了一些概念,實際上這工具可以如何運作。

這兩個月間程式有何改良?首先是加歌,歌詞資料庫加至250首,納入了2010-2014本blog年選20大的粵語歌。更重要的加入「文本機制」,構思是填詞通常是有個題材想填,而想填的題材通常都有些關鍵詞,我們可以用某種方法提升關鍵詞在程式隨機抽字的獲選機率(同時也得合音),對brainstorm歌詞應該大有幫助。


在程式中不斷撳掣隨機抽字,令我想起這「老人撳機」meme圖


在程式的應用中,我們把關鍵詞輸入在文本輸入框(一堆詞語倒入去便可,為方便自己看的話可以以空白格分隔),然後設定文本範圍內的字被抽中的機率,藉以讓程式提供的字更多偏向於文本範圍。

這機制還有一個用途,就是如果把文本獲選機率設為100%,就可以快速測試想要的關鍵詞可以放在歌詞的哪一處。有時可能整段旋律根本沒有位置可以填上想要的詞語,這樣便提早知道「此路不通」而要考慮用其他方式表達了。

程式在實際應用中作出了少少修改,例如「留白比率」和「文本採用機率」基本上都是用那幾個常用設定,也就不如把輸入數字改為從幾個數值選取,另外之前備用的「押韻」設定也不見了,因為會採取另一種方式處理,留待下篇文再談。

最新程式畫面

接下來又試寫一首歌,這次用上Oasis名曲《Wonderwall》試填粵語版。為測試文本機制,參考了幾個歌詞中譯 + 解讀文章 + Gemini和ChatGPT的解釋,選用其中一些用語,務求寫一些和原詞意思接近的歌詞(結果意思沒有相似,反而是一些英文的讀音和押韻透過「空耳」採用了,那是後話)。本來想像上次一樣記錄程式生成過的字、選用了哪些然後如何「腦補」成句,然後逐句把歌詞砌出來,但在Canva記錄花了太多人手步驟,反而影響填詞效率。

本來想記錄程式生成哪些字而我又選了哪些,結果太繁複而放棄


因為想展示用程式輔助填詞的過程,結果令我更仔細地思考填詞的「流程設計」,當中首先有三個問題值得探討:

  1. 用「0243」為歌詞編碼的一個問題是,同一句可以有多過一種「0243」的填法,就以《Wonderwall》為例,一開頭的「Today」兩個音,填「33」是對,填「34」也沒有錯,這種扭少少的填法在廣東歌也很常見。嚴格而言第二個字用第二聲即「39」是最準確,但是否要引入第二聲專用的9作為編碼?暫時另案處理。順帶一提,同一句多過一個「0243」可能性還有更複雜的情形,出現在另一句「I don`t believe in anybody」的「anybody」,填粵語可以填五個音,是「43420」也可以是「43334」,奇妙的是,你開頭是434,之後只能是20;用433開頭之後也只可以是34。下一個問題是,該如何記錄所有的可能性以供填詞時選用?結論是:不需要。填詞的過程是很流動的,而「0243」的編碼只是臨時留位(placeholder)之用,填上歌詞後便可捨棄,所以如要改動編碼,直接取代便可,不需記錄所有可能性。
  2. 在記錄中如何分辨哪些是一早已想到預先填進去的語句(例如我把一開頭二字填「今天」,第二段verse開頭填「不必」——連發音也「忠於原曲」),哪些是填詞程式生成給我選的,哪些又是我自己「腦補」的歌詞?結論是:不重要。現階段的填詞程式在實際應用上還是90%以上倚賴人腦完成歌詞,有時甚至是程式生成的字沒有用,但因而聯想起別的字適用,再如此細分只會阻礙填詞進度。不過,Highlight一開始預填的詞(暫且稱為seed phrase吧)也是有其用處,至少知道整段歌詞如何開始。
  3. 有時程式生成一些字,腦補了一個句子,未必足夠滿意,但可以有發展潛力,有時同一句旋律有幾個可能性,該如何存放這些「候選歌詞」又保留空間放置最終選擇?這便需要一個「暫存區」把「候選歌詞」放在一處備用,甚至可以應用「內循環大法」把這些暫存的歌詞當成上述的「文本」讓它們在更大機會被採用的前提下納入程式中。

發現這幾個問題,試了幾個方案(遊走於不同常用程式的時間多,真正填詞的時間少,驚訝的是原來Google Docs文字分兩欄竟然還沒有辦法自行調整每欄寬度),結果暫時採用的是在Google Slides(你用PowerPoint或Canva也可)的「四格模式」,一張投影片(slide)處理一段歌詞,除了標題以外分開四格,左上是0243代碼,右上是歌詞,左下的「文本」是一堆和題材相關的字(暫不必考慮合音),右下的「留置」是這一段中可以選用的合音的詞語或句子,就是那些可以考慮但未確定可以採用的字句,或者同一個位置幾個可以考慮的選擇。無論是「文本」或是「留置」,都可以放在程式的文本輸入框,在生成歌詞時更大機會被選中。

暫時覺得這四格的安排最配合我的填詞流程

設計好理想的流程後,便是全力開動填詞程式了。結合隨機生成用字、填詞人的腦補技術與「靈機一觸」把《Wonderwall》填上粵語版了。完整版的歌詞如下,自己的翻唱後補,有緣人讀到這歌詞也歡迎分享你們的翻唱。

如果可以 (原曲:Oasis《Wonderwall》)

今天 似等了一世紀 當你出發找更好的你
今天 你堅決出走 一切通通置之不理
尚有沒法 說出的感覺 也許過去的你 停步在故地

不必 背起太多掛牽 只要找到心跳已足夠
因此 你想更加勇敢 當你感覺彷似已得救
盡興活過 更相信自然 最終看透所有 遺憾在背後

幻變陰晴 步履不停 是過程
散發光明 淨化心靈 待證明
以耕耘換到收成 人生 偶有失意 你更加清醒

如果可以 願使命帶著你試一試
越過風雨 漫步不可知

今天 你希冀的美好 相信總有方法會找到
因此 你不再驚慌 得與失心裡已知道
俗世內有百千種想法 有參考有拋棄 能逐日進步

幻變陰晴 步履不停 是過程
散發光明 淨化心靈 待證明
以耕耘換到收成 人生 偶有失意 你更加清醒

如果可以 願使命帶著你試一試
越過風雨 漫步不可知
如果可以 願使命帶著你試一試
越過風雨 漫步不可知

如果可以 讓使命帶著你試一試
讓使命帶著你試多次
讓使命帶著你試多次

總算是第一次完整地由程式輔助寫完一首粵語歌詞。下一篇會繼續分享程式的改良,而之後每一篇「AI填詞能」都一定會至少附上一首詞作。

留言