3. 研究方法
3.1 歌曲處理(Music Processing)
圖一:本研究系統架構
歌曲處理的目的是要擷取出相關的特徵,分成三個模組:(1) 人聲旋律擷取(Vocal Melody Extraction),主要擷取使用者輸入的複音 MIDI 的人聲旋律;(2)基於歌詞的樂句分段(Lyrics-‐based Phrase Segmentation),透過歌詞的分段來找出主旋律中樂句的分段點;(3)歌曲結構分析(Musical Form Analysis),分析樂句的曲式。
歌詞處理部分主要分成三個模組:(1) 歌詞詞式分析 (Lyrics Form Analysis),將歌詞分段;(2) 歌詞斷詞(Lyrics Tokenization),將中文歌詞擷取出有意義的詞彙;(3)歌詞主旋律產生(Lyrics Melody Generation),利用中文為聲調語言的特性,產生中文流行歌詞聲調對應的旋律。
最後是詞曲的對齊與排名。我們先將歌詞中詞句的結構與歌曲的樂句結構做第一層的最佳化的 對應,接下來在做漢字與音符第二層最佳化的對應。在第二層的對應中,考慮了詞式與曲式的搭配、
中文歌詞產生的旋律與音樂主旋律的搭配以及歌詞唱音節奏與主旋律節奏的搭配。最後計算出詞曲 搭配的分數,再根據搭配分數得到歌詞推薦清單,而在產生推薦清單的同時也完成了歌詞中的每個
漢字與音樂音符的對應關係,如此便達到推薦歌詞系統的目的。
3.1 歌曲處理(Music Processing)
流行音樂的歌曲如同文章般也有階層式的結構。流行音樂的曲式相當於文章的段落,樂句 (Phrase)相當於文章的句子。我們透過對 MIDI 檔進行前處理、擷取主旋律、樂句分析以及曲式分析 來進行樂句處理。
n Preprocessing
MIDI(Musical Instrument Digital Interface)檔案中記錄了每個發聲的 MIDI Event。主要的 Event 是音符的資訊,透過Onset Event 及 Offset Event 兩種事件來記錄。Onset Event 是指音符開始發音 的事件,Offset Event 是指音符結束發音的事件。兩種 Event 都會紀錄其時間、音高、力度(Velocity)、
頻率等資訊。我們將1/4 拍設定成基本單位,再利用 JMusic 將每個 MIDI Event 調整到基本單位,
對音符的開始時間及音長做校正。
n Main Melody Track Extraction
一般 MIDI 檔案可能包含有許多個音軌(Track)。因此在分析樂句前必須先將主旋律的音軌擷取 出來。我們對音軌擷取四種特徵值,經過線性組合(Linear Combination)的方式計算出每個音軌可能
是主旋律的分數,選取最大可能性的作為音樂的主旋律。我們利用 SVM 找到各特徵所佔的權重及
門檻值。
(1) Level Crossing Rate
一般而言,人聲在演唱時,其音符的旋律線波動次數不會太頻繁,而伴奏的樂器則較可能在高 低音間變換,而有頻繁的旋律線波動 Level Crossing Rate 衡量每個音軌的音高變化情形。我們先
計算MIDI 中一個音軌的平均音高作為基準,接著計算前後兩音符跨平均音高的次數。
(2) Distinct Note Count:
一般而言,主旋律會包含較多的音高種類而伴奏之音軌所包含的音高種類較少。因此我們對 MIDI 音樂中的各軌道去計算其音高的分佈。
(3) Note Rate:
單位時間內音符的數量。主旋律的音軌單位時間內的音符數量相對的多。
(4) Polyphonic to Monophonic Rate
單位時間中單音與複音出現的數量的比值。人聲在歌唱時只能以單音表現,但是樂器在伴奏時
其中
w 與 b 為方程式之係數, y
i為分類之類別,而利用Lagrange multiplier method 則可將上根據四種特徵值計算樂句彼此間的相似度,並對不同的特徵值分別建立 Self-Similarity Matrix (SSM)。
圖三:張宇《捨得》的 SSM,由左自右的特徵分別為音程差、音高及和弦
§
Non-Negative Matrix Factorization
在建立 SSM 後,我們利用Non-Negative Matrix Factorization(NMF)來找尋在自相似度矩陣上利 於 尋 找 其 結 構 的 特 徵 , 將 這 些 不 同 性 質 的 特 徵 整 合 到 另 外 的 維 度 空 間 , 建 立 Second Level Self-Similarity Matrix,再以 Novelty Approach 擷取出曲式邊界。其中 NMF 的主要特徵是:(1)非負 元素值之限制條件 (2)非負值之特徵權重更符合物理性質 (3)分析出局部之特徵性 (4)符合類神經網
路運算之性質。並且在滿足上述四個條件下,給定一非負矩陣
V,使得非負矩陣 W 與 H 滿足下式:
V ≈ WH
(3.8) 為了要建立 Second Level Self-Similarity Matrix,我們首先對多個不同特徵值之 SSM 分別進行 NMF,在分解時需事先給定基底向量的個數。在給定 r 個基底向量個數的情況下,得到分解矩陣 W 與H。接著計算在空間 V 中,W 矩陣的基底向量 w
i所生成的局部特徵,其中i ≤ r
。將 SSM 進行 NMF 後,我們計算分解出的矩陣的基底向量在 SSM 對角線對應項之貢獻程度,將 其當成新的特徵值,定義如下:
給定一個大小為n×n的 SSM V,以及基底個數 r,經過 NMF 後可以得到基底向量矩陣 W 與係 數矩陣
H,其中 W 大小為 n × r ,H 大小為 r × n 。在原先的 SSM V 中,其對角線所表示的是 n 個歌
句自身的相似度。我們擷取兩個基底向量各自在對角線上生成之部分作為新的特徵值。我們建構基 底對角線貢獻圖來觀察各基底向量在原 SSMV 中對角線上之貢獻度。
§
Second-Level Self-Similarity Matrix
我們將各種特徵值所產生的自相似度矩陣均做 NMF,並且計算各個基底向量於原 SSM 中對角 線的貢獻值,當成新的特徵值,以建立Second-Level Self-Similarity Matrix。
透過上述方式建立華語男歌手張宇《捨得》的Second-Level Self-Similarity Matrix,如圖四所示,
顏色愈淺表示相似度愈大。我們分別利用音高、音程差、和弦三種音樂特徵值建構一階自相似度矩 陣再進行 NMF 取出各基底向量分佈特徵值,經過距離計算後建構出 Second-Level Self-Similarity Matrix。
圖四:張宇《捨得》音樂結構SSM
§
Novelty Approach
Foote 等人[7]指出沿著 SSM 的對角線觀察,差異性較大的結構片段會呈現出西洋棋盤(Checkers Board)樣式。我們將自相似度矩陣中的值轉換至-1 到 1 之間,若兩個元素完全相似,則其值為 1,
反之若兩元素相似度為 0,則其轉換後的值為-1。我們將跳棋盤格樣式視為核心矩陣(Kernel Matrix) 來尋找結構的邊界,並且利用Kronecker Product 調整 Kernel Matrix 之大小。
§ 邊界峰值擷取(Boundary Peak Selection)
給定一個 n × n 大小的核心矩陣(Kernel Matrix),將核心矩陣沿著二階自相似度矩陣的對角線掃 描並且計算其相對應的邊界分數值。當結構邊界與核心矩陣樣式相似時,其邊界分數值會較高。圖
五為n=4 之核心矩陣由原點至終點掃描並計算邊界分數之分佈圖。在此我們選取峰值之依據為超過
平均值加一個標準差,若符合此限制條件則將此邊界視為曲式結構之邊界。
圖五 邊界峰值分佈圖