2015年2月23日 星期一

欲解繁音促節

很久以前就對自動轉譜有興趣。設計一個機器能夠把音樂轉成樂譜,是一件再有趣不過的事。多年前,我就曾經嘗試從音樂的頻譜成份看出旋律和伴奏的每個音;換句話說,至少要找出每個時間點共有那些音被演奏。

固然這是相當困難的問題。畢竟對人而言,能把各種音樂轉成樂譜,仍是高度專業的技能。音樂奇才如莫札特等所流傳之種種傳奇故事中,所強調的除了高超的演奏能力以外,就是轉譜或背譜的能力。

以上所指的高超與困難,當然是那種旋律、和聲、節奏以至於配器等等都很龐雜的曲子。至於兒歌之類的小曲,編以基本和聲者,就簡單得多,只要有些經驗,花點時間,皆當能正確轉譜。

但諷刺的是,就因為這樣,我發現,自動轉譜問題的難度反而常常被許多具備相當音樂知識的人所嚴重低估。這主要是因為許多我們非常熟悉的音形,在信號層次上並沒有那麼好分析。

最經典的例子大概就是單音和八度雙音的問題。一個完全八度音程中的兩個音,頻率比為二比一,造成雙音之頻譜完全重疊,各泛音之相位更是不一定,重疊的泛音可能同相,可能反相,疊加之信號強度自無法預期,頻譜本身也就難以展現任何可循的法則。

今天用鋼琴彈一個Do,或者張開手掌,同時彈下低音Do和高音Do,這兩種聲音,很難用目前的信號分析工具有效分辨。我跟很多學過音樂的人提過這件事,得到的回應大概都是「這很簡單啊,怎麼會難」。是的,聽覺上很簡單,但在信號、物理層面就是不容易。至於為什麼很容易用人耳聽出來?這大概又是另一個研究題目了。

今年設計了一個處理多聲部音高的演算法,初次參加MIREX,跑了四十餘首從單聲部到五聲部的音樂,只抓對了48.8%的音符(連一半都不到),但這樣的準確率,在2007年MIREX開始這個比賽項目以來,上百份參加的code中,竟也名列第19,且前20強大部分準確率都相差不大。

另一方面也有看到突破。KTH的Anders Elowsson等今年突破70%之準確率,為歷年之最高。但很明顯的,這與真人的轉譜能力、與任何可能的實際應用,都還有一些距離。我則認為,觀諸近十年來之相關研究,其實可以發現還有很多切入點,還有太多的信號處理或機器學習的工具可望發揮奇效卻仍未被深入探討,想法繁多,唯日不暇給,力有未逮。

大家若對自動轉譜技術與未來可能的應用感興趣或有任何想法,非常歡迎與我討論。2014年MIREX Multi-F0 Estimation之結果與相關數據如下:

http://www.music-ir.org/mirex/wiki/2014:Multiple_Fundamental_Frequency_Estimation_%26_Tracking_Results