语音识别学习阶段性总结(一)
一. 对语音识别总体认识的简单叙述
语音识别大体上就是将人类的语音信号输入系统,识别出对应的文字。语音合成则是一个相反的过程,给出文本,输入系统后能够输出文字对应的语音信号。
语音识别是一个大方向,细分起来包括了声纹识别、关键词识别、语音信号处理等方向,还包括了很重要的连续语音识别。而语音合成方面,主要学习的是歌声合成的相关知识。
语音识别的过程大体可以分为两个阶段,前一阶段主要是语音信号的处理,包括语音信号的预处理,语音信号的分析(时域分析、时频域分析、倒谱域分析),语音信号的特征提取(主要是关于MFCC的工作,为后续的建模等工作做准备);后一阶段则主要是模型训练和语音识别阶段,模型的训练主要是使用已有的训练数据,对给出的模型进行训练,通过一次次训练不断优化模型中的参数,使得整个系统更加接近理想的效果。语音模型的选择多种多样,包括HMM,GMM,DNN,CNN等,目前接触到的包括HMM,GMM,DNN,而CNN我暂时没有学习到。
三.语音识别的大体过程总结
1.语音信号预处理
语音信号是一个连续的信号,要想输入系统进行处理,首先要对语音信号进行预处理,比如预加重处理,分帧加窗处理等,目的则是为了提高信号信噪比,便于后续处理。
2. 语音信号分析
语音识别不是一个简单的输入语音并直接输出文本的系统,语音信号输入的时候要进行一系列处理。语音信号具有长时时变短时平稳的特征。对于语音信号的分析包括了时域分析、时频域分析,倒谱域分析。在这里对于因信号进行处理的目的,是为了得到语音信号的时域或者时频域特征,便于画出功率谱。这一步得到的功率谱,可以直接用于下一步的特征提取(比如MFCCs)。
时域分析:
时域分析能够提取到的特征包括短时平均能量,短时平均过零率,短时平均幅度,短时自相关函数。语音信号是长时时变短时平稳的信号,所以这些特征都倾向于短时信号特征,这些特征在端点检测、静音判断、清浊音切分等方面使用广泛。
时频域分析:
语音处理过程中,除了时域特征之外,频率域特征或者二者结合起来的时频特征对后续工作也很重要。傅里叶变换是这一部分很重要的知识点。
傅里叶变换可以很好的表现出信号的频率域特征,但是丢失了时间信息,因此,对傅里叶变换进行优化,提出了短时傅里叶变换(STFT),在傅里叶变换的基础上,对信号分帧加窗,逐个处理,能够得到比较好的时域和频域特征信息。另外,针对突变的、非平稳信号和离散信号,一些论文中也提出了其他的信号分析方法,比如拉普拉斯变换(在FT基础上引入了衰减因子)、Z变换(适合处理离散信号)、小波变换(将FT中无限长的三角基转换成会衰减的小波基)。
3.特征提取。
语音信号是十分复杂的连续信号,而语音信号的特征参数能够很好的表达语音信号,也就能很好的表达语音信号所携带的信息,因此,对语音信号的处理,必须首先提取语音信号的特征参数。这样,通过处理数据量很小的特征参数,就能得到与直接处理复杂且不好分析的语音信号相同的效果。语音信号的特征参数有很多,主要学习了梅尔倒谱系数(MFCC参数)的提取,MFCC在实际应用中很多,主要是因为梅尔频率比较符合人类的听觉特性。
特征提取成功,也就为后续的模型训练打下了基础。模型训练不可能直接使用复杂不平稳法语音信号,而是使用语音信号的特征参数。在有了模型的前提下,在训练阶段,把语音信号经过1,2,3步的处理,得到指定的 N 维特征参数并输入到模型当中,通过多次迭代,能得到不断优化的模型参数。识别阶段,待识别语音信号经过1 2 3步的处理,得到指定的 N 维参数并输入到模型当中,能得到识别结果。
4. 模型训练与语音识别
语音识别的模型有很多,经典的包括HMM、GMM,另外人工神经网络的兴起使得DNN、CNN得到了广泛的使用。这些模型都是通过给出初始模型,使用训练数据不断的优化模型参数,最终得到一个比较满意的识别模型。