## ROCLING 2021 AI Tutorial IV - 語音標記及建模工具套件 (Speech Labeling and Modeling ToolKit, SLMTK) 於個人化文字轉語音系統之建立
* Time: Saturday, October 16, 2021, 13:30-15:00, 15:30-17:00
* Speaker: [江振宇/語音暨多媒體訊號處理實驗室/國立臺北大學通訊工程學系](https://hackmd.io/@cychiang-ntpu/Hy2-xtHBw)
## 內容摘要
SLMTK 為 Speech Labeling and Modeling Toolkit 的縮寫,由國立臺北大學通訊工程學系「語音暨多媒體訊號處理實驗室」開發,SLMTK 是一套可快速且自動化將語音及文本標記成可以建立韻律產生模型以及語音合成模型的語音標記工具,韻律標記的標準以及語音標記格式皆已制訂於套件內,方便分析以及建模使用,亦可以建立出基礎的韻律產生模型以及語音合成模型。另外,SLMTK 產生的語言、語音、以及韻律標記,亦可提供語言語音研究者提供具有意義的輔助標記。
![](https://hackmd.io/_uploads/Bkyvp5PBK.png)
目前 SLMTK 已在多個語料庫上進行實驗,並已有商用產品使用 SLMTK 建立 TTS (text-to-speech) 應用。SLMTK 亦支援科技部 “研發整合漸凍症病友智慧溝通系統-成果加值及落地應用” (MOST-109-3011-F-011-001-) 之 “子計畫二:回聲計畫- 漸凍症病友文字轉語音系統之建立”,與「中華民國運動神經元疾病病友協會」以及「聲帆股份有限公司」合作,目前已建立 20 位漸凍症病友客製化的文字轉語音系統,能在輔具上輸入文字後,以病友自己特有的聲音發聲。
SLMTK 將用於「中華民國運動神經元疾病病友協會」的 Voicebank 活動,將大量處理語音捐獻者的語音,以協助改善或建立病友的客製化 TTS。目前 SLMTK 支援純中文以及中英夾雜的語音處理,未來將有支援台語以及客語的延伸模組。本 Tutorial 將會分成三部分講述:
1. Part I: Background (30 mins, 13:30-14:00)
2. Part II: Introduction to Text-to-Speech Synthesis (60 mins, 14:30-15:00)
3. Part III: 使用 SLMTK 建立客製化文字轉語音系統 (90 mins, 15:30-17:00)
參與此 Tutorial 的學員,將可以對語音處理以及文字轉語音系統有基礎的認識。
## SLMTK Working Group
* **國立臺北大學通訊工程學系「語音暨多媒體訊號處理實驗室」**
江振宇:主持人/系統整體設計/韻律產生系統
李武豪$^1$:博士研究生/文字分析系統/聲學模型/語音切割
林彥廷$^1$:博士研究生/語音合成系統
林書磊:碩士研究生/語音切割系統
林品翰:碩士研究生/使用者介面設計/網站維護
蘇家駒:大學部兼任助理/VoiceBank網站建立
洪紹瑋:碩士研究生/語音辨識/文字正規化
* **聲帆股份有限公司**
張文陽:創辦人/語料設計及處理/語音錄製
高晟哲:共同創辦人/系統整合/語料設計及處理/語音錄製
陳韋成:工程師/語音合成系統
江仁杰:工程師/語音合成系統
劉冠廷:共同創辦人/文本設計
> $^1$equal contribution
## Special Thanks to
* 陳信宏、王逸如教授/國立陽明交通大學電機系
* 廖元甫教授/國立臺北科技大學電子工程系
* 中華民國運動神經元疾病病友協會
* 林子逸:物理治療師/協調錄音時程/系統建立顧問
* 屈穎:協會理事/系統建立顧問
* 蘇麗梅:協會社工部主任/協調時程
* 其他夥伴
* 彭康硯:Yahoo/系統建立顧問
* 張軍毅:THT (taiwan hacker tech)/系統建立顧問
## Announcement
### :pushpin: VoiceBank 語音銀行+SLMTK 試用
因為 SLMTK 的運算資源有限,此次 Tutorial 開放 20 個名額於 Tutorial 的後半段可以錄製參與者自己的語音,並且使用自己的語音建立個人化文字轉語音系統,錄製的語音也將會捐贈於漸凍人協會的 VoiceBank 活動。
您可以在 VoiceBank 網站上錄製自己的語音,並且使用自己的語音建立個人化文字轉語音系統,錄製的語音也將會捐贈於漸凍人協會的 VoiceBank 活動,請參閱 VoiceBank 的使用條款:https://hackmd.io/@cychiang-ntpu/BkYkrSR-Y 了解細節。
欲參加者請準備好錄音設備和環境:
1. 請使用 PC 或是筆記型電腦,目前系統不支援行動裝置 (Pad or 手機)。
2. 麥克風,如果有USB端子的麥克風最好!筆電本身如果收音夠好可以直接使用 (如 MacBook)。
3. 錄音平台 (PC或筆電) 儘量不使用任何主動降噪功能(如ASUS主機板隨附的AI Noise-Canceling功能),避免屏蔽過多高頻音訊。
4. 找盡量安靜、無明顯干擾的空間,常見干擾如空間回音、風扇噪音、冷氣運轉聲(調低溫度及風量可有效改善)及敲擊聲等,皆應盡量減少。
欲參加者請於 10月16日(六)下午 15:00 以前 email 至以下 SLMTK Working Group 電子信箱: slmtk.ntpu@gmail.com
Title: 報名 VoiceBank+SLMTK
信件內容:
```
SLMTK Working Gorup 您好:
我要報名 VoiceBank+SLMTK 試用,以下是我的報名資訊:
1. 姓名:
2. 性別:
3. 母語:
```
SLMTK Working Group 會建立您的帳號,並 email 通知報名成功的人,謝謝您!
### :pushpin: SLMTK 正式版
**年底 SLMTK 會正式開放服務,讓國內外學術界使用,商業用途需要授權。**
目前僅有文字正規化服務正式上線,歡迎使用:http://slos.ce.ntpu.edu.tw/
---
## Tutorial Outline
### Part I: Background (30 mins, 13:30-14:00)
1. SLMTK 誕生的原因:
因應需求建立不同語者的 TTS,比如不同使用場景需要不同音色的語音,或是為了建立客製化(個人化)TTS 做為個人輔具使用(失語者)。面對的是少量語料的問題。
2. 傳統的 TTS 架構:
```graphviz
digraph {
compound=true
rankdir=LR
graph [ fontname="Source Sans Pro", fontsize=16 ];
node [ fontname="Source Sans Pro", fontsize=16];
edge [ fontname="Source Sans Pro", fontsize=16 ];
subgraph core {
I [label="文字\n(text)"] [shape=plaintext]
}
subgraph core {
A [label="文字分析\n(text analysis)"] [shape=box]
}
subgraph core {
B [label="韻律產生\n(prosody generation)"] [shape=box]
}
subgraph core {
C [label="語音合成\n(speech synthesis)"] [shape=box]
}
subgraph core {
D [label="合成語音\n(synthesized speech)"] [shape=plaintext]
}
I->A
A->B [ label="語言參數\n(linguistic parameters)" ];
B->C [ label="韻律參數\n(prosodic parameters)" ];
C->D
}
```
3. 大家比較喜歡 simplified 的 TTS 架構
```graphviz
digraph {
compound=true
rankdir=LR
graph [ fontname="Source Sans Pro", fontsize=16 ];
node [ fontname="Source Sans Pro", fontsize=16];
edge [ fontname="Source Sans Pro", fontsize=16 ];
subgraph core {
I [label="文字\n(text)"] [shape=plaintext]
}
subgraph core {
A [label="文字分析\n(text analysis)"] [shape=box]
}
subgraph core {
C [label="語音合成\n(speech synthesis)"] [shape=box]
}
subgraph core {
D [label="合成語音\n(synthesized speech)"] [shape=plaintext]
}
I->A
A->C [ label="語言參數\n(linguistic parameters)" ];
C->D
}
```
4. 大家更喜歡 end-to-end 的 TTS 架構
```graphviz
digraph {
compound=true
rankdir=LR
graph [ fontname="Source Sans Pro", fontsize=16 ];
node [ fontname="Source Sans Pro", fontsize=16];
edge [ fontname="Source Sans Pro", fontsize=16 ];
subgraph core {
I [label="文字\n(text)"] [shape=plaintext]
}
subgraph core {
C [label="文字轉語音/語音合成\n(TTS/speech synthesis)"] [shape=box]
}
subgraph core {
D [label="合成語音\n(synthesized speech)"] [shape=plaintext]
}
I->C
C->D
}
```
5. 廣泛建立個人化的 TTS 需要標示不同語者各自的說話方式,代表同樣的文字,不同語者可能有不同的抑揚頓挫或發音方法。不同語者需要標示個別的韻律結構。
7. 標示韻律結構(抑揚頓挫輕重緩急),早期大多以語音學專業人力來達成,SLMTK 使用全自動方法,範例:
![](https://hackmd.io/_uploads/B1NVx0SHK.png)
<center><iframe src="https://drive.google.com/file/d/1df-f69CGMgdtuVTi7QWQz2eeieGkBXRg/preview" width="400" height="70" allow="autoplay"></iframe></center>
> A labeling example by the PLMTK. The red asterisks and blue crosses in (a) to ($\text{c}$) are values of prosodic states and observed prosodic-acoustic features, respectively. The pitch-related breaks, syllable duration-related breaks, and pause-related breaks are labeled in (a), (b), and (d), respectively. Lexical words and the associated part-of-speeches are labeled at the word-beginning syllable positions of (d) and ($\text{c}$), respectively.
7. SLMTK 使用案例:報業新聞朗讀系統、回聲計畫漸凍症病友客製化/個人化 TTS
8. [回聲計畫簡介](https://hackmd.io/@cychiang-ntpu/BJ5Hfv2s_),病友原音和語音合成範例(第一級:001/003/016, 第二級:005/012, 第三級:008/015, 第四級:002)
9. 「VoiceBank 語音銀行」 的需求:越多人的語音,越能夠幫助建立不同語者的聲音。
### Part II: Introduction to Text-to-Speech Synthesis (60 mins, 14:30-15:00)
1. TTS as a mapping function
2. A Brief Review of Speech Generation Process
3. Information Extracted from Input Text
4. Segmental/Speech Analysis
5. Syllable Structure of Mandarin
6. Speech Production
7. Prosody - Supra-segmental Analysis
8. Prosody and Syntax
9. TTS Pipelines
### <center> --- Coffee Break (30 mins, 15:00-15:30) --- </center>
```
#### Voicebank 參與者:
1. 設定您的錄音環境 (找麥克風吧!)
2. 下載 [wavesurfer](https://sourceforge.net/projects/wavesurfer/)
3. 下載 [Praat](https://www.fon.hum.uva.nl/praat/)
#### 江振宇:
1. 設定不同語者的參數(config.speaker)
2. make config
```
### Part III: 使用 SLMTK 建立客製化文字轉語音系統 (90 mins, 15:30-17:00)
1. SLMTK in Brief
2. Live Recording on VoiceBank
3. Text Analysis
4. Speech Segmentation
5. Prosody-Linguistic Feature Integration
6. Prosody Labeler
7. Training of TTS Models