# 回聲計畫簡介 Part-1
江振宇 副教授
研究發展處 (CiE) 創新創業中心主任
通訊工程學系 (CE)
國立臺北大學 (NTPU)
@ APMSS 2022 2022/1/25
<br>
<br>
<small>
(c) Speech & Multimedia Signal Processing Lab (SMSPL), National Taipei University, New Taipei City, Taiwan, 2012-2021
</small>
---
## 計畫目的
<hr />
### 您的聲音,由我們重新創建
#### 不再是冷冰冰的 Google 小姐合成語音
- 患有肌萎縮性脊髓側索硬化症 (ALS) 的病友會逐漸喪失肌肉控制的能力,影響舌頭以及口腔的控制,進而無法流暢順利的發音以及溝通。
- 回聲計畫提供機會讓 ALS 病友錄製、重建自己獨特的聲音,以供病友或家屬能在輔具上輸入文字後,以病友自己獨特的聲音發聲。
---
## 團隊
<hr />
- [MNDA (Taiwan Motor Neuron Disease Association)/漸凍人協會](https://www.mnda.org.tw/)
- NTPU (National Taipei University)/國立臺北大學通訊工程學系 [語音暨多媒體訊號處理實驗室](https://hackmd.io/@cychiang-ntpu/Hy2-xtHBw))/執行單位
- [AIT (AcoustInTek)/聲帆股份有限公司](https://acoustintek.com/)/協力執行之新創公司
----
#### 計畫團隊 (1/3)
<hr />
NTPU「語音暨多媒體訊號處理實驗室」 (執行單位)
- 江振宇:計畫主持人/系統設計/韻律產生系統
- 李武豪:博士研究生/文字分析系統
- 林彥廷:博士研究生/語音合成系統
- 林品翰:碩士研究生/使用者介面設計/網站維護
- 林書磊:碩士研究生/語音切割系統
- 蘇家駒:大學部兼任助理/VoiceBank 網站建立
- 洪紹瑋:碩士研究生/語音辨識/文字正規化
- 吳上章:兼任助理/網站後端
- 彭敏鳳:行政助理/計畫核銷
----
#### 計畫團隊 (2/3)
<hr />
聲帆股份有限公司 (協力執行)
- 張文陽:創辦人/語料設計及處理/語音錄製
- 高晟哲:共同創辦人/系統整合/語料設計及處理/語音錄製
- 陳韋成:工程師/語音合成系統
- 江仁杰:工程師/語音合成系統
- 劉冠廷:共同創辦人/文本設計
----
#### 計畫團隊 (3/3)
<hr />
中華民國運動神經元疾病病友協會
* 林子逸:物理治療師/協調錄音時程/系統顧問
* 屈穎:協會理事/系統建立顧問
* 蘇麗梅:協會社工部主任/協調時程
<hr />
其他夥伴
* 彭康硯:Yahoo/系統建立顧問
* 張軍毅:THT(taiwan hacker tech)/系統建立顧問
---
## Terms
- Text to Speech (TTS): 文字轉語音
- Speech Synthesis: 語音合成
- Voice Conversion: 語音轉換 (俗稱變聲器)
- Speech to Text (STT): 語音轉文字
- Automatic Speech Recognition (ASR): 語音辨識
- Linguistic Features: 語言參數
- Prosody: 韻律 (抑揚頓挫輕重緩急)
- Acoustic Features: 聲學參數
---
## 計畫背景
<hr />
- 時間線
- 有關本案的國際計畫
- 客製化 TTS 的研究單位或廠商
- 關於本計畫的相關國內計畫
- 「問題描述」以及本計畫提出之「解決方案」
----
### 時間線
<hr />
- 2002: [ModelTalker](https://www.modeltalker.org/)/Nemours biomedical research and university of Delaware
- 2014: 漸凍人冰桶挑戰 (Ice Bucket Challenge) 引起大眾迴響,讓大家關注到漸凍症病友的相關議題。
- 2018: [Project Revoice](https://www.projectrevoice.org/)
- 2018/9-2019/8: [科技突圍計畫【以科技改善生活 (Life Fix) 實驗專案-第一案研發整合漸凍症病友智慧溝通系統](https://www.grb.gov.tw/search/planDetail?id=12708700)
- 2020/4-2021/8: [「回聲計畫」](https://hackmd.io/@cychiang-ntpu/BJ5Hfv2s_)
----
### 有關本案的國際計畫
<hr />
- [Project Revoice](https://www.projectrevoice.org/): 美國 ALS association 所建構的平台,目的是在讓病友知道目前已經有技術可以建立病友客製化的 TTS,希望漸凍症病友在確診後能盡快接洽建立個人客製化 TTS 的研究單位或廠商,並提供協會推薦的資訊。
- [Voice Banking](https://www.mndassociation.org/professionals/management-of-mnd/aac-for-mnd/): 英國運動神經元病協會 (MND) 提出,該協會對病友提出 voice/message banking 的建議
----
### 客製化 TTS 的研究單位或廠商 (1/3)
<hr />
1. Model Talker (www.modeltalker.org):屬於位於美國德拉瓦州的 Nemours Alfred I. duPont兒童醫院的 Nemours Speech Research Laboratory 建立,為規模最大的研究單位平台。
2. Cereproc Cerevoice ME (www.cereproc.com):2005年於英國的私人公司,提供以下語言的 voice cloning 技術:English, Spanish, French, Swedish, Italian and Romanian,最著名的是他們為愛爾蘭的腦性麻痺兒童建立屬於小孩個人的客製化文字轉語音系統。
----
### 客製化 TTS 的研究單位或廠商 (2/3)
<hr />
3. VocalID (https://vocalid.ai/):2014 年成立於美國麻州的私人公司,最著名的為他們的 voice banking 的建立方法。
4. Acapela MyOwnVoice DNN (https://www.acapela-group.com/):Acapela Group 公司於 2004 正式成立,是由下面三家歐洲的公司合併組成:Babel Technologies (BE), Elan speech (FR) and Infovox (SWE),2020年推出以DNN技術為基礎的 my-own-voice 客製化 TTS 予病友使用。
----
### 客製化 TTS 的研究單位或廠商 (3/3)
<hr />
5. The Voice Keeper (thevoicekeeper.com):2011年成立於以色列,2015年開始專門為漸凍症病友提供建立客製化TTS,可以只使用病友3分鐘的語音,便可以建立音色類似病友的系統。
6. SpeakUnique (https://www.speakunique.co.uk/about-us/)
<br>
<small> P.S. SpeakUnique 和 VocaliD 有提供mildly to moderately impaired 語音的修復方法 </small>
----
以上研究和服務都沒有針對中文發展
----
### 關於本計畫的相關國內計畫 (1/3)
<hr />
- 科技突圍計畫【以科技改善生活 (Life Fix) 實驗專案 - 第一案:研發整合漸凍症病友智慧溝通系統】,2018/9/1 – 2019/8/31,計畫編號: 107-3011-F-027-002
- 使用病友殘存語料
- 在有限、品質差的語料下進行了技術突破
- 使用 voice conversion (變聲器) 技術
- 建立初始 voice bank
----
### 關於本計畫的相關國內計畫 (2/3)
<hr />
voice conversion-based system ([Huang et al., 2019](https://aclanthology.org/2019.ijclclp-2.3))
```graphviz
digraph {
compound=true
rankdir=TD
graph [ fontname="Source Sans Pro", fontsize=20 ];
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
subgraph core {
A [label="text"] [shape=none]
}
subgraph core {
B [label="Google小姐/微軟文字轉語音"] [shape=box]
}
subgraph core {
C [label="標準語者合成語音"] [shape=none]
}
subgraph core {
D [label="變聲器"] [shape=box]
}
subgraph core {
E [label="目標語者語音"] [shape=none]
}
A -> B -> C -> D -> E
}
```
----
### 關於本計畫的相關國內計畫 (3/3)
<hr />
Voice Bank: https://ivoice.tw/
![](https://hackmd.io/_uploads/rJMWRlPsF.png)
----
### 問題描述
<hr />
1. 病友語音樣本稀少:之前留存之語音樣本少,無高音質錄音,導致無法順利重建語音。
2. voice bank 語料不足:若捐獻樣本夠大,即可利用語音合成技術來合成近似病友的原音。但 voice bank 在計畫結束短期內沒有搜集到類似病友音色的語音,緩不濟急。
3. 語音處理技術還有成長空間: 雖然利用了現今視為顯學的深度學習技術來提升殘存語料品質,但仍有提升之空間。
4. 沒有專門建立「中文」客製化 TTS 的研究單位或廠商。
----
### 「回聲計畫」提出之「解決方案」
<hr />
1. 與時間賽跑,在短時間內趁病友構音仍正常,趕緊錄製確診病友的語音。
2. 廣集不同狀況的漸凍症病友參加,狀況包含 1) 語音受損或未受損之病友、2) 需要或無需要任何呼吸設備之病友。
3. 直接採用病友錄製的語音,建立客製化的中文文字轉語音。
4. 若病友已經無法正常發音,可採用病友親屬的語音「就近取料」,「即使跟本人原音有些差距,但只要是親人的聲音也可以滿意接受」。
---
## 計畫架構
<hr />
```graphviz
digraph {
compound=true
rankdir=UD
graph [ fontname="Source Sans Pro", fontsize=20 ];
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
subgraph core {
A [label="總計畫:\n研發整合漸凍症病友智慧溝通系統\n成果加值及落地應用\n補助單位:科技部\n計畫編號:MOST109-3011-F027-001\n計畫主持人:劉益宏教授(台科大)"] [shape=box]
}
subgraph core {
B [label="子計畫一:\n多功能腦機介面\n溝通系統開發(叫人鈴)\n計畫主持人:劉益宏教授(台科大)\n執行單位:國立臺灣科技大學\n+國防醫學院\n+宏智生醫"] [shape=box]
}
subgraph core {
C [label="子計畫二:\n回聲計畫- 漸凍症病友文字轉語音系統之建立\n計畫主持人:江振宇副教授(臺北大學)\n執行單位:國立臺北大學+聲帆股份有限公司\n\n建立漸凍症病友客製化的文字轉語音系統,\n能在輔具上輸入文字後,\n以病友自己特有的聲音發聲"] [shape=box]
}
A -> B
A -> C
}
```
---
## 計畫執行方法及流程
<hr />
```graphviz
digraph {
compound=true
rankdir=TD
graph [ fontname="Source Sans Pro", fontsize=20 ];
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
subgraph core {
S [label="Start"] [shape=oval]
}
subgraph core {
A [label="語料設計以及語音分級"] [shape=box]
}
subgraph core {
B [label="語料錄製以及前處理"] [shape=box]
}
subgraph core {
C [label="病友語音模型之建立"] [shape=box]
}
subgraph core {
D [label="病友文字轉語音系統試用及評量"] [shape=box]
}
subgraph core {
E [label="End"] [shape=oval]
}
S -> A
{
rank=same
S;A;
}
A -> B -> C -> D
D -> E
{
rank=same
D;E;
}
D -> B
}
```
----
### 語料設計以及語音分級
<hr />
```graphviz
digraph {
compound=true
rankdir=TD
graph [ fontname="Source Sans Pro", fontsize=20 ];
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
subgraph core {
S [label="Start"] [shape=oval]
}
subgraph core {
A [label="設計語料文本 (NTPU+AIT)"] [shape=box]
}
subgraph core {
B [label="聯絡病友並提供文本 (MNDA)"] [shape=box]
}
subgraph core {
C [label="手機試錄少量(1-3句)文本提供計畫評估 (病友)"] [shape=box]
}
subgraph core {
D [label="語音分級評估 (NTPU+AIT)"] [shape=box]
}
subgraph core {
F [label="提供適合病友錄製之完整文本,讓病友先行溫稿 (NTPU+AIT)"] [shape=box]
}
subgraph core {
E [label="End"] [shape=oval]
}
S -> A
{
rank=same
S;A;
}
A -> B -> C -> D -> F
D -> A
A -> F
F -> E
{
rank=same
F;E;
}
}
```
----
### 語音分級
<hr />
- 聽病友錄製的 1 ~ 3 句語音後,針對語音內容的理解度 (intelligibility)、構音異常的程度、韻律流暢度、以及語速來做主觀評測標準,藉由最早錄製的 6 位病友的語音分析經驗,我們將病友分為四級:
<br>
<small>
| 語音分級| 特性描述 | |
| -------- | -------- |------|
| 第一級 | 構音及韻律完全,幾乎與正常狀況無異 | |
| 第二級 |韻律異常,語句朗讀較不通順| |
| 第三級 | 構音狀況些許異常,但可以大致聽出發音| |
| 第四級 | 構音狀況不完全,很難聽出發音| |
</small>
----
### 語料文本
<hr />
| <small>語料編號</small>| <small>語音分級</small>| <small>文本內容範例</small> | <small>數目</small> |
| ----------------------- | ---------------- | ----------------------------------------- |-----|
| <small>y1: 411 base syllables </small> | <small>3/4</small> | <small>知(ㄓ) 吃(ㄔ) 師(ㄕ) 日(ㄖˋ) ... 阿(ㄚ) </small>| |
| <small>w1: 2-syllable words</small> | <small>3/4</small> | <small>一樣 (ㄧˊ ㄧㄤˋ) ... 午安 (ㄨˇ ㄢ) </small> | |
| <small>s1: sentences A</small> | <small>1/2</small> | <small>以二號女友為例,她堅持不下廚,...就形成對立局面。</small> | <small>60 句 </small>|
| <small>s2: sentences A-1</small> | <small>1/2</small> | <small>我在網路上看到一家新開的餐廳,… </small> | <small>75 句</small> |
| <small>s3: sentences B</small> | <small>3/4</small> | <small>但可以想像,不外乎是來自貧窮。 </small> | <small>15 句 </small>|
----
### 語料錄製以及前處理
<hr />
```graphviz
digraph {
node [fontname = "Handlee"];
edge [fontname = "Handlee"];
S [
label = "Start";
shape = oval;
];
A [
label = "聯絡病友確定錄音時間地點 (MNDA+AIT)";
shape = box;
];
B [
label = "約定地點錄製語料,通常是病友家或是協會 (病友+AIT)";
shape = box;
];
C [
label = "語音剪接以及前處理 (AIT)";
shape = box;
];
D [
label = "依據病友錄製之語音進行文本校正 (AIT)";
shape = box;
];
F [
label = "語料足夠? (NTPU+AIT)";
shape = diamond;
];
E [
label = "End (語料錄製完成)";
shape = oval;
];
S -> A -> B -> C -> D -> F
F -> A [label="No"]
{
rank=same;
F; E
}
F -> E [ label = "Yes" ];
}
```
----
![](https://hackmd.io/_uploads/r1t9XLh6Y.png)
----
### 至病友家或是約定地點錄製病友語音
<hr />
<small>
1. 建立起一套完整服務,利用專業錄音設備、專門設計的文稿,並由專人協助語音存錄,減輕病友及家屬負擔
2. 台灣的環境噪音很多,在家裡錄音會有 reverb/echo
2. 許多參與病友已開始不良於行
3. 即使提供病友高音質的錄音麥克風,讓病友在家錄音,也不能保證錄製之語音符合建立語音合成的品質。國外的廠商可以這樣做,是因為他們已經有多年經驗,在 Website 或是 App 上可以自動偵測病友錄製的語音是否符合高音質或是朗讀正確的條件,這些有關 quality control 的問題,對於本計畫來說還沒有到足以完整考慮此問題的狀態,本計畫仍是先考慮將病友的語音能夠建立出病友能接受的合成語音音質,所以我們必須先把會影響TTS建立好壞的一些影響變因(比如錄音音質)先移除,先單純檢驗目前建立中文的客製化 TTS 的技術是否能符合此計畫需求。
</small>
----
![](https://hackmd.io/_uploads/HyhOHUhpt.png)
----
![](https://hackmd.io/_uploads/r1QiBLnTK.png)
----
### 病友語音模型之建立
<hr />
```graphviz
digraph {
node [fontname = "Handlee"];
edge [fontname = "Handlee"];
S [
label = "Start";
shape = oval;
];
A [
label = "抽取文本的語言參數 (詞以及發音)";
shape = box;
];
B [
label = "抽取語音的聲學參數 (聲紋以及音高)";
shape = box;
];
C [
label = "標記語音的韻律結構 (語氣/抑揚頓挫輕重緩急)";
shape = box;
];
D [
label = "建立韻律模型";
shape = box;
];
F [
label = "建立語音合成模型";
shape = box;
];
E [
label = "End";
shape = oval;
];
S -> A
{
rank=same;
S; A
}
A -> B -> C -> D -> F
F -> E
{
rank=same;
E; F
}
}
```
----
### 病友文字轉語音系統試用
<hr />
```graphviz
digraph {
node [fontname = "Handlee"];
edge [fontname = "Handlee"];
S [
label = "Start";
shape = oval;
];
A [
label = "提供病友線上系統帳號密碼 (NTPU)";
shape = box;
];
B [
label = "以網頁瀏覽器登入系統 (病友)";
shape = box;
];
C [
label = "於系統介面輸入文字 (病友)";
shape = box;
];
D [
label = "系統進行文字分析";
shape = box;
];
F [
label = "系統進行韻律產生";
shape = box;
];
G [
label = "系統進行語音訊號產生";
shape = box;
];
H [
label = "瀏覽器播放合成語音";
shape = box;
];
S -> A
{
rank=same;
S; A
}
A -> B -> C -> D
D -> F -> G
{
rank=same;
D; F; G;
}
G -> H
H -> C
}
```
---
## 語料庫錄製狀況
<hr />
- 錄製好的語料庫稱為 RVTW2020 語料庫,其中 RVTW 為 Revoice Taiwan 的縮寫。
</br>
<small>
<br>
| 語音分級 | 第一級 | 第二級 | 第二級 | 第四級 |
| --------| -------- | -------- | -------- | ----- |
| 人數 | 11 | 5 | 4 | 1 |
| 備註 | 註1 | 註2 | 註2| 註2|
<br>
* 註1:其中9位是病友,2位是代理語者
* 註2:皆是病友本人
</small>
----
### 語料庫較詳盡資訊 (1/4)
<hr />
<small>
| 語者 | 文本 | 分級 | 備註|
| --------| -------- | -------- | -------- |
| 001 | s1, s2 | 1 | 狀況良好 |
| 002 | s3, w1 | 4 | 構音出狀況,尤其是部分聲母無法發出,但音高控制尚可 |
| 003 | s1, s2 | 1 | 狀況良好 |
| 004 | s1, y1 | 3 | 構音出狀況 (未建立該病友系統) |
| 005 | s1, s2 | 2 | 客家腔、韻律不順 |
</small>
----
### 語料庫較詳盡資訊 (2/4)
<hr />
<small>
| 語者 | 文本 | 分級 | 備註|
| --------| -------- | -------- | -------- |
| 006 | s1 | 3 | 錄音狀況不佳,少量資料,音高很低 |
| 007 | s1, s2 | 2 | 台灣國語、鼻息聲 |
| 008 | s1, y1 | 3 | 呼吸器底噪,韻律不順 |
| 009 | s1, s2 | 1 | 狀況良好 |
| 010 | s1, s2 | 2 | 韻律不順、音量不一致 |
</small>
----
### 語料庫較詳盡資訊 (3/4)
<hr />
<small>
| 語者 | 文本 | 分級 | 備註|
| --------| -------- | -------- | -------- |
| 011 | s1, s2 | 1 | 語速偏快 |
| 012 | s1, s2 | 1 | 台灣國語 |
| 013 | s1, y1, w1 | 3 | 呼吸器底噪,語速較慢,但斷句沒有問題 |
| 014 | s1, s2 | 2 | 台灣國語、韻律不順 |
| 015 | s3, y1, w1 | 3 | 語速慢,構音出狀況,尤其是聲帶,但大部分發音可以聽清楚 |
</small>
----
### 語料庫較詳盡資訊 (4/4)
<hr />
<small>
| 語者 | 文本 | 分級 | 備註|
| --------| -------- | -------- | -------- |
| 016 | s1, s2 | 1 | 代理語者(為病友女兒),狀況良好 |
| 017 | s1, s2 | 1 | 狀況良好 (有一點口水音) |
| 018 | s1 | 1 | 狀況良好,台灣國語 |
| 019 | s1, s2 | 2 | 構音出現輕度變異,鼻音較重 |
| 020 | s1, s2 | 1 | 代理語者(聲優),狀況良好 |
| 021 | s1 | 3 | 構音出狀況,音高較低 |
</small>
{"metaMigratedAt":"2023-06-16T18:31:26.705Z","metaMigratedFrom":"YAML","title":"「回聲計畫」簡介 Part-1 @ APMSS 2022 2022/1/25","breaks":true,"slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"3a544f41-af8e-4bcb-a152-4b9505e01eb2\",\"add\":18766,\"del\":6070}]"}