本書圍繞語音識別的原理和應用講解,理論結合實際,采用大量插圖,輔以實例,力求深入淺出,讓讀者能較快地理解語音識別的基礎理論和關鍵技術。為了幫助讀者動手操作,提高實戰(zhàn)技能,本書最后還結合Kaldi、ESPnet和WeNet等開源工具,介紹了具體的工程實踐方法。
洪青陽,廈門大學副教授,天聰智能創(chuàng)始人,主要研究方向是語音識別、聲紋識別,先后主持國家自然科學基金兩三項,科技部創(chuàng)新基金兩項。牽頭組建廈門大學智能語音實驗室,帶領xmuspeechXMUSPEECH團隊連續(xù)兩屆獲東方語種識別(OLR)競賽第一名,成功研發(fā)國內第一套閩南語合成系統(tǒng)。具有豐富的工業(yè)界研發(fā)經(jīng)驗,與華為、云從、掌數(shù)科技、鼎橋等知名企業(yè)合作,承擔過大量的智能語音項目,核心技術應用到華為智能手機和全國十五幾個省市的司法/社保/證券/電力系統(tǒng)。長期從事本科生、研究生的語音識別教學工作,從最早的動態(tài)時間規(guī)整(DTW)、隱馬爾可夫模型(HMM)到最新的端到端(E2E)語音識別框架,與時俱進更新教學內容,積累了豐富的教學經(jīng)驗。李琳,廈門大學副教授,博士生導師,主要研究方向為語音信號處理、聲紋識別、智能系統(tǒng)設計,主持國家自然科學基金一項,負責國家科技部重點研發(fā)計劃項目子課題一項、省級科研項目一項,作為第一合作者參與國家自然基金兩項,曾獲福建省科技進步獎二等獎、福建省教學成果獎二等獎、廈門市科技進步獎一等獎。參與指導XMUSPEECHxmuspeech團隊連續(xù)兩屆獲東方語種識別競賽第一名。國際IEEE學會會員,CCF高級會員,NCMMSC常設機構委員會委員,CCF語音對話與聽覺專業(yè)組委員會委員,NCMMSC常設機構委員會委員。
第1章 語音識別概論 1
1.1 語音的產(chǎn)生和感知 1
1.2 語音識別過程 4
1.3 語音識別發(fā)展歷史 8
1.4 國內語音識別現(xiàn)狀 15
1.5 語音識別建模方法 18
1.5.1 DTW 19
1.5.2 GMM-HMM 19
1.5.3 DNN-HMM 20
1.5.4 E2E模型 22
1.6 語音識別開源工具 22
1.7 常用語音識別數(shù)據(jù)庫 23
1.8 語音識別評價指標 24
1.9 參考資料 25
第2章 語音信號基礎 28
2.1 聲波的特性 28
2.2 聲音的接收裝置 29
2.2.1 麥克風的性能指標 30
2.2.2 麥克風陣列 31
2.3 聲音的采樣 32
2.4 聲音的量化 33
2.5 語音的編碼 35
2.6 WAV文件格式 39
2.7 WAV文件分析 40
2.8 本章小結 43
思考練習題 43
第3章 語音特征提取 44
3.1 預處理 44
3.2 短時傅里葉變換 48
3.3 聽覺特性 51
3.4 線性預測 54
3.5 倒譜分析 55
3.6 常用的聲學特征 56
3.6.1 語譜圖 57
3.6.2 FBank 58
3.6.3 MFCC 59
3.6.4 PLP 60
3.7 本章小結 62
思考練習題 63
第4章 HMM 64
4.1 HMM的基本概念 66
4.1.1 馬爾可夫鏈 67
4.1.2 雙重隨機過程 68
4.1.3 HMM的定義 69
4.2 HMM的三個基本問題 70
4.2.1 模型評估問題 71
4.2.2 最佳路徑問題 74
4.2.3 模型訓練問題 76
4.3 本章小結 78
4.4 參考資料 79
思考練習題 79
第5章 GMM-HMM 80
5.1 概率統(tǒng)計 81
5.2 高斯分布 82
5.3 GMM 85
5.3.1 初始化 86
5.3.2 重估計 87
5.4 GMM與HMM的結合 88
5.5 GMM-HMM的訓練 94
5.6 模型自適應 96
5.6.1 MAP 96
5.6.2 MLLR 97
5.6.3 fMLLR 97
5.6.4 SAT 98
5.7 本章小結 98
5.8 參考資料 98
思考練習題 99
第6章 基于HMM的語音識別 100
6.1 建模單元 100
6.2 發(fā)音過程與HMM狀態(tài) 103
6.3 串接HMM 104
6.4 固定語法的識別 108
6.5 隨機語法的識別 113
6.6 音素的上下文建模 119
6.6.1 協(xié)同發(fā)音 120
6.6.2 上下文建模 121
6.6.3 決策樹 122
6.6.4 問題集 123
6.6.5 三音子模型的訓練 128
6.7 本章小結 129
思考練習題 130
第7章 DNN-HMM 131
7.1 深度學習 131
7.2 DNN 132
7.2.1 激活函數(shù) 133
7.2.2 損失函數(shù) 135
7.2.3 梯度下降算法 136
7.3 DNN與HMM的結合 138
7.4 不同的DNN結構 142
7.4.1 CNN 143
7.4.2 LSTM 147
7.4.3 GRU 147
7.4.4 TDNN 148
7.4.5 TDNN-F 151
7.5 本章小結 154
7.6 參考資料 155
思考練習題 155
第8章 語言模型 156
8.1 n-gram模型 158
8.2 評價指標——困惑度 162
8.3 平滑技術 163
8.3.1 Good-Turing折扣法 163
8.3.2 Witten-Bell折扣法 165
8.3.3 Katz回退法 166
8.3.4 Jelinek-Mercer插值法 169
8.3.5 Kneser-Ney插值法 170
8.4 語言模型的訓練 172
8.5 神經(jīng)網(wǎng)絡語言模型 175
8.6 本章小結 180
8.7 參考資料 180
思考練習題 181
第9章 WFST解碼器 183
9.1 基于動態(tài)網(wǎng)絡的Viterbi解碼 184
9.2 WFST理論 189
9.3 HCLG構建 193
9.3.1 H的構建 194
9.3.2 C的構建 195
9.3.3 L的構建 196
9.3.4 G的構建 197
9.3.5 HCLG合并 200
9.4 WFST的Viterbi解碼 202
9.4.1 Token的定義 202
9.4.2 Viterbi算法 203
9.5 Lattice解碼 210
9.5.1 主要數(shù)據(jù)結構 211
9.5.2 令牌傳播過程 212
9.5.3 剪枝策略 215
9.5.4 Lattice 216
9.6 本章小結 218
9.7 參考資料 218
思考練習題 218
第10章 序列區(qū)分性訓練 219
10.1 區(qū)分性準則 220
10.1.1 MMI 220
10.1.2 BMMI 221
10.1.3 MPE/sMBR 221
10.2 MMI求導過程 222
10.3 Lattice-based MMI 224
10.4 Lattice-free MMI 226
10.5 Kaldi Chain模型 228
10.6 本章小結 230
10.7 參考資料 230
思考練習題 231
第11章 端到端語音識別 232
11.1 CTC 233
11.1.1 損失函數(shù) 234
11.1.2 前向算法 238
11.1.3 后向算法 241
11.1.4 求導過程 242
11.1.5 CTC解碼 244
11.2 RNN-T 247
11.3 基于Attention的Encoder-Decoder模型 250
11.4 Hybrid CTC/Attention 253
11.5 Transformer 255
11.6 Conformer 258
11.7 本章小結 259
11.8 參考資料 259
思考練習題 261
第12章 Kaldi實踐 262
12.1 下載與安裝Kaldi 263
12.1.1 獲取源代碼 263
12.1.2 編譯 264
12.2 創(chuàng)建和配置基本的工程目錄 265
12.3 aishell語音識別工程 266
12.3.1 數(shù)據(jù)集映射目錄準備 267
12.3.2 詞典準備和lang目錄生成 269
12.3.3 語言模型訓練 271
12.3.4 聲學特征提取與倒譜均值歸一化 273
12.3.5 聲學模型訓練與強制對齊 275
12.3.6 解碼測試與指標計算 277
12.4 本章小結 279
第13章 ESPnet實踐 280
13.1 數(shù)據(jù)準備 280
13.1.1 映射文件準備 280
13.1.2 特征提取 281
13.1.3 數(shù)據(jù)擴增 282
13.1.4 詞典生成 282
13.1.5 數(shù)據(jù)打包 283
13.2 ESPnet配置文件 284
13.3 語言模型訓練 286
13.4 聲學模型訓練 287
13.4.1 聲學模型訓練腳本 287
13.4.2 CTC聲學模型訓練 288
13.4.3 Attention聲學模型訓練 289
13.4.4 RNN-T模型訓練 290
13.4.5 Transformer模型訓練 292
13.5 語音識別解碼 293
13.6 ESPnet訓練解碼可視化 294
13.6.1 ESPnet訓練參數(shù)可視化 294
13.6.2 ESPnet中的Attention可視化 295
13.6.3 ESPnet解碼結果可視化 296
13.7 ESPnet2 297
13.7.1 ESPnet2與ESPnet 297
13.7.2 數(shù)據(jù)準備 298
13.7.3 配置文件 299
13.7.4 模型訓練 300
13.7.5 訓練日志與可視化 303
13.7.6 性能對比 304
13.8 本章小結 305
13.9 參考資料 305
第14章 WeNet實踐 306
14.1 數(shù)據(jù)準備 306
14.1.1 映射文件準備 306
14.1.2 CMVN計算 307
14.1.3 詞典生成 307
14.1.4 數(shù)據(jù)打包 307
14.2 WeNet配置文件 308
14.3 聲學模型訓練 309
14.3.1 聲學模型訓練腳本 309
14.3.2 Transformer模型訓練 310
14.3.3 Conformer模型訓練 313
14.3.4 Unified Conformer模型訓練 314
14.3.5 U2++ Conformer模型訓練 315
14.4 Python環(huán)境解碼 315
14.5 WeNet 模型部署 317
14.5.1 模型導出 317
14.5.2 語言模型訓練 317
14.5.3 結合語言模型的解碼 318
14.6 WeNet 解碼結果可視化 318
14.7 本章小結 319
14.8 參考文獻 319
第15章 工業(yè)應用實踐 320
15.1 應用場景 321
15.2 引擎優(yōu)化 323
15.2.1 Kaldi方案 323
15.2.2 WeNet方案 327
15.3 工程部署 330
15.3.1 SDK封裝 330
15.3.2 語音云平臺 338
15.3.3 Kaldi嵌入式移植 342
15.3.4 WeNet端側部署 344
15.4 本章小結