iT邦幫忙

2021 iThome 鐵人賽

DAY 16
2
AI & Data

人工智慧在音樂領域的應用系列 第 16

Day 16: 人工智慧在音樂領域的應用 (AI作曲-馬可夫模型 Markov Model二)

昨天我們介紹了馬可夫模型的基礎原理,那麼今天我們接著介紹要怎麼把音樂套用馬可夫模型裡面。

訓練 (Training)

首先,馬可夫模型需要先對他做訓練(Training),訓練的目的是讓馬可夫鏈了解機率要如何分布。拿昨天鹽酥雞的例子來說就是,一開始我也不知道我每次吃完鹽酥雞後,下一餐繼續吃鹽酥雞或改吃魷魚/豆腐的機率是多少。但是沒關係,我可以開始記錄我每餐吃什麼,持續吃了三個月後,我就會有大約90磅的脂肪 90餐的資訊,而這些90餐的資訊就是用來訓練馬可夫鏈所用的資料。而馬可夫鏈透過這些資訊的訓練後,就會得到一個我吃鹽酥雞攤的模型
https://ithelp.ithome.com.tw/upload/images/20211001/20140556bRlT0U4BRG.png

馬可夫模型作曲

那麼如果我們要套用到作曲上面,首先我們一樣要選擇資料來對馬可夫模型做訓練,而訓練用的資料就會成為作出來的樂曲的主要依據。舉個例子來說,如果我今天拿了一個全部都只有中音 Do的曲子來訓練馬可夫模型,那想當然爾,創作出來的音樂也會只有 Do而已,因為他所收到的資訊就是每次只要從 Do出發,下一個音一定是100%回到 Do
https://ithelp.ithome.com.tw/upload/images/20211001/20140556qECblFdBOb.jpg

我們拿生日快樂歌來當例子:

https://ithelp.ithome.com.tw/upload/images/20211001/20140556JqtjjhPmdA.jpg

先不考慮節奏的話,旋律的進行為
Do->Do->Re->Do->Fa->Mi->
Do->Do->Re->Do->Sol->Fa->
Do->Do->Do(高音)->La->Fa->Mi->Re->
Si->Si->La->Fa->Sol->Fa

首先我們先從 中音Do (非高音Do以外的Do都是中音Do)開始,根據整首生日快樂歌,Do 總共出現了8次:
第一次由 Do 回到 Do;
第二次由 Do 來到 Re;
第三次由 Do 來到 Fa;
第四次由 Do 回到 Do;
第五次由 Do 來到 Re;
第六次由 Do 來到 Sol;
第七次由 Do 回到 Do;
第八次由 Do 來到 Do (高音);
我們接著對這些數據做個統計:
Do 回到 Do 的次數是3次,總次數為8次,因此機率是37.5%;
Do 來到 Re 的次數是2次,總次數為8次,因此機率是25%;
Do 來到 Fa 的次數是1次,總次數為8次,因此機率是12.5%;
Do 來到 Sol 的次數是1次,總次數為8次,因此機率是12.5%;
Do 來到 Do (高音) 的次數是1次,總次數為8次,因此機率是12.5%;

接著我們就可以根據以上的資料,推斷出每次只要來到Do的時候,就會有
37.5% 的機率依然是 Do;
25% 的機率會移動到是 Re;
12.5% 的機率會移動到 FaSol 或是 Do (高音)

接下來我們再針對每一個音去做一樣的統計,最後所得到的就是透過整首生日快樂歌訓練出來的旋律馬可夫模型。
具體機率如下:
https://ithelp.ithome.com.tw/upload/images/20211001/20140556vczs3ThMy7.jpg

而訓練好的馬可夫模型就可以根據這些基礎來開始創作音樂了,要做的事情就是給他開頭的第一個音,接著他就會依據上述的機率開始產生下一個音、再下一個音、再下一個音、再下一個音.......,就像石柳煎鳩一樣不斷的重複重複直到音符的數量達到設定的目標為止,而這就是馬可夫模型應用在作曲上的基礎。

優點與缺點

那麼馬可夫模型用來作曲的優缺點在那呢?
首先,馬可夫模型的訓練非常簡單又快速,只要給予資料後算出所有音符之間的轉換機率,即可快速的作曲;而只要你餵給馬可夫模型的資料夠專一,就有很高的機率能夠產生聽起來感覺類似的曲子,例如你準備的資料全部都是同一個時期的古典樂而且風格都相近,則產生出來的旋律很高的概率能夠產生類似的感覺。
然後以上這點是優點也是缺點,如果你沒有辦法準備足夠多且專一的資料給馬可夫模型,則訓練出來的模型就會相對的比較發散,道理就像是射雕英雄傳一開始時,郭靖跟江南七怪學了各種武功但是卻打不過每天專心致志練全真武功的尹志平一樣 (先不考慮資質還有師父們到底會不會教QQ);除此之外,雖然馬可夫模型可以無止盡的一直產生音符下去,但由於沒有記憶性 (我今天要吃魷魚還是鹽酥雞還是豆腐只跟我前一餐吃什麼有關係,再之前吃什麼都不管),因此創作出來的音樂相對來說沒有結構性,聽久了會覺得好像是有點亂數在跑得旋律 (雖然不難聽,如果餵給它訓練的資料夠好的話)而前後沒有任何因果關係。

其他應用

除了用來訓練主旋律之外,節拍也是可以獨立出來當作馬可夫模型訓練的目標,有些研究就是用其他演算法來做主旋律的創作,並且搭配馬可夫模型訓練出來的節拍來產生新的樂曲。也可以把主旋律節拍同時放在馬可夫模型裡面給它訓練,但相對的訓練的結果就會比較發散。
目前以各大主流的AI作曲來說,已經比較少看到完全使用馬可夫模型來作曲,取而代之的是

  1. 上面提到的利用馬可夫模型來做其中一部份的訓練 (節拍/旋律等等)。
  2. 利用馬可夫模型的特性針對旋律與和弦來做分類
  3. 利用馬可夫模型的特性針對旋律與和弦來做自動伴奏

一認真起來梗圖就好難塞...
那麼明天我們再來繼續講講其他AI演算法要如何應用在作曲上。
https://ithelp.ithome.com.tw/upload/images/20211001/20140556SU7BUrnVKt.png


上一篇
Day 15: 人工智慧在音樂領域的應用 (AI作曲-馬可夫模型 Markov Model一)
下一篇
Day 17: 人工智慧在音樂領域的應用 (AI作曲-基因演算法一)
系列文
人工智慧在音樂領域的應用30

尚未有邦友留言

立即登入留言