猜你喜欢
语音识别服务实战

语音识别服务实战

书籍作者:杨学锐 ISBN:9787121425905
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6676
创建日期:2023-02-25 发布日期:2023-02-25
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

随着语音算法技术的不断发展与完善,如何进行工程落地成为语音商业应用中普遍面临的问题。工程落地不仅要考虑模型效果,还要考虑资源占用、模块联调且整个架构要具有可靠性、可扩展性和可维护性。

本书围绕如何从零构建一个完整的语音识别系统,深入浅出地介绍了语音识别前端算法、语音识别算法及说话人日志算法原理;基于Kaldi的模型训练;语音识别工程落地和服务搭建。

本书适合作为语音技术研究人员及对语音技术感兴趣的开发人员的参考用书。


作者简介

杨学锐

大疆创新语音交互算法负责人,复旦大学及Turku大学硕士,长期从事语音算法、深度学习、人工智能等领域的研究与商业落地,在相关领域发表多篇论文及专利。

晏超

北京邮电大学硕士,曾任职于HP Labs, Cisco, Technicolor等公司。现为云从科技语音算法负责人,从事语音识别、声纹识别、说话人日志、语音合成等方向的算法研发工作,构建了云从科技整套语音算法引擎与应用服务平台。

刘雪松

OPPO音频算法专家,复旦大学硕士,曾任职于美国国家仪器、声网、云从科技等公司。在信号处理、音频算法和语音算法等领域有丰富的实战经验,在相关领域发表多篇论文及专利。


前言

前 言

近年来,随着深度学习技术的不断发展,语音识别准确率得到了大幅提升,由此带来了基于语音交互应用的丰富想象力,这些技术越来越多地影响着人们生产和生活的方方面面。其中,消费级应用包括智能音箱、手机语音助理、车载智能座舱、语音输入法与翻译机等;企业级应用包括智能客服、语音质检、智慧教育、智慧医疗等。各类智能语音应用的蓬勃发展使得越来越多的人加入语音领域的研究和落地,共同推动整个语音产业的发展。

得益于语音识别技术的蓬勃发展和识别率的节节攀升,业界涌现出众多优秀的端到端语音工具包,如Wenet,ESPNet,SpeechBrain等。尽管如此,2009年约翰霍普金斯大学夏季研讨会孵化出的Kaldi工具箱,以其稳定的算法效果,活跃的社区氛围,得到了广泛应用,极大地降低了语音识别的上手门槛,也培养了大量的相关人才。目前,仍然有很多公司在使用基于Kaldi的工程方案。

由于语音交互技术涉及的算法与技术链条较长,因此已有的语音算法相关图书主要集中在各类语音算法的原理与训练上,缺乏从语音交互角度出发,介绍语音交互所需的语音前后端各项算法和整体解决方案的相关图书。在语音应用的落地上,学术界也缺乏产业界的工程应用落地经验。本书将致力于拉进学术界与产业界的距离,在系统地介绍语音交互流程中涉及的语音前端处理、语音识别和说话人日志等算法原理的同时,详细介绍如何基于WebRTC,Kaldi和gRPC,从零构建产业界稳定、高性能、可商用的语音服务。

在前端算法的相关章节中,本书系统地介绍了语音活动检测、语音降噪、回声消除、波束形成等常用的语音前端处理算法的原理,还针对各种算法在实际场景中的工程实现方法,提供了大量的经验总结。除了介绍传统信号的处理方法,本书还介绍了深度学习方法在语音前端领域中的发展和应用现状。

在语音后端算法方面,本书详细介绍了语音识别中的特征提取、声学模型、语言模型、解码器和端到端语音识别,以及说话人日志中的声纹Embedding提取和聚类算法。同时,还介绍了如何基于Kaldi训练语音识别及说话人日志模型。针对训练模型时的很多细节问题,提供了详细的解释。

在语音算法工程化方面,本书介绍了如何利用WebRTC和Kaldi优化处理流程,形成语音算法SDK。基于流行的用于微服务构建的RPC远程调用框架和SDK,进一步介绍了如何实现一套方便用户快捷接入的语音算法的微服务。

本书由杨学锐、晏超、刘雪松合作撰写。三位作者长期在一线从事语音算法工作,书中内容汇集了他们在产业界模型训练和应用落地的思考与经验总结,希望能给学术界的研究人员与产业界的从业人员带来一丝启发和帮助。其中杨学锐负责第1、4、5章的撰写及全书内容的审核校对,晏超负责第6、7、8章的撰写及工程代码的实现调试,刘雪松负责第2、3章及第1章部分内容的撰写和校对。

最后,感谢电子工业出版社李淑丽老师的辛苦工作,感谢吴伯庸和王金超对本书的贡献,感谢陈勇的审稿与校对,感谢成书过程中给予过帮助的所有相关人士。

由于作者水平有限,书中如有任何错误与不足,恳请广大读者批评指正并提出宝贵意见。

作者

2021年11日于上海


目录

目 录


第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


产品特色