• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

49

第 4 章 詞曲結構搭配

在此章我們希望自動搭配歌詞與只有人聲的主旋律,本研究主要從結構的角度出 發,在搭配的過程我們分成兩個層次,第一層為詞句/樂句結構粗略的對應,第 二層為漢字/音符細部的對應,其中有考慮到詞式/曲式結構。接下來的小節分別 介紹各層的對應方法。

4.1. 詞句與樂句結構對應

我們在說話的時候常常會說一句話停頓一下,並且停頓點不會斷在有意義詞彙中,

例如「聽音樂」這句話,我們可以說「聽」、「音樂」而不會用「聽音」、「樂」這 樣的節奏來說話,因為會無法傳達原本要表達的意義。而在音樂也有所為的樂句 (Phrase),樂句是由數個音符構成,長度不定,通常為歌手或是樂器手在一次呼 吸內可以唱完或演奏完的長度[41]。黃志華[36]與陳富容[40]在他們的著作中有提 到詞曲搭配的ㄧ些原則,其中都有詞句與樂句需互相配合,如此就是要避免歌詞 表達不正確的情況,例如圖 4.1 為芳艷芬《檳城艷》中兩句歌詞分別是「你看看 那邊」與「艷侶雙雙花蔭下」。中間黑粗線為樂句斷點,第一個樂句為四個音符,

第二個樂句為九個音符。可以看到詞彙「那邊」剛好斷在樂句斷點,原因是第一 個樂句只有四個音符,可是歌詞第一句卻有五個字,才會造成最後一個字不得不 合併到下個樂句,如此便是一個詞句與樂句搭配不好的例子。

圖 4.1 芳艷芬《檳城艷》歌詞

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

51

一個對應序列 M 必頇要符合三個限制,分別為(1)單調性:

mq−1 last element < mq(1);(2)連續性:mq 1 − mq−1 last element ∈ {(𝟏, 𝟏)};

(3)邊界性:m1 1 = 1,1 且 mK(last element) = (I, J)。

現在定義一個成本函數 ctotal,此函數是用來計算一個對應 m 的成本分數,ctotal

如(4.1):

ctotal m = α ∗ cnwr sidx, pidx + 1 − α ∗ cmer ge sidx, pidx (4.1)

其中 cnwr代表音字比(Note Word Ratio)成本,cmerge代表合併成本,α代表權重,sidx 代表 m 中所有仍組(tuple)中的 i 值集合,sidx = i ∀x: m x 中的 i 值}。pidx代表 m 中所有仍組中的 j 值集合,pidx = {j |∀x: m x 中的 j 值}。cwnr的定義如(4.2),cmerge 的定義如(4.3):

j∈pidx pj si

i∈sidx

為 NWR, 則 cwnr sidx, pidx = sin 2π ∗ NWR 4 ∗ singlimit +3π

2 + 1 (4.2)

令|pidx| + sidx − 2 為 MC,

則 cmerge sidx, pidx = sin 2π ∗ MC 4 ∗ mergelimit 1 , otherwise

, if MC > mergelimit (4.3)

其中 MC 表示合併次數(Merge Count),代表對應 m 中,可能是詞句合併的次數 或是樂句合併的次數。singlimit為一個參數,代表一字最多唱幾音。mergelimit為一 個參數,代表對應 m 中無論樂句或詞句的合併次數上限。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

52

圖 4.3 為成本函數曲線圖,圖 4.3(a)為 cnwr對於 t 的曲線圖,singlimit=3,相 較於線性呈現一個下凹的曲線,圖 4.3(b) 為 cmerge對於 t 的曲線圖,mergelimit=5,

相較於線性呈現一個上击的曲線。

(a) (b)

圖 4.3 成本函數曲線圖

(a) cnwr曲線圖,singlimit=3 (b) cmerge曲線圖,mergelimit=5

現在有了對應 m 的成本函數 ctotal,則我們希望求 S 與 P 之間找到一條長度 為 K,總成本最小的對應序列 M, C(S, P)如(4.4):

C S, P = Min

M Kq=1c(mq) min⁡(|S|, |P|)

(4.4)

其中|S|與|P|為序列 S 與 P 各自的長度。為了求 C(S, P)的解,我們利用動態規畫 的技巧,找到其一般關係的遞迴關係式為(4.5):

D(i, j) = min

D i − 1, a + ctotal < i, a , … , (i, j) >

D i − 1, b + ctotal(< i, b , … , (i, j) >) D c, j − 1 +ctotal(< c, j , … , (i, j) >)

D d, j − 1 +ctotal(< d, j , … , (i, j) >)

(4.5)

Duratoinmean + 2 8

相關文件