• 沒有找到結果。

第二章 語料庫音節邊界之擷取

採用大型語料庫為基礎之TTS 系統(Corpus-base TTS),首要工作在建立一個 足夠大型的語音資料庫,以供未來語音合成單元的挑選,同時語料庫中每個可能 構成合成單元之音節,其音節邊界的決定對Corpus-base TTS 系統所合成出的語 音品質有相當重要的影響,音節邊界不夠準確將會增加合成單元在串接時彼此的 不匹配程度,嚴重時甚至影響輸出的語意,因此本章將提出如何提升語料庫音節 邊界準確度的作法,以做為往後研究之基礎。

2.1 語料庫之說明

本論文所使用的語料為自己錄製的 Treebank 語料庫,語料文字內容為來自 中央研究院中文文句結構樹資料庫1.1 版(Sinica Treebank Version 1.1),我們請了 一位專業的女性廣播員幫我們錄音,其錄音軟硬體設備及格式詳細如下:

表格 2-1:錄音軟硬體設備規格表

錄音軟體 Cool Edit Pro 直接錄成聲音檔案

麥克風 單一指向性(uni-directional)

錄音場所 普通房間

錄音情境 依照所選出文稿唸出

取樣頻率(sampling rate) 20kHz

發音速度 每秒約4.6 個音節

取樣大小 16 bits(位元)

聲道 單聲(mono)

檔案格式 pcm

2.2 基本HMM切割之建立

2.2.1 Acoustic model 建立

實驗之初,我們以手工切割treebank 語料庫前 110 句,排除第 10 句以後,

個位數編號1,6,9 的音檔,其餘語料(80 句共 10,217 syllables)作為 HMM 之訓練 語料,而排除之語料(30 句共 3,824 syllables)作為往後所需之測試語料。

以下為所使用參數及參數設定:

● 12 維 MFCC 參數。

● 1 維能量參數

● frame size:32ms。

● frame shift:10ms。

表格

2.3.1 Segmental K-mean algorithm

/錄音環境等各種影響,因此若能利用盡量訊

因此我們試著以Segmental K-mean algorithm 不斷利用 K-means 將資料以片段 分群,同時利用Viterbi algorithm 找到 optimum segmental state sequence,反覆重

新估算每個片段之模型直至 HMM

實驗步驟 的設為local breathe m del

n e :

local sp m 進入下一syllable 的 initial model。

inial 部分)至 nitia

(3) syllable finial model 經過local sp model、 odel,

