第1章 语音识别概论 1
1.1 语音的产生和感知 1
1.2 语音识别过程 4
1.3 语音识别发展历史 8
1.4 国内语音识别现状 15
1.5 语音识别建模方法 19
1.5.1 DTW 19
1.5.2 GMM-HMM 20
1.5.3 DNN-HMM 20
1.5.4 端到端 22
1.6 语音识别开源工具 22
1.7 语音识别常用数据库 22
1.8 语音识别评价指标 24
第2章 语音信号基础 28
2.1 声波的特性 28
2.2 声音的接收装置 29
2.2.1 麦克风阵列 31
2.3 声音的采样 32
2.4 声音的量化 33
2.5 语音的编码 35
2.6 WAV文件格式 38
2.7 WAV文件分析 39
第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 61
3.6.5 CQCC 62
第4章 HMM 67
4.1 HMM的基本概念 69
4.1.1 马尔可夫链 70
4.1.2 双重随机过程 71
4.1.3 HMM的定义 72
4.2 HMM的三个基本问题 73
4.2.1 模型评估问题 74
4.2.2 最佳路径问题 77
4.2.3 模型训练问题 79
第5章 GMM-HMM 83
5.1 概率统计 84
5.2 高斯分布 85
5.3 GMM 88
5.3.1 初始化 89
5.3.2 重估计 90
5.4 GMM-HMM 91
5.5 GMM-HMM的训练 97
5.6 模型自适应 99
5.6.1 MAP 99
5.6.2 MLLR 100
5.6.3 fMLLR 100
5.6.4 SAT 101
课程实践:基于HTK搭建GMM-HMM系统 103
第6章 基于HMM的语音识别 104
6.1 建模单元 104
6.2 发音过程与HMM状态 107
6.3 串接HMM 108
6.4 固定语法的识别 112
6.5 随机语法的识别 117
第7章 音素的上下文建模 125
7.1 协同发音 125
7.2 上下文建模 126
7.3 决策树 128
7.4 问题集 129
7.4.1 手工设计 129
7.4.2 自动生成 131
7.5 三音子模型的训练 134
第8章 语言模型 136
8.1 n-gram模型 138
8.2 评价指标——困惑度 142
8.3 平滑技术 143
8.3.1 Good-Turing折扣法 143
8.3.2 Jelinek-Mercer插值法 144
8.3.3 Kneser-Ney插值法 144
8.3.4 Katz回退法 146
8.4 语言模型的训练 148
8.5 递归神经网络语言模型 151
第9章 WFST解码器 158
9.1 基于动态网络的Viterbi解码 159
9.2 WFST理论 163
9.3 HCLG构建 168
9.3.1 H的构建 169
9.3.2 C的构建 171
9.3.3 L的构建 172
9.3.4 G的构建 173
9.3.5 HCLG合并 175
9.4 WFST的Viterbi解码 177
9.4.1 Token的定义 177
9.4.2 Viterbi算法 178
9.5 Lattice解码 185
9.5.1 主要数据结构 185
9.5.2 令牌传播过程 186
9.5.3 剪枝策略 189
9.5.4 Lattice 190
第10章 DNN-HMM 194
10.1 深度学习 194
10.2 DNN 195
10.2.1 激活函数 196
10.2.2 损失函数 198
10.2.3 梯度下降算法 199
10.3 DNN与HMM的结合 201
10.4 不同的DNN结构 205
10.4.1 CNN 205
10.4.2 LSTM 210
10.4.3 GRU 210
10.4.4 TDNN 211
10.4.5 TDNN-F 214
第11章 序列区分性训练 220
11.1 区分性准则 221
11.1.1 MMI 221
11.1.2 BMMI 222
11.1.3 MPE/sMBR 222
11.2 MMI求导过程 223
11.3 Lattice-based MMI 225
11.4 Lattice-free MMI 227
11.5 Kaldi Chain模型 230
第12章 端到端语音识别 233
12.1 CTC 234
12.1.1 损失函数 235
12.1.2 前向算法 239
12.1.3 后向算法 242
12.1.4 求导过程 243
12.1.5 CTC解码 245
12.2 RNN-T 248
12.3 Attention模型 251
12.4 Hybrid CTC/Attention 254
12.5 Transformer 256
第13章 Kaldi实践 262
13.1 下载与安装Kaldi 263
13.1.1 获取源代码 263
13.1.2 编译 264
13.2 创建与配置基本的工程目录 265
13.3 aishell语音识别工程 266
13.3.1 数据映射目录准备 267
13.3.2 词典准备和lang目录生成 269
13.3.3 语言模型训练 271
13.3.4 声学特征提取与倒谱均值归一化 273
13.3.5 声学模型训练与强制对齐 274
13.3.6 解码测试与指标计算 277
第14章 Espnet实践 280
14.1 数据准备 280
14.1.1 映射文件准备 280
14.1.2 特征提取 281
14.1.3 数据增强 282
14.1.4 词典生成 282
14.1.5 数据打包 283
14.2 Espnet配置文件 284
14.3 语言模型训练 285
14.4 声学模型训练 287
14.4.1 声学模型训练脚本 287
14.4.2 CTC声学模型训练 288
14.4.3 Attention声学模型训练 289
14.4.4 RNN-T模型训练 290
14.4.5 Transformer模型训练 292
14.5 语音识别解码 293
14.6 Espnet训练解码可视化 294
14.6.1 Espnet训练参数可视化 294
14.6.2 Espnet中的Attention可视化 295
14.6.3 Espnet解码结果可视化 296
第15章 工业应用实践 298
15.1 动态库封装 298
15.1.1 函数接口 298
15.1.2 动态库编译 306
15.1.3 动态库调用 309
15.2 语音云平台 310
15.3 识别引擎优化 315
15.3.1 加快响应速度 315
15.3.2 定制语言模型 316
15.3.3 定制声学模型 316
15.4 嵌入式移植 318