传统语音识别GMM和HMM理论

语音信号

来源:计算机中采用PCM编码按时间序列保存的一连串数据。一般为.wav文件,可以通过各种录音软件录制,录制是包括三个参数:采样率fs,一般8000Hz 115200Hz 等;bits,即每个采样点用几个二进制保存;通道:单通道,双通道等。
预处理
分帧:非平稳信号,分帧后每段看作短时平稳,即可用FFT获得频率分布。
帧长的选择:一帧要包含几个周期,如帧长25ms,帧移10ms。
加窗:让一帧信号的幅度在两端渐变到 0。渐变对傅里叶变换有好处,可以提高变换结果(即频谱)的分辨率。
在这里插入图片描述
加窗的代价是一帧信号两端的部分被削弱了,弥补的办法是,帧不要挨着截取,而是相互重叠一部分。相邻两帧的起始位置的时间差叫做帧移,常见的取法帧移与帧长的比值一般取为0~1/2。
特征提取:分N帧后,语音变成很多小段。但波形在时域上描述能力不强,所以提取特征,常见的MFCC特征。每帧提取其MFCC,每帧变换成12维(假设,色块颜色代表向量值大小),则一句话变成 12✖N 的矩阵。
传统语音识别GMM和HMM理论_第1张图片
常见流程:
传统语音识别GMM和HMM理论_第2张图片

语音识别

语音识别就是让机器能够“听懂”人们在说什么,将语音信号转化为文本信息,从而让机器能够根据人的语音指令做出相应的反馈。主要流程:
传统语音识别GMM和HMM理论_第3张图片
传统语音识别GMM和HMM理论_第4张图片

接下来就是把特征矩阵变文本了。

音素:一个单词由好几个音素组成,每个音素由好几帧组成,每帧有12或20维。如果想要识别对应的单词状态,只要知道对应的帧状态就行,用计算机能识别的方式最简单的就是概率匹配,这些概率就可以通过声学模型获得,所以要做的就是通过训练获得合适的模型参数以拟合好的匹配效果。
注:汉语一般把全部声母和韵母作为音素集。
状态:比音素更细致的单位。通常把一个音素划分成3个状态。
如图,每个小竖条代表一帧,若干帧语音对应一个状态,每三个状态组合成一个音素,若干个音素组合成一个单词。也就是说,只要知道每帧语音对应哪个状态了,语音识别的结果也就出来了。
传统语音识别GMM和HMM理论_第5张图片
看某帧对应哪个状态的概率最大,那这帧就属于哪个状态。比如下面的示意图,这帧在状态S3上的条件概率最大,因此就猜这帧属于状态S3。
传统语音识别GMM和HMM理论_第6张图片
那这些用到的概率从哪里得到,有个叫“声学模型”的东西,里面存了一大堆参数,这些参数由训练获得,用大量语音数据。常见的:
a)传统模型
b)CTC模型
c) end-to-end模型

主要三个步骤:
1.把帧识别成状态(难点)。
2.把状态组合成音素。
3.把音素组合成单词。
第一步可以当做GMM做,后面都是HMM。

识别流程:
传统语音识别GMM和HMM理论_第7张图片

隐马尔可夫模型HMM

引入HMM假设:状态隐变量,语音是观测值,状态之间的跳转符合马尔科夫假设。那么声学模型可以继续表示为如下公式:
传统语音识别GMM和HMM理论_第8张图片

其中Y代表输入语音,W 文本,a转移概率,b表示发射概率。用图来表示的话就是下图中的结构 :

传统语音识别GMM和HMM理论_第9张图片

连续语音时大量词汇:不能为每个单词训练HMM,改为用每个音素训练一个HMM。音素HMM按词典拼接成单词HMM,单词HMM与语言模型复合成语言HMM。
传统语音识别GMM和HMM理论_第10张图片
HMM的隐状态
由于语音信号在较短的时间内可近似看做平稳的(比如50毫秒)。平稳信号的特点在于信号的频谱分布是稳定的,不同时间段的频谱分布相似。隐马尔可夫模型将一小段频谱相似的连续信号归为一个隐状态。
Viterbi算法对齐就是为了找到哪些帧归于哪个隐状态,隐马尔可夫模型的训练过程是最大化似然度,每一个状态产生的数据用一个概率分布表示。只有当相似的连续信号尽可能被归为同一个状态,似然度才能尽可能的大。
Viterbi算法
Viterbi算法需要先初始化一个HMM模型λ=(A,B,Π)。
传统语音识别GMM和HMM理论_第11张图片
传统语音识别GMM和HMM理论_第12张图片

高斯混合模型GMM

高斯混合模型(Gaussian Mixture Model, GMM) 是一种应用广泛的聚类算法。该方法通过对多个高斯模型做线性组合,对样本数据的概率密度分布进行估计,以达到聚类的目的。
==主要思想:==使用高斯分布作为参数模型,并使用期望最大化(EM)算法进行参数估计。其中,每个高斯分布代表一个类。我们将样本数据分别在几个高斯分布上投影, 就得到数据在各个类别上的概率值最大的类作为估计结果。
算法流程:
传统语音识别GMM和HMM理论_第13张图片
隐变量
隐变量是一个辅助变量,GMM的隐变量表示的是样本x属于哪一个高斯分布。

隐变量是一个向量,并且这个向量中只有一个元素取值为1,其它的都是0。因为假设只有一个高斯分量被选中并产生观测数据。然而我们的GMM的一个观测数据在直观上应该是每个高斯分量都有产生,而不是由一个高斯分量单独生成,只是重要性不同(由系数控制)

假设我们知道数据可以分为两类,在随机抽取一个数据点,不知道这个数据来自第一类还是第二类,类比GMM中K1、K2的高斯分模型,不知道数据来自哪个分模型。

隐变量就是为了描述数据归属看不见这个现象的。

隐变量是一个离散的随机变量。

GMM中K1、K2、K3类比箱子1、箱子2、箱子3,类比HMM中状态1、状态2、状态3。
假如箱子中小球分布符合高斯分布,即HMM中隐状态中特征符合高斯分布,GMM混合高斯模型就是在模拟这个分布,理解性的表达可以说模拟隐状态中可观测特征的比例。只不过一个箱子中三个小球比列为3:2:1,而HMM一个隐状态中有39种特征,也是有占比。
传统语音识别GMM和HMM理论_第14张图片

GMM-HMM模型实战

具体看这篇:GMM-HMM实践

你可能感兴趣的:(语音识别,语音识别,人工智能)