JinyuEgg
JinyuEgg

Music Technology在读

什麼是“音樂信息提取”?一篇簡單的介紹


近日托《集合啦!動物森友會》的福,讓遊戲內的語音合成火了一把。藉著這股東風,想和大家介紹一下與其相關的一些背後故事:動森的製作人員是如何想到這樣來處理聲音的?語音、音樂又如何與科技發生聯繫?程序員懂了樂理以後能做出什麼腦洞大開的玩意?

作為一個研一的新人,筆者在此恬不知恥地斗膽為大家介紹一下這一音樂、信號處理和機器學習的交叉學科:音樂信息提取 (Music Information Retrieval,簡稱MIR)。

了解聲音工程的朋友們知道,在音樂製作的領域裡,多虧了科技與音樂創作的結合才能創造出如今我們每天都能享受到的聲音體驗。而作為音樂的另一面,當聆聽和理解音樂的過程與科技相結合,便是本文想為大家介紹的“音樂信息提取”領域了。因為是從聆聽與理解的角度出發,因此MIR也被稱為音樂信息學(Music Informatics)或機器聽覺(Machine Listening)。

那麼讓機器能“聽懂”音樂後我們能做到什麼呢?我們來聽一段不太一樣的“勁歌金曲”:

這是Deezer出品的聲源分離工具Spleeter的一小段demo。在一首完整的歌曲裡,如果我們能讓機器分辨出那些聲音是由歌手演唱,哪些是伴奏,就能像視頻裡這樣把歌曲的演唱和伴奏分離開來。


了解聲音工程朋友應該知道,我們在製作歌曲的時候通常是會將不同樂器用不同的麥克風,分成不同的音軌來錄製後,再經過混音這一過程製作成一條合成的音頻的。如果用料理來類比,這個過程就好比與將不同的原材料混合、烘焙,製作出食物的成品。然而如果我們將這個過程反過來,從做好的番茄炒蛋裡把雞蛋、番茄、油分離出來,並且得到完整的原材料,這就是聲源分離所能做到的。

然而了解過高中物理的熱力學定律或者學過信息論的同學應該知道,這樣的熵減過程是違反熵增定律的:不可能從一杯50度的溫水中分離出半杯0度的冰水和半杯100度的開水。那麼我們如何能做到將聲音的番茄炒蛋分解成聲音的番茄和聲音的蛋呢?這就要講到聲音知識的重要性了。

我們知道聲音,或者說聲波,本質上是空氣或其他介質產生的規律性的震動,而不同的發聲物體的震動規律也有所不同。比如架子鼓的敲擊聲是短促有力的,並且幾乎沒有音調(當然學鼓的朋友知道鼓皮也是要調音的);而小提琴的聲音則悠長均勻,音調十分明顯。

基於這樣的現象,我們可以讓算法學習不同樂器的頻譜特徵,從而分離出不同樂器,或者伴奏與人聲。

不同的樂器具有不同的短時頻譜特徵。左起每列:單簧管、失真吉他、人聲、笛子、鋼琴、薩克斯、小號、小提琴




接下來再為大家介紹一個很多人想要擁有的技能:扒譜。

很多學吉他的朋友都會有一首夢想自己能夠演奏出來的曲子(一定不是海闊天空)。但包括我在內,許多人初學吉他的時候也經常會有一個困擾:上哪找譜子呢?這時如果能讓算法幫我從這首歌的音頻裡面分析出來每個小節用的是什麼和弦,那我成為吉他大師不就指日可待了嗎!

是的!現在扒譜也能讓機器幫你做!請看一個我自己做的demo:

彈一個簡單的C大調1645,算法就能識別出我所彈的BPM,節奏型,以及每一拍所彈的是什麼和弦!是不是非常的炫酷呢! (並不)當然在這背後所需要的是信號處理知識和音樂知識的高度結合,如果大家有興趣的話,筆者之後可以為大家繼續講解。

和弦信息就藏在這樣的矩陣裡

除了聲源分離和和弦識別之外,MIR還有十分多的應用:聽歌識曲、抄襲識別、旋律提取、甚至也能進行音樂創作;而當這一切和人工智能(神經網絡)結合以後,又能創造出更多腦洞大開的成果!這裡再和大家分享一個8bit音樂自動生成算法LakhNES


這裡展示的所有音樂都是用神經網絡學習8bit音樂樣本後自動生成出來的。也許再過一段時間,甚至連8bit遊戲都能自動生成了。

不知道有多少朋友聽說過《GEB》這本融合了計算機、邏輯學、圖形設計和音樂的奇書,書中當時所探討的看似風馬牛不相及的音樂、人工智能和藝術,正在發生著可能連作者也未曾設想到的奇妙融合。


感謝您的閱讀,這是我第一次在matters投稿,搬運了一篇之前寫過的小小科普文章。期待能和matters的朋友們有更多的交流!

CC BY-NC-ND 2.0 版權聲明

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

第一個支持了這篇作品
載入中…

發布評論