前 言
近年來(lái),隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,語(yǔ)音識(shí)別準(zhǔn)確率得到了大幅提升,由此帶來(lái)了基于語(yǔ)音交互應(yīng)用的豐富想象力,這些技術(shù)越來(lái)越多地影響著人們生產(chǎn)和生活的方方面面。其中,消費(fèi)級(jí)應(yīng)用包括智能音箱、手機(jī)語(yǔ)音助理、車(chē)載智能座艙、語(yǔ)音輸入法與翻譯機(jī)等;企業(yè)級(jí)應(yīng)用包括智能客服、語(yǔ)音質(zhì)檢、智慧教育、智慧醫(yī)療等。各類(lèi)智能語(yǔ)音應(yīng)用的蓬勃發(fā)展使得越來(lái)越多的人加入語(yǔ)音領(lǐng)域的研究和落地,共同推動(dòng)整個(gè)語(yǔ)音產(chǎn)業(yè)的發(fā)展。
得益于語(yǔ)音識(shí)別技術(shù)的蓬勃發(fā)展和識(shí)別率的節(jié)節(jié)攀升,業(yè)界涌現(xiàn)出眾多優(yōu)秀的端到端語(yǔ)音工具包,如Wenet,ESPNet,SpeechBrain等。盡管如此,2009年約翰霍普金斯大學(xué)夏季研討會(huì)孵化出的Kaldi工具箱,以其穩(wěn)定的算法效果,活躍的社區(qū)氛圍,得到了廣泛應(yīng)用,極大地降低了語(yǔ)音識(shí)別的上手門(mén)檻,也培養(yǎng)了大量的相關(guān)人才。目前,仍然有很多公司在使用基于Kaldi的工程方案。
由于語(yǔ)音交互技術(shù)涉及的算法與技術(shù)鏈條較長(zhǎng),因此已有的語(yǔ)音算法相關(guān)圖書(shū)主要集中在各類(lèi)語(yǔ)音算法的原理與訓(xùn)練上,缺乏從語(yǔ)音交互角度出發(fā),介紹語(yǔ)音交互所需的語(yǔ)音前后端各項(xiàng)算法和整體解決方案的相關(guān)圖書(shū)。在語(yǔ)音應(yīng)用的落地上,學(xué)術(shù)界也缺乏產(chǎn)業(yè)界的工程應(yīng)用落地經(jīng)驗(yàn)。本書(shū)將致力于拉進(jìn)學(xué)術(shù)界與產(chǎn)業(yè)界的距離,在系統(tǒng)地介紹語(yǔ)音交互流程中涉及的語(yǔ)音前端處理、語(yǔ)音識(shí)別和說(shuō)話(huà)人日志等算法原理的同時(shí),詳細(xì)介紹如何基于WebRTC,Kaldi和gRPC,從零構(gòu)建產(chǎn)業(yè)界穩(wěn)定、高性能、可商用的語(yǔ)音服務(wù)。
在前端算法的相關(guān)章節(jié)中,本書(shū)系統(tǒng)地介紹了語(yǔ)音活動(dòng)檢測(cè)、語(yǔ)音降噪、回聲消除、波束形成等常用的語(yǔ)音前端處理算法的原理,還針對(duì)各種算法在實(shí)際場(chǎng)景中的工程實(shí)現(xiàn)方法,提供了大量的經(jīng)驗(yàn)總結(jié)。除了介紹傳統(tǒng)信號(hào)的處理方法,本書(shū)還介紹了深度學(xué)習(xí)方法在語(yǔ)音前端領(lǐng)域中的發(fā)展和應(yīng)用現(xiàn)狀。
在語(yǔ)音后端算法方面,本書(shū)詳細(xì)介紹了語(yǔ)音識(shí)別中的特征提取、聲學(xué)模型、語(yǔ)言模型、解碼器和端到端語(yǔ)音識(shí)別,以及說(shuō)話(huà)人日志中的聲紋Embedding提取和聚類(lèi)算法。同時(shí),還介紹了如何基于Kaldi訓(xùn)練語(yǔ)音識(shí)別及說(shuō)話(huà)人日志模型。針對(duì)訓(xùn)練模型時(shí)的很多細(xì)節(jié)問(wèn)題,提供了詳細(xì)的解釋。
在語(yǔ)音算法工程化方面,本書(shū)介紹了如何利用WebRTC和Kaldi優(yōu)化處理流程,形成語(yǔ)音算法SDK;诹餍械挠糜谖⒎⻊(wù)構(gòu)建的RPC遠(yuǎn)程調(diào)用框架和SDK,進(jìn)一步介紹了如何實(shí)現(xiàn)一套方便用戶(hù)快捷接入的語(yǔ)音算法的微服務(wù)。
本書(shū)由楊學(xué)銳、晏超、劉雪松合作撰寫(xiě)。三位作者長(zhǎng)期在一線從事語(yǔ)音算法工作,書(shū)中內(nèi)容匯集了他們?cè)诋a(chǎn)業(yè)界模型訓(xùn)練和應(yīng)用落地的思考與經(jīng)驗(yàn)總結(jié),希望能給學(xué)術(shù)界的研究人員與產(chǎn)業(yè)界的從業(yè)人員帶來(lái)一絲啟發(fā)和幫助。其中楊學(xué)銳負(fù)責(zé)第1、4、5章的撰寫(xiě)及全書(shū)內(nèi)容的審核校對(duì),晏超負(fù)責(zé)第6、7、8章的撰寫(xiě)及工程代碼的實(shí)現(xiàn)調(diào)試,劉雪松負(fù)責(zé)第2、3章及第1章部分內(nèi)容的撰寫(xiě)和校對(duì)。
最后,感謝電子工業(yè)出版社李淑麗老師的辛苦工作,感謝吳伯庸和王金超對(duì)本書(shū)的貢獻(xiàn),感謝陳勇的審稿與校對(duì),感謝成書(shū)過(guò)程中給予過(guò)幫助的所有相關(guān)人士。
由于作者水平有限,書(shū)中如有任何錯(cuò)誤與不足,懇請(qǐng)廣大讀者批評(píng)指正并提出寶貴意見(jiàn)。
作者
2021年11日于上海
目 錄
第1章 語(yǔ)音識(shí)別概述 1
1.1 語(yǔ)音識(shí)別發(fā)展歷程 2
1.2 語(yǔ)音識(shí)別產(chǎn)業(yè)與應(yīng)用 6
1.2.1 消費(fèi)級(jí)市場(chǎng) 7
1.2.2 企業(yè)級(jí)市場(chǎng) 8
1.3 常用語(yǔ)音處理工具 10
1.3.1 WebRTC 10
1.3.2 Kaldi 12
1.3.3 端到端語(yǔ)音識(shí)別工具包 14
第2章 語(yǔ)音信號(hào)基礎(chǔ) 16
2.1 語(yǔ)音信號(hào)的聲學(xué)基礎(chǔ) 17
2.1.1 語(yǔ)音產(chǎn)生機(jī)理 17
2.1.2 語(yǔ)音信號(hào)的產(chǎn)生模型 19
2.1.3 語(yǔ)音信號(hào)的感知 20
2.2 語(yǔ)音信號(hào)的數(shù)字化和時(shí)頻變換 22
2.2.1 語(yǔ)音信號(hào)的采樣、量化和編碼 22
2.2.2 語(yǔ)音信號(hào)的時(shí)頻變換 25
2.3 本章小結(jié) 31
第3章 語(yǔ)音前端算法 32
3.1 語(yǔ)音前端算法概述 33
3.2 VAD 35
3.2.1 基于門(mén)限判決的VAD 36
3.2.2 基于高斯混合模型的VAD 38
3.2.3 基于神經(jīng)網(wǎng)絡(luò)的VAD 40
3.3 單通道降噪 43
3.3.1 譜減法 44
3.3.2 維納濾波法 46
3.3.3 音樂(lè)噪聲和參數(shù)譜減法 48
3.3.4 貝葉斯準(zhǔn)則下的MMSE 51
3.3.5 噪聲估計(jì) 56
3.3.6 基于神經(jīng)網(wǎng)絡(luò)的單通道降噪 61
3.4 回聲消除 65
3.4.1 回聲消除概述 66
3.4.2 線性自適應(yīng)濾波 69
3.4.3 分塊頻域自適應(yīng)濾波器 70
3.4.4 雙講檢測(cè) 72
3.4.5 延遲估計(jì) 75
3.4.6 殘留回聲消除 76
3.4.7 基于神經(jīng)網(wǎng)絡(luò)的回聲消除 78
3.5 麥克風(fēng)陣列與波束形成 79
3.5.1 麥克風(fēng)陣列概述 80
3.5.2 延遲求和波束形成 86
3.5.3 最小方差無(wú)失真響應(yīng)波束形成 89
3.5.4 廣義旁瓣對(duì)消波束形成 92
3.5.5 后置濾波 98
3.5.6 基于神經(jīng)網(wǎng)絡(luò)的波束形成 101
3.6 聲源定位 103
3.6.1 GCC-PHAT 104
3.6.2 基于自適應(yīng)濾波的聲源定位 105
3.6.3 SRP-PHAT 108
3.6.4 子空間聲源定位算法 108
3.6.5 基于神經(jīng)網(wǎng)絡(luò)的聲源定位 111
3.7 其他未盡話(huà)題 111
3.8 本章小結(jié) 113
第4章 語(yǔ)音識(shí)別原理 114
4.1 特征提取 116
4.1.1 特征預(yù)處理 116
4.1.2 常見(jiàn)的語(yǔ)音特征 119
4.2 傳統(tǒng)聲學(xué)模型 124
4.2.1 聲學(xué)建模單元 124
4.2.2 GMM-HMM 126
4.2.3 強(qiáng)制對(duì)齊 131
4.3 DNN-HMM 131
4.3.1 語(yǔ)音識(shí)別中的神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 132
4.3.2 常見(jiàn)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu) 137
4.4 語(yǔ)言模型 145
4.4.1 n-gram語(yǔ)言模型 145
4.4.2 語(yǔ)言模型的評(píng)價(jià)指標(biāo) 148
4.4.3 神經(jīng)語(yǔ)言模型 148
4.5 WFST解碼器 151
4.5.1 WFST原理 151
4.5.2 常見(jiàn)的WFST運(yùn)算 152
4.5.3 語(yǔ)音識(shí)別中的WFST解碼器 155
4.5.4 令牌傳遞算法 157
4.5.5 Beam Search 159
4.6 序列區(qū)分性訓(xùn)練 160
4.6.1 MMI和bMMI 161
4.6.2 MPE和sMBR 161
4.6.3 詞圖 161
4.6.4 LF-MMI 162
4.7 端到端語(yǔ)音識(shí)別 163
4.7.1 CTC 163
4.7.2 Seq2Seq 166
4.8 語(yǔ)音識(shí)別模型評(píng)估 169
4.9 本章小結(jié) 171
第5章 中文普通話(huà)模型訓(xùn)練——以multi_cn為例 172
5.1 Kaldi安裝與環(huán)境配置 173
5.2 Kaldi中的數(shù)據(jù)格式與數(shù)據(jù)準(zhǔn)備 174
5.3 語(yǔ)言模型訓(xùn)練 178
5.4 發(fā)音詞典準(zhǔn)備 180
5.5 特征提取 184
5.6 Kaldi中的Transition模型 186
5.7 預(yù)對(duì)齊模型訓(xùn)練 187
5.7.1 單音素模型訓(xùn)練 187
5.7.2 delta特征模型訓(xùn)練 190
5.7.3 lda_mllt特征變換模型訓(xùn)練 191
5.7.4 說(shuō)話(huà)人自適應(yīng)訓(xùn)練 192
5.8 數(shù)據(jù)增強(qiáng) 193
5.8.1 數(shù)據(jù)清洗及重分割 194
5.8.2 速度增強(qiáng)和音量增強(qiáng) 194
5.8.3 SpecAugment 196
5.9 I-Vector訓(xùn)練 197
5.9.1 對(duì)角UBM 197
5.9.2 I-Vector提取器 198
5.9.3 提取訓(xùn)練數(shù)據(jù)的I-Vector 199
5.10 神經(jīng)網(wǎng)絡(luò)訓(xùn)練 199
5.10.1 Chain模型 200
5.10.2 Chain模型數(shù)據(jù)準(zhǔn)備 202
5.10.3 神經(jīng)網(wǎng)絡(luò)配置與訓(xùn)練 203
5.11 解碼圖生成 209
5.12 本章小結(jié) 210
5.13 附錄 211
5.13.1 xconfig中的描述符及網(wǎng)絡(luò)配置表 211
5.13.2 Chain模型中的egs 215
5.13.3 Kaldi nnet3中迭代次數(shù)和學(xué)習(xí)率調(diào)整 217
第6章 基于Kaldi的說(shuō)話(huà)人日志 219
6.1 說(shuō)話(huà)人日志概述 220
6.1.1 什么是說(shuō)話(huà)人日志 220
6.1.2 說(shuō)話(huà)人日志技術(shù) 220
6.1.3 說(shuō)話(huà)人日志評(píng)價(jià)指標(biāo) 227
6.2 聲紋模型訓(xùn)練——以CNCeleb為例 229
6.2.1 聲紋數(shù)據(jù)準(zhǔn)備 230
6.2.2 I-Vector訓(xùn)練 240
6.2.3 X-Vector訓(xùn)練 243
6.2.4 LDA/PLDA后端模型訓(xùn)練 248
6.2.5 說(shuō)話(huà)人日志后端模型訓(xùn)練 250
6.3 本章小結(jié) 253
第7章 基于Kaldi的語(yǔ)音SDK實(shí)現(xiàn) 254
7.1 語(yǔ)音特征提取 258
7.1.1 音頻讀取 258
7.1.2 音頻特征提取 261
7.2 基于WebRTC的語(yǔ)音活動(dòng)檢測(cè) 268
7.3 說(shuō)話(huà)人日志模塊 273
7.3.1 I-Vector提取 275
7.3.2 X-Vector提取 287
7.3.3 說(shuō)話(huà)人日志算法實(shí)現(xiàn) 299
7.4 語(yǔ)音識(shí)別解碼 313
7.5 本章小結(jié) 324
第8章 基于gRPC的語(yǔ)音識(shí)別服務(wù) 325
8.1 gRPC語(yǔ)音服務(wù) 326
8.2 ProtoBuf協(xié)議定義 327
8.3 基于gRPC的語(yǔ)音服務(wù)實(shí)現(xiàn) 329
8.3.1 gRPC Server實(shí)現(xiàn) 330
8.3.2 gRPC Client實(shí)現(xiàn) 337
8.3.3 gRPC語(yǔ)音服務(wù)的編譯與測(cè)試 343
8.4 本章小結(jié) 346
參考文獻(xiàn) 347