AI填詞能(四):小試牛刀,無題一曲

上回講到因為要處理歌詞中的一字多音情況,而要重新整理全部歌詞資料,終於在一番努力之下完成183首歌詞的格式轉換,成為基礎的資料庫。

之後便回到填詞程式本身了。我用Gradio製作了一個填詞程式的原型(prototype),可以在上面輸入一句歌詞的「0243」代碼,下面按「生成歌詞」按鈕,便能隨機(機會率按照歌詞資料庫內每個字出現的比率)生成合音的字。


值得一提的是「留白比率」,我的經驗是如果歌詞建議填滿隨機生成的字,反而會有「密閉恐懼」而不利「腦力激盪」(brainstorming),所以設定一個「留白機制」,有指定百分比的機率會生成空白(以下線_表示)。

工具準備好,是時候試用它來填詞了。以下示範所用的歌是我來到英國之後幾乎每星期到聽至少一次、在英國家傳戶曉的BBC電視足球節目《Match of the Day》片頭曲的其中一段:

由於未想到該寫甚麼題材,所以索性把歌名取為《無題》,預先把頭三句開首填上「無題是…」,正好配合沒有甚麼主題所以可以天馬行空的後續。

這次目標是填四句,每句是通順而完整的句子,由於程式現時做到的是隨機抽取合音字,照單全收必然雜亂無章,所以抽出的字先供參考,選取合用的字「腦補」成詞語,再成句。為免花太多時間構思雕琢,所以每句之間也不需有關聯。

具體的做法是先填上每句的0243代碼,然後逐句輸入程式,每次生成10句給我選字,沒有想用的字就再給我多10句,如此類推。如下圖所示,紅字為選用了的字,然後以此為基礎填完一句,例如第一句進入視線的是「波」「動」「浪」三字,結果把補上成為「波浪在動在動」。

第一句寫好之後,其實會引導自己接下來填甚麼歌詞。有些時候勉強填到一句,但部份覺得滿意但部份覺得還有更好的選擇,例如第三句開始時填上「天地自若自在」,但「天地」以外有沒有更好的選擇?這時可以把這兩字的代碼「32」再輸入程式讓它跑一堆字詞給我選(這時可把留白比率調至0%,讓它盡可能成出更多字給我選),雖然生成了20個、勉強找到了「仙佛(自若自在)」也說得通,而最後「維持原判」,但有些時候也可以以此由全句逐步收窄範圍,直至得出理想的句子(例如後面「如沒失憶好好去相愛」,都是分兩次生成)。

全段的完成品是這樣:

無題是波浪在動在動 半生自來自去
無題是渴睡沒日沒夜 夢中聽過那歌
無題是天地自若自在 過得愉快稱心
如沒失憶好好去相愛 以心裝載現在未來

以下是短片總結整個生成字詞到選取用字填詞的過程(原裝音樂稍為調慢,方便閱讀):

暫時還只算是小試牛刀,出來的歌詞還不算很理想,但大致試行了整個填詞流程,對後續設計有幫助。計劃中下一個版本的改良包括:

  • 文本機制:很多時候填詞時我們心中都有某個主題想寫,在「文本」輸入框預留位置輸入相關的關鍵詞、金句甚至整篇文章,讓程式依據合音原則嘗試把那些字放在可行的位置;
  • 擴充歌詞資料庫:會逐步增加資料庫的歌詞量,如果包含所有本blog年選20大的粵語歌,加上自己寫的舊曲新詞,應該由183首擴充至500多首,詞彙更豐富,選字的機率分佈會更穩定;
  • 押韻機制:如果選擇押韻,程式會進一步限制在句末只選擇押韻的字。

有這些改良,下一次應該可以示範完整地寫一首歌了。

留言