承接上文
四、语音识别的工作流程
1、信号的数字化和预处理:
1)数字化
声音是作为波的形式传播的。将声波转换成数字包括两个步骤:采样和量化。
为了将声波转换成数字,我们只记录声波在等距点的高度,这被称为采样(sampling)。
采样定理(Nyquist theorem)规定,从间隔的采样中完美重建原始声波——只要我们的采样频率比期望得到的最高频率快至少两倍就行。
2)预加重处理:
在语音识别过程中,经常会遇到原始语音数据因为噪音、背景音或次要信息的影响导致识别效果变差。预加重的目的就是为了提高语音质量,从含有噪声语音的信号中,尽可能提取纯净的原始语音信号。
它的方法有很多,下面列举三个:
(1)谱减法
首先假设噪音和期望语音信号相互独立,然后通过估计噪音的功率,在原始语音中减去噪音功率达到去除噪音的目的。
这个方法较适用于噪音平稳波动性小的情况。
(2)自适应滤波法
通过获得前一时刻的滤波器参数,去自动调节现在时刻的滤波器参数。我的理解是:假设语音信号具有较强的相关性,那么取t+1时刻的滤波器参数作用于t时刻的语音信号,形成纯净的语音信号。
(3)小波去噪法
基于信号和噪声的小波系数在各尺度的分布特性,采用阈值的方法,达到去除噪声的目的。
3)声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧,使用移动窗函数来实现,不是简单的切开,各帧之间一般是有交叠的。
我们把它分隔为一小段一小段(10毫秒-40毫秒)的短语音,我们认为这样的小片段是平稳的,称之为【帧】。
在每个帧上进行信号分析,称为语音的短时分析。
2、特征提取:主要算法有线性预测倒谱系数(LPCC)和Mel 倒谱系数(MFCC),目的是把每一帧波形变成一个包含声音信息的多维向量。
1)原理:我们经过采样,预处理,将这些数字绘制为简单的折线图,如下所示,我们得到了 20 毫秒内原始声波的大致形状:
这样的波形图对机器来说没有任何描述信息。这个波形图背后是很多不同频率的波叠加产生的。(准确的讲,它在时域上没有描述能力)
我们希望一段声纹能够给出一个人的特性,比如什么时候高,什么时候低,什么时候频率比较密集,什么时候比较平缓等等。
就是我们上面所说的,用傅里叶变化来完成时域到频域的转换。
这就需要对每一帧做傅里叶变化,用特征参数MFCC得到每一帧的频谱(这个过程就是特征提取,结果用多维向量表示),最后可以总结为一个频谱图(语谱图)。
2)特性参数
(1)特性提取时,我们有常用的特征参数作为提取模板,主要有两种:
线性预测系数(LPC)
LPC 的基本思想是,当前时刻的信号可以用若干个历史时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方差最小,即可得到一组线性预测系数。
求解LPC系数可以采用自相关法 (德宾 durbin 法) 、协方差法、格型法等快速算法。
(2)倒谱系数
利用同态处理方法,对语音信号求离散傅立叶变换后取对数,再求反变换就可得到倒谱系数。
其中,LPC倒谱(LPCCEP)是建立在LPC谱上的。而梅尔倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)则是基于MEL谱的。不同于LPC等通过对人的发声机理的研究而得到的声学特征,MFCC 是受人的听觉系统研究成果推动而导出的声学特征。
简单的说,经过梅尔倒谱分析,得到的参数更符合人耳的听觉特性。
1、声学模型(AM):
声学模型是识别系统的底层模型,其目的是提供一种计算语音的特征矢量序列和每个发音模板之间的距离的方法。通过对语音数据进行训练获得,输入是特征向量,输出为音素信息;也就是说,提取到的语音特性,与某个发音之间的差距越小,越有可能是这个发音。
或者说,某帧对应哪个状态的概率最大,那这帧就属于哪个状态。这个可以用GMM(混合高斯模型,就是一种概率分布)或DNN(深度神经网络)来识别。
但这样识别出来的结果会比较乱,因为一个人讲话的速度不一样,每一帧识别出的结果可能是:....HHH_EE_LL__LLLL__OOO.....,如下图:
这个问题可以用DTW(动态时间规整)或HMM(隐马尔科夫模型)或CTC(改进的RNN模型)来对齐识别结果,知道单词从哪里开始,从哪里结束,哪些内容是重复的没有必要的。
1)常用的声学建模方法包含以下三种:
· 基于模式匹配的动态时间规整法(DTW);
· 隐马尔可夫模型法(HMM);
· 基于人工神经网络识别法(ANN);
在过去,主流的语音识别系统通常使用梅尔倒谱系数(Mel-Frequency Cepstral Coefficient, MFCC)或者线性感知预测(Perceptual Linear Prediction, PLP)作为特征,使用混合高斯模型-隐马尔科夫模型(GMM-HMM)作为声学模型。
近些年,分层鉴别模型比如DNN,变得可行起来,比如上下文相关的深度神经网络-隐马尔可夫模型(context-dependent DNN-HMM,CD-DNN-HMM)就比传统的GMM-HMM表现要好得多。
如下图,你可以清晰的看到被替换的部分。
2)主要问题:
我们要了解的是,声学模型存在2个问题:
(1)特征向量序列的可变长;
每个人说同一个单词的时间长度都不一样,声学模型要能从不同的时间长度的语音信号中识别出是同一个单词。
解决方法就是DTW(动态时间规整)、 HMM(隐马尔可夫模型)。
(2) 音频信号的丰富变化性;
如说话人的性别,健康状况,紧张程度,说话风格、语速,环境噪音,周围人声,信道扭曲,方言差异,非母语口音等。
3)声学建模:
(1)隐马尔可夫模型(HMM)
对语音识别系统而言,HMM 的输出值通常就是各个帧的声学特征 。 为了降低模型的复杂度,通常 HMM 模型有两个假设前提,一是内部状态的转移只与上一状态有关,一是输出值只与当前状态或当前状态转移有关。除了这两个假设外,HMM 模型还存在着一些理论上的假设,其中之一就是,它假设语音是一个严格的马尔科夫过程 。
现代通用语音识别系统基于隐马尔可夫模型。这些是输出符号或数量序列的统计模型。HMM用于语音识别,因为语音信号可以被视为分段静止信号或短时静止信号。在短时间尺度(例如,10毫秒)中,语音可以近似为静止过程。语音可以被认为是许多随机目的的马尔可夫模型。
HMM受欢迎的另一个原因是因为它们可以自动训练并且使用起来简单且计算可行。在语音识别中,隐马尔可夫模型将输出一系列n维实值向量(其中n是一个小整数,例如10),每10毫秒输出一个这些向量。矢量将由倒谱系数组成,倒谱系数是通过对短时间语音窗口进行傅里叶变换并使用余弦变换对频谱进行去相关而获得的。,然后取第一个(最重要的)系数。隐马尔可夫模型将倾向于在每个状态中具有对角协方差高斯的混合的统计分布,这将给出每个观察向量的可能性。每个单词,或(对于更一般的语音识别系统),每个音素,将具有不同的输出分布; 通过将单独训练的隐马尔可夫模型连接成单独的单词和音素,制作用于一系列单词或音素的隐马尔可夫模型。
以上描述的是最常见的基于HMM的语音识别方法的核心要素。现代语音识别系统使用多种标准技术的各种组合,以便改进上述基本方法的结果。典型的大词汇系统需要音素的上下文依赖(因此具有不同左右上下文的音素具有与HMM状态不同的实现); 它会使用倒谱归一化来规范不同的扬声器和录音条件; 对于进一步的说话者归一化,它可能使用声道长度归一化(VTLN)进行男性女性归一化和最大似然线性回归(MLLR)用于更一般的演讲者改编。这些特征将具有所谓的delta和delta-delta系数以捕获语音动态,此外还可以使用异方差线性判别分析(HLDA); 或者可以跳过delta和delta-delta系数并使用拼接和基于LDA的投影,然后可能是异方差线性判别分析或全局半连接协方差变换(也称为最大似然线性变换),或MLLT)。许多系统使用所谓的判别训练技术,其省去了对HMM参数估计的纯粹统计方法,而是优化了训练数据的一些与分类相关的测量。示例是最大互信息(MMI),最小分类错误(MCE)和最小电话错误(MPE)。
(2)基于动态时间规整(DTW)
动态时间扭曲是一种历史上用于语音识别的方法,但现在已经被更成功的基于HMM的方法取代。
动态时间扭曲是用于测量可能在时间或速度上变化的两个序列之间的相似性的算法。例如,即使在一个视频中人们正在缓慢行走而在另一个视频中他或她走得更快,或者即使在一次观察的过程中存在加速和减速,也会检测到行走模式的相似性。DTW已应用于视频,音频和图形 - 实际上,任何可以转换为线性表示的数据都可以使用DTW进行分析。
一个众所周知的应用是自动语音识别,以应对不同的语速。通常,它是一种允许计算机在具有某些限制的两个给定序列(例如,时间序列)之间找到最佳匹配的方法。也就是说,序列被非线性地“扭曲”以彼此匹配。该序列比对方法通常用于隐马尔可夫模型的上下文中。
(3)神经网络
在20世纪80年代后期,神经网络在ASR中成为一种有吸引力的声学建模方法。从那时起,神经网络已被用于语音识别的许多方面,例如音素分类, 58 .孤立词识别, 59 .视听语音识别,视听说话人识别和说话者适应。
与HMM相比,神经网络对特征统计特性的显式假设较少,并且具有多种特性使其成为语音识别的有吸引力的识别模型。当用于估计语音特征片段的概率时,神经网络允许以自然且有效的方式进行辨别训练。然而,尽管它们在分类短时间单位(如个体音素和孤立单词)方面有效, 60 .,早期神经网络很难成功进行连续识别任务,因为它们对时间依赖性建模的能力有限。
这种限制的一种方法是在基于HMM的识别之前使用神经网络作为预处理,特征变换或维数减少61 .步骤。然而,最近,LSTM和相关的递归神经网络(RNNs) 33 . 37 . 62 . 63 .和时间延迟神经网络(TDNN) 64 .已经证明了该领域的改进性能。
(4)深度前馈和递归神经网
深度神经网络和去噪自动编码器 65 .也正在研究中。深度前馈神经网络(DNN)是一种人工神经网络,在输入和输出层之间具有多个隐藏的单元层。 40 .与浅层神经网络类似,DNN可以模拟复杂的非线性关系。DNN架构生成组合模型,其中额外的层使得能够从较低层构成特征,从而提供巨大的学习能力,从而具有对复杂的语音数据模型进行建模的潜力。 66 .
2010年,工业研究人员与学术研究人员合作,在大词汇量语音识别中成功发展了DNN,其中采用了基于决策树构建的依赖于上下文的HMM状态的DNN的大输出层。 67 . 68 . 69 .参见微软研究院最近的Springer一书,了解截至2014年10月对这一发展和现有技术的全面评论。 70 .另见最近概述文章中自动语音识别的相关背景和各种机器学习范例的影响,特别是包括深度学习。 71 . 72 .
深度学习的一个基本原则是取消手工制作的特征工程并使用原始特征。这一原理首先在“原始”光谱图或线性滤波器组特征的深度自动编码器架构中成功探索, 73 .显示其优于Mel-Cepstral特征,其包含来自光谱图的固定变换的几个阶段。语音波形的真正“原始”特征最近被证明可以产生出色的大规模语音识别结果。
(5)端到端自动语音识别
1.发展历程:
自2014年以来,对“端到端”ASR的研究兴趣不断增加。传统的基于语音的(即所有基于HMM的模型)方法需要单独的组件和发音,声学和语言模型的训练。端到端模型共同学习语音识别器的所有组件。这很有价值,因为它简化了培训过程和部署过程。例如,所有基于HMM的系统都需要n-gram语言模型,典型的n-gram语言模型通常需要几千兆字节的存储空间,因此在移动设备上部署它们是不切实际的。 75 .因此,谷歌和苹果的现代商用ASR系统(截至2017年)部署在云上,需要网络连接,而不是本地设备。
在终端到终端的ASR的第一个尝试是与联结颞分类(CTC)通过引入基于系统亚历克斯·格雷夫斯的谷歌DeepMind的和纳瓦迪普Jaitly 多伦多大学于2014年 76 .该模型由递归神经网络和CTC层。共同地,RNN-CTC模型一起学习发音和声学模型,但是由于类似于HMM的条件独立性假设,它不能学习语言。因此,CTC模型可以直接学习将语音声学映射到英文字符,但这些模型会产生许多常见的拼写错误,并且必须依靠单独的语言模型来清理成绩单。后来,百度通过极大的数据集扩展了工作,并展示了中文普通话和英语的商业成功。 77 .2016年,牛津大学提出LipNet, 78 .第一个端到端句子级唇读模型,使用时空卷积和RNN-CTC架构,超越了限制语法数据集中的人类水平表现。 79 . Google DeepMind于2018年推出了大规模的CNN-RNN-CTC架构,其性能比人类专家高出6倍。 80 .
基于CTC的模型的替代方法是基于注意力的模型。Chan等人同时引入了基于注意力的ASR模型。的卡耐基梅隆大学和谷歌大脑和Bahdanau等。所述的蒙特利尔大学在2016年 81 . 82 .名为“倾听,参与和拼写”(LAS)的模型,字面上“听”声信号,“注意”信号的不同部分,并且一次“拼写”一个字符的抄本。与基于CTC的模型不同,基于注意力的模型不具有条件独立性假设,并且可以直接学习语音识别器的所有组件,包括发音,声学和语言模型。这意味着,在部署期间,不需要携带语言模型,这使得它在部署到具有有限存储器的应用程序上非常实用。截至2016年底,基于注意力的模型取得了相当大的成功,包括超越CTC模型(有或没有外部语言模型)。 83 .自原始LAS模型以来已经提出了各种扩展。潜在序列分解(LSD)由卡内基梅隆大学,麻省理工学院和谷歌大脑提出,直接发出比英文字符更自然的子词单元; 84 . 牛津大学和Google DeepMind将LAS扩展到“观看,收听,参与和拼写”(WLAS),以处理超越人类表现的唇读。
2.优缺点:
A.目前的识别部分问题:
a.对自然语言的识别和理解;就目前而言,NLP的突破还有很多难点,因此也在很大的程度上制约了ASR的发展。
b.语音信息量大。语音模式不仅对不同的说话人不同,对同一说话人也是不同的,一个说话人在随意说话和认真说话时的语音信息是不同的;
c.语音的模糊性。说话者在讲话时,不同的词可能听起来是相似的;
d.单个字母或词、字的语音特性受上下文的影响,以致改变了重音、音调、音量和发音速度等。
端到端的模型旨在一步直接实现语音的输入与解码识别,从而不需要繁杂的对齐工作与发音词典制作工作,具有了可以节省大量的前期准备时间的优势,真正的做到数据拿来就可用。
B.端到端模型的优点:
a.端到端的模型旨在一步直接实现语音的输入与解码识别,从而不需要繁杂的对齐工作与发音词典制作工作,具有了可以节省大量的前期准备时间的优势,真正的做到数据拿来就可用。
b.端到端的模型由于不引入传统的音素或词的概念,直接训练音频到文本的模型,可以有效地规避上述难点。
c.更换识别语言体系时可以利用相同的框架结构直接训练。例如同样的网络结构可以训练包含26个字符的英文模型,也可以训练包含3000个常用汉字的中文模型,甚至可以将中英文的词典直接合在一起,训练一个混合模型。
d.端到端的模型在预测时的速度更快,对于一个10 秒左右的音频文件,端到端的模型在一块GPU的服务器上仅需0.2秒左右的时间便可给出预测结果。
2、字典:
字典是存放所有单词的发音的词典,它的作用是用来连接声学模型和语言模型的。
识别出音素,利用字典,就可以查出单词了。
例如,一个句子可以分成若干个单词相连接,每个单词通过查询发音词典得到该单词发音的音素序列。相邻单词的转移概率可以通过语言模型获得,音素的概率模型可以通过声学模型获得。从而生成了这句话的一个概率模型。
5、语言模型(LM):
如何将识别出的单词,组成有逻辑的句子,如何识别出正确的有歧义的单词,这些就用到语言模型了。
由于语音信号的时变性、噪声和其它一些不稳定因素,单纯靠声学模型无法达到较高的语音识别的准确率。在人类语言中,每一句话的单词直接有密切的联系,这些单词层面的信息可以减少声学模型上的搜索范围,有效地提高识别的准确性,要完成这项任务语言模型是必不可少的,它提供了语言中词之间的上下文信息以及语义信息。
随着统计语言处理方法的发展,统计语言模型成为语音识别中语言处理的主流技术,其中统计语言模型有很多种,如N-Gram语言模型、马尔可夫N元模型(Markov N-gram)、指数模型( Exponential Models)、决策树模型(Decision Tree Models)等。而N元语言模型是最常被使用的统计语言模型,特别是二元语言模型(bigram)、三元语言模型(trigram)。
6、解码:就是通过声学模型,字典,语言模型对提取特征后的音频数据进行文字输出。
7、语音识别系统基本原理结构:
(1)语音识别系统基本原理结构如图所示。语音识别原理有三点:
1)对语音信号中的语言信息编码是按照幅度谱的时间变化来进行;
2)由于语音是可以阅读的,也就是说声学信号可以在不考虑说话人说话传达的信息内容的前提下用多个具有区别性的、离散的符号来表示;
3)语音的交互是一个认知过程,所以绝对不能与语法、语义和用语规范等方面分裂开来。
精彩下文继续
参考文章链接如下:
https://www.jianshu.com/p/8041e1f4fdf3
https://www.jianshu.com/p/a3e2915a3783
https://www.jianshu.com/p/1cfa15eaadfe
https://www.jianshu.com/p/2c99885b9a8f
https://www.jianshu.com/p/60ef7117a612
https://www.jianshu.com/p/350a4f447a5f
https://www.jianshu.com/p/c088c89a7f09
https://www.jianshu.com/p/45a764b53474
https://www.jianshu.com/p/7c94467f58ff
http://www.woshipm.com/pd/894645.html
https://www.jianshu.com/p/dc8954aebbef
https://www.jianshu.com/p/3edca44c3e53
https://blog.csdn.net/zhinengxuexi/article/details/89355659
https://blog.csdn.net/baidu_31437863/article/details/82807224