文章目录
引言
本文的主旨:
- 阐述 ESPNet (end-to-end speech processing toolkit)进行端到端语音识别的基本原理、实现方法和主要流程。
作者的话:
- 由于之前没有接触过NLP,对其中的很多概念都不清楚,所以将会从NLP的发展历史开始,从基础开始,逐渐阐述NLP方法的一代代进步,按照一个顺序的结构,最终讲到今天的主题——ESPNet;
- 所以我预计,大量的篇幅可能都是ESPNet的基础知识;
本文逻辑:
- 语音识别(ASR)的发展历史;
- ASR的三大方法,引出深度学习法;
- 详解深度学习中的端到端是什么?
- 由端到端引出ESPNet,并详解ESPNet。
一、语音识别概述
虽说概述这一部分和ESPNet本身没有什么直接联系,但本着一个学习的过程,还是把自己前期做的调研中有价值的部分写上,来让读者明白ESPNet在整个语音识别中,处于一个怎样的地位。
从1950s至今,可以总结出三大类语音识别方法:
1、模板匹配,例如:DTW(动态时间规整)
-
模板匹配使用动态规划的思想,将两段不等长的语音化为等长语音,之后便于上下匹配波形;
-
简单来说:我有一个模板库,通过获取一段语音的波形图象与模板库进行比对,来进行语音的匹配;
-
模板匹配比较适合小词汇量、单独词的识别;但的识别效果过分依赖于端点检测,不适合用于连续语音识别。
2、统计模型,例如:GMM-HMM(混合高斯模型和马尔科夫模型)等
统计模型语音识别系统通常有如下模块:
- 信号处理和特征提取模块:从输入的语音信号中提取特征,用于声学模型的建模以及解码过程。
- 声学模型:通常的语音识别系统大都使用隐马尔科夫模型对词,音节、音素等基本的声学单元进行建模,生成声学模型。
- 语言模型:语言模型对系统所需识别的语言在单词层面上进行建模。判断出那个词是最适合出现在当前句中。目前大多数语音识别系统普遍采用统计语言模型,其中大都是基于统计的N元语法(N-gram)模型及其变体。(我觉得也是基于概率的还是比较好的)
- 发音词典/词汇表:发音词典包含系统所能处理的单词的集合,并标明了其发音。通过发音词典得到声学模型的建模单元和语言模型建模单元间的映射关系,从而把声学模型和语言模型连接起来,组成一个搜索的状态空间用于解码器进行解码工作。
- 解码器:解码器是语音识别系统的核心之一,负责读取输入的语音信号的特征序列,再由声学模型、语言模型及发音词典生成的状态空间中,解码出以最大概率输出该信号的词串。
个人理解,基于统计模型的语音识别,其流程如下:
-
语音的输入:一段语音——我是机器人.mp3(当然不一定是mp3具体这个格式)
-
特征提取