因此我們得到在區間前一syllable(f 後一syllable(i l 部分)之 轉移如下圖。

圖2-2 silence refinement 之狀態轉移

其中 finial model 和 initial model 的初始狀態同 globe model。接著執行 Segmental K-mean algorithm 隨後在每次的 iteration 中,由更新的切割位置訓 練新的finial model 和 initial model,反覆執行直至 likelihood 收斂為止。

4. sp2 detection:

因步驟3 所使用的 sp model 和 breathe model 皆由原始切割位置所得,並且限 制從finial model 到 breath model、breath model 到 initial mode 皆需通過 sp model,若一 finial 區域後段含有較嚴重的雜訊,如短暫的喉音或錄音環境之 迴音部分(在此稱 sp2,如下圖),則仍需剔除。

圖2-3 silence refinement 後之切割位置

為了找出sp2,我們採取的方法有兩步驟:

a. 搜尋可能為 sp2 之區間

直觀上可能為 sp2 的部分,皆屬 finial 區間後段能量較小的部分,固我們再 次始用Segmental K-mean algorithm,只使用 1 維能量參數,將 finial 區間分 為兩片段,同時為了強化Segmental K-mean algorithm 分出前段能量較大,後 段能量較小的兩區間,初始值分別給定為前1/2 之能量最大值和後 1/2 之能量 frame,likelihood sp2 大於 likelihood finial,將 finial-sp 之邊界向前位移 k 個 frame shift (如下)。

圖2-4 經過 sp2 detection 後之結果 其中global sp2 model 為由少許人工標記片段所求而得。

5. 以上 4 步驟得到較準確的切割位置。

以下為流程圖:

圖2-5 修改音節切割位置流程圖

實驗結果

表格2-3 切割位置修改前後之比較(內部測試)

Tolerance 5ms 10ms 15ms 20ms 25ms 30ms 35ms 40ms Syllable begin 24.4 48.4 67.9 80.8 88.5 91.5 93.7 95.1 修正前

Syllable end 25.9 46.8 62.9 74.3 80.9 85.2 88.3 90.6 Syllable begin 35.2 64.2 79.8 88.0 92.4 94.6 96.2 97.2 修正後

Syllable end 28.1 49.9 66.1 76.8 83.6 88.0 91.1 93.4

表格 2-4 切割位置修改前後之比較(外部測試)

Tolerance 5ms 10ms 15ms 20ms 25ms 30ms 35ms 40ms Syllable begin 24.5 48.8 68.5 81.2 88.7 91.7 94.0 95.1 修正前

Syllable end 25.0 45.5 62.2 74.3 81.3 85.6 88.7 91.0 Syllable begin 36.8 64.4 78.5 86.0 90.6 93.0 94.8 96.1 修正後

Syllable end 26.2 48.3 63.2 74.0 80.4 85.8 89.0 92.4

2-6 Syllable Begin 切割位置修改前後比較

2-7 Syllable End 切割位置修改前後比較

整體來說切割位置的確獲得改善,syllable begin 較為明顯,syllable end 則是 略微往前一syllable 移動,我們將在下一小節進一步分析改善後的切割位置。

2.4 修正後的切割位置分析

我們考慮三種不同的short pause 長度,分開觀察切割位置 B 和切割位置 C 的 差異。

a. 原手工標記 sp duration < 5ms

(inside test 佔 56.5% / outside test 佔 56.7%)。

b. 原手工標記 sp duration 介於 5ms ~ 50ms (inside test 佔 21.5% / outside test 佔 20.6%)。

c. 原手工標記 sp duration > 50ms。

(inside test 佔 22.0% / outside test 佔 22.7%)

2-8 Sp < 5ms Syllable Begin 切割位置修改前後比較

2-9 Sp < 5ms Syllable End 切割位置修改前後比較

2-10 Sp:5~50 ms Syllable Begin 切割位置修改前後比較

圖2-11 Sp:5~50ms Syllable End 切割位置修改前後比較

2-12 Sp > 50ms Syllable Begin 切割位置修改前後比較

2-13 Sp > 50ms Syllable End 切割位置修改前後比較

由觀察可得到下面幾點結論:

a. 在原手工標記 sp duration < 5ms 時,修改前後改變有限。

b. 在原手工標記 sp duration 介於 5ms ~ 50ms 的情況下,syllable begin 在切割位

置誤差在20ms~30ms 時,都能有不錯的修正能力,而 syllable end 整體上則是 都會往前一syllable 一側移動。

c. 在原手工標記 sp duration > 50ms 時,syllable begin 在切割位置誤差在 20ms ~ 30ms 時,和 sp duration 介於 5ms ~ 50ms 的結果一致,都能有不錯的修正能力,

而這也是基本HMM 切割容易有誤差的區間,而 syllable end 整體上則是會改 善原本過長的short pause 長度,同時往前一 syllable 移動。

d. 我們發現在含有 short pause 中,只要原先的切割位置不偏離太遠(約 30ms) Segmental K-mean algorithm 能帶來良好的改善,而如果原先切割位置就偏離太 遠,則此方法會因為本來local 的資料不好,而無力改善。

小結

由觀察中發現Segmental K-mean algorithm 受到原先切割位置的影響,若原始 切割位置即有較大的偏離則難以調回,亦或雖然原先切割位置沒有較大的偏移 量,但因原先切割位置兩側finial phoneme 區間和 initial phoneme 區間所求出的 mean 和 variance 已經被鄰近的較為強烈之信號所影響(如下圖)則也無法調回期待 之位置。

圖2-14 尚未更正之例子

雖然修改後的切割位置並沒有達到百分百的完美,但已有相當的改善,往後 我們將使用此較好之切割位置做進一步之研究。

第三章 音節特徵矩陣之建立和分類

一個良好的Corpus-base TTS 系統,除了要求音節邊界的準確度外,如何挑 選出合適的合成單元亦是重要的課題,因語音訊號為時變訊號,即使是同一語者 講述同一的音節,此一音節之特性亦會受到此前後音節、語法結構、文法角色、

和語者當時的心情、健康狀態等影響,而導致每一音節其語音訊號都不全然相同。

在大型語料庫中,常會遇到的課題便是同一音節在語料庫中出現極多次數,

即使加上許多文法上的限制在挑選合成單元時,同一音節還是會有不少選項(出 現頻率高之音節尤其明顯),因此此一章節我們試著將語料庫中出現頻率前十名 之聲調音節,分別建立特徵矩陣,分類並予以標記觀察其特性。

3.1 音節特徵矩陣之建立

3.1.1 音節內部之分割

為了建立符合一音節特徵的矩陣,必須取出能代表一音節特徵的參數,而語 音訊號的特色為有時序的特性,每一音節能夠視為多個片段,多個不同特色之訊 號所串接成。因此在固定住音節的邊界後,我們設定音框長度為 32ms,音框位 移為10ms ,使用 12 維 MFCC 參數訓練出 Syllable 之模型,並使用此模型和 Viterbi algorithm 在 Syllable 內部分割出數個特性相似的狀態,而音節發音含空韻母 (FNULL)/空聲母(INULL)及聲母為ㄅㄉㄍ三類的 Syllable,其轉換狀態為 6 個 State,其餘音節為 8 個 State,狀態和狀態之間不可跳躍。其中訓練之聲調音節 分別為:de5、yi4、bu4、ren2、shi4、you3、zai4、wo3、yi3、ta1。

表格3-1 各音節、內部狀態平均長度

音節 state1 state2 state3 state4 state5 state6 state7 state8 平均長度(ms) 111.2 16.4 23.1 25.4 18.4 13.7 13.6

3.1.2 MFCC、Energy、Duration 特徵矩陣之建立

在得到語料庫中每個音節內部的邊界後,我們對上述之tonal syllable 抽取特 徵參數,令音框長度為20ms,音框位移為 5ms,分別建立 MFCC、Energy、Duration 特徵矩陣。

1,1 2,1 ,1

MFCC MFCC MFCC N MFCC

s s s

的HMM state index;peb ns,pee ns, 分別為第 個sample 與前、後一個音節間 short pause (sp)中能量的最小值(energy dip)。

n

3.2 使用主成分分析法(Principal Component Analysis, PCA)音節分

在得到後一 tonal syllable 的特徵矩陣 後,我們先將每一變數減去其平 均值,同時為了方便觀察和降低運算量,我們將減去平均值的super vector 做 奇異值分解(singular value decomposition,SVD)。

Φ

Φ'

[ ]

表格3-2 MFCC 特徵矩陣之主軸和 Pitch/Energy/Duration 相關係數 軸1 軸 2 軸 3 軸 4 軸 5 軸 6 軸 7 軸 8 軸 9 Energy 0.55 -0.07 0.17 -0.08 -0.08 -0.38 0.18 -0.29 0.03 yi4

Duration -0.1 -0.18 0.06 -0.12 -0.35 0.27 -0.07 -0.01 -0.05 Pitch -0.44 0.17 -0.27 -0.05 -0.14 -0.08 0.06 -0.1 0.07 Energy -0.21 0.12 -0.17 0.1 -0.16 0.11 0.08 -0.08 0.08 shi4

Duration 0.38 -0.36 0.09 -0.09 0.08 -0.12 -0.1 0.03 0

Pitch 0.13 0.27 0.54 -0.04 0.12 0.02 -0.14 0.36 0.02 Energy 0.29 0.29 0.35 0.19 -0.02 0.13 -0.25 0.17 0.03 you3

Duration -0.12 0.01 -0.01 -0.05 0.06 -0.02 0.03 -0.03 -0.01 Pitch -0.03 0.08 -0.71 0.06 -0.13 0.05 -0.03 -0.33 0.11 Energy 0.08 -0.27 0.08 0.07 -0.32 -0.08 -0.01 -0.07 0.15 ta1

Duration -0.24 0.36 0.16 0 -0.03 0.3 0.05 -0.05 0.12 由觀察可發現,MFCC 特徵矩陣做 SVD 後主軸的確和韻律參數相關,不同的音 節有不同的相關性,而且隨著主軸排序的增加,和韻律參數的相關性也逐漸遞減。

表格 3-3 Energy 特徵矩陣之主軸和 Pitch/Duration 相關係數 軸1 軸2 軸3 軸4 軸5 軸6

Pitch 0.27 -0.49 0.09 -0.05 -0.02 -0.23

表格 3-4 Duration 特徵矩陣之主軸和 Pitch/Energy 相關係數 軸1 軸2 軸3 軸4 軸5 軸6

Energy 0.42 -0.11 0.08 0.03 -0.16 -0.26 Pitch 0.52 -0.03 -0.01 -0.11 0.01 -0.05

同樣的,我們發現使用Energy 特徵矩陣、Duration 特徵矩陣亦和韻律參數相關,

隨著主軸排序的增加,相關性逐漸遞減。

在此定義降低維度至K維後,所能解釋的變異比例R : 2

在觀察各個特徵矩陣之奇異值後,令MFCC 特徵矩陣K =10,Energy、Duration

特徵矩陣 ,做為接下來研究所考慮的主軸,以下為各個音節特徵矩陣之解

yi4 61.92% 96.45% 97.12%

bu4 67.13% 94.23% 99.62%

yi3 60.84% 97.37% 98.05%

ta1 57.03% 91.08% 99.19%

我們將第一維主軸 和減去其平均值後之特徵參數 做內積,使用 VQ 將

3.3 分類音節之特性觀察

3.3.1 第一主軸分類之極端例子

在觀察以 MFCC 特徵矩陣第一主軸所分出的極端的例子中(第一類和第十二 類),我們發現到主要的差異可由波型上觀察,如波型上是否完整或破碎,亦或 有連音現像(單一側/兩側),又或者因某些因素(如前後音節等)導致發音方式不 同,語調不一致。以下有三個例子:

例 1: 下圖中四個波型 a、b、c、d 依順分別為:zai4、ta1、zai4、ta1

圖 3-1 波型完整與破碎之例子

由圖中可看出,後兩個波型比前兩個波型來得破碎,而且有喉音的現像。

例 2:下圖中四個波型a、b、c、d 依順分別為:you3、yi3、you3、yi3

圖 3-2 連音差異之例子

由圖中可看出,前兩個波型分別和後、前音節有連音,而後兩波型則不明顯。

例 3:下圖中四個波型a、b、c、d 依順分別為:bu4、bu4、ren2、ren2

(a) (b) (c) (d)

圖 3-3 波型明顯不同之例子 由圖中可看出前後兩音節明顯不同。

3.3.2 K 維主軸之分類群組之特性

在上一小節中,我們確信特徵矩陣之主軸的確可將音節依照某些特性分群,

這一小節中,我們將原本考慮的第一維主軸增加為K 維主軸,以提高可解釋的變 異比例(R ),同時我們將音節分為 5 類。 2

在將所有音節之特徵矩陣降至 維分類後,相較於不同類,被歸為相同一類

之音節必有其相似處,且愈靠近群組中心之例子愈能突顯出群組之特性,因此我

之音節必有其相似處,且愈靠近群組中心之例子愈能突顯出群組之特性,因此我

相關文件