目 录
第1章 语音识别概述 1
1.1 语音识别发展历程 2
1.2 语音识别产业与应用 6
1.2.1 消费级市场 7
1.2.2 企业级市场 8
1.3 常用语音处理工具 10
1.3.1 WebRTC 10
1.3.2 Kaldi 12
1.3.3 端到端语音识别工具包 14
第2章 语音信号基础 16
2.1 语音信号的声学基础 17
2.1.1 语音产生机理 17
2.1.2 语音信号的产生模型 19
2.1.3 语音信号的感知 20
2.2 语音信号的数字化和时频变换 22
2.2.1 语音信号的采样、量化和编码 22
2.2.2 语音信号的时频变换 25
2.3 本章小结 31
第3章 语音前端算法 32
3.1 语音前端算法概述 33
3.2 VAD 35
3.2.1 基于门限判决的VAD 36
3.2.2 基于高斯混合模型的VAD 38
3.2.3 基于神经网络的VAD 40
3.3 单通道降噪 43
3.3.1 谱减法 44
3.3.2 维纳滤波法 46
3.3.3 音乐噪声和参数谱减法 48
3.3.4 贝叶斯准则下的MMSE 51
3.3.5 噪声估计 56
3.3.6 基于神经网络的单通道降噪 61
3.4 回声消除 65
3.4.1 回声消除概述 66
3.4.2 线性自适应滤波 69
3.4.3 分块频域自适应滤波器 70
3.4.4 双讲检测 72
3.4.5 延迟估计 75
3.4.6 残留回声消除 76
3.4.7 基于神经网络的回声消除 78
3.5 麦克风阵列与波束形成 79
3.5.1 麦克风阵列概述 80
3.5.2 延迟求和波束形成 86
3.5.3 最小方差无失真响应波束形成 89
3.5.4 广义旁瓣对消波束形成 92
3.5.5 后置滤波 98
3.5.6 基于神经网络的波束形成 101
3.6 声源定位 103
3.6.1 GCC-PHAT 104
3.6.2 基于自适应滤波的声源定位 105
3.6.3 SRP-PHAT 108
3.6.4 子空间声源定位算法 108
3.6.5 基于神经网络的声源定位 111
3.7 其他未尽话题 111
3.8 本章小结 113
第4章 语音识别原理 114
4.1 特征提取 116
4.1.1 特征预处理 116
4.1.2 常见的语音特征 119
4.2 传统声学模型 124
4.2.1 声学建模单元 124
4.2.2 GMM-HMM 126
4.2.3 强制对齐 131
4.3 DNN-HMM 131
4.3.1 语音识别中的神经网络基础 132
4.3.2 常见的神经网络结构 137
4.4 语言模型 145
4.4.1 n-gram语言模型 145
4.4.2 语言模型的评价指标 148
4.4.3 神经语言模型 148
4.5 WFST解码器 151
4.5.1 WFST原理 151
4.5.2 常见的WFST运算 152
4.5.3 语音识别中的WFST解码器 155
4.5.4 令牌传递算法 157
4.5.5 Beam Search 159
4.6 序列区分性训练 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 端到端语音识别 163
4.7.1 CTC 163
4.7.2 Seq2Seq 166
4.8 语音识别模型评估 169
4.9 本章小结 171
第5章 中文普通话模型训练——以multi_cn为例 172
5.1 Kaldi安装与环境配置 173
5.2 Kaldi中的数据格式与数据准备 174
5.3 语言模型训练 178
5.4 发音词典准备 180
5.5 特征提取 184
5.6 Kaldi中的Transition模型 186
5.7 预对齐模型训练 187
5.7.1 单音素模型训练 187
5.7.2 delta特征模型训练 190
5.7.3 lda_mllt特征变换模型训练 191
5.7.4 说话人自适应训练 192
5.8 数据增强 193
5.8.1 数据清洗及重分割 194
5.8.2 速度增强和音量增强 194
5.8.3 SpecAugment 196
5.9 I-Vector训练 197
5.9.1 对角UBM 197
5.9.2 I-Vector提取器 198
5.9.3 提取训练数据的I-Vector 199
5.10 神经网络训练 199
5.10.1 Chain模型 200
5.10.2 Chain模型数据准备 202
5.10.3 神经网络配置与训练 203
5.11 解码图生成 209
5.12 本章小结 210
5.13 附录 211
5.13.1 xconfig中的描述符及网络配置表 211
5.13.2 Chain模型中的egs 215
5.13.3 Kaldi nnet3中迭代次数和学习率调整 217
第6章 基于Kaldi的说话人日志 219
6.1 说话人日志概述 220
6.1.1 什么是说话人日志 220
6.1.2 说话人日志技术 220
6.1.3 说话人日志评价指标 227
6.2 声纹模型训练——以CNCeleb为例 229
6.2.1 声纹数据准备 230
6.2.2 I-Vector训练 240
6.2.3 X-Vector训练 243
6.2.4 LDA/PLDA后端模型训练 248
6.2.5 说话人日志后端模型训练 250
6.3 本章小结 253
第7章 基于Kaldi的语音SDK实现 254
7.1 语音特征提取 258
7.1.1 音频读取 258
7.1.2 音频特征提取 261
7.2 基于WebRTC的语音活动检测 268
7.3 说话人日志模块 273
7.3.1 I-Vector提取 275
7.3.2 X-Vector提取 287
7.3.3 说话人日志算法实现 299
7.4 语音识别解码 313
7.5 本章小结 324
第8章 基于gRPC的语音识别服务 325
8.1 gRPC语音服务 326
8.2 ProtoBuf协议定义 327
8.3 基于gRPC的语音服务实现 329
8.3.1 gRPC Server实现 330
8.3.2 gRPC Client实现 337
8.3.3 gRPC语音服务的编译与测试 343
8.4 本章小结 346
参考文献 347