跳轉到

第8章 音樂資訊檢索#

「這首歌叫什麼名字?」「樂器的音準對不對?」「這首歌的節拍在哪裡?」——音樂資訊檢索(Music Information Retrieval, MIR)把這些人類聽覺的問題變成可計算的問題,而其中的演算法大多可以用本書前幾章的技術堆疊起來。

首先是音高偵測與調音器。吉他手按品位時,手機裡發生了什麼?我們比較自相關與 YIN 演算法,介紹以累積平均消除自相關缺點、以門檻找到第一個谷底的 YIN 做法,並實作一個簡版的調音器,把頻率換算到最接近的 A4=440Hz 音名。接著是節拍偵測:把訊號轉成頻譜、計算能譜差分(spectral flux),得到強調 onset(發聲點)的節拍曲線,再用自相關或直方圖法推估 BPM,最後從 onset 上尋找等距的相位。最後是音訊指紋——Shazam 法:把近似的定域峰值(spectral peaks)配成星座特徵(constellation map),以穩健的 hash 對抗雜訊與重錄,用倒排索引在百萬首歌中查找匹配。

本章豐富的資料結構(字典、雜湊索引)與訊號技術並重,是演算法課的合適綜合練習。