孤立词语音识别程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
孤立词语音识别程序
信息处理仿真实验语音处理部分
一、实验目的
按所学相关语音处理的知识,自己设计一个孤立词语音识别程序,分析所设计系统的特性。熟悉不同模块间如何进行有效的组合,以及模
块内的设计,重点掌握特征参数的提取和模式识别方法,并对不同的特
征参数提取方法和模式匹配方法有大概的了解,知道其不同的优缺点。
二、实验内容
1、熟悉预处理、特征参数提取、模式匹配三个模块的原理,并设计
这三个模块的matlab子程序。
2、设计主程序,将上述3个模块合理组合构成一个系统,训练模板并
测试。
三、实验原理及设计步骤
1、孤立词语音识别系统:先用端点检测将语音中有用的语音部分提取出来(即
将头部和尾部的静音部分除掉),然后提取语音信号的Mel尺度倒谱参数(MFCC),进行动态归整(DTW算法)后与模板库里面的标准语音作比较,具体流程如下:
图3.1孤立词语音识别系统
2、各模块解析
⑴预处理:包括反混叠失真滤波器、预加重器、端点检测和噪声滤波器。这里
将预加重器和噪声滤波器放在下一个模块里,所以预处理主要进行端点检测以捕捉到数据中的语音信息。
端点检测采用双门限法来检测端点。同时,利用过零率检测清音,用短时能量检测浊音,两者配合。整个语音信号的端点检测可以分为四段:静音、过渡段、语音段、结束。程序中使用一个变量status来表示当前
所处的状态。
在静音段,如果能量或过零率超越了低门限,就应该开始标记起始点,进入过渡段。
在过渡段中,由于参数的数值比较小,不能确信是否处于真正的语音段,因此只要
两个参数的数值都回落到低门限以下,就将当前状态恢复到静音状态。
而如果在过渡段中两个参数中任意一个超过了高门限,就可以确信
进入语音段了。
一些突发性的噪声可以引发短时能量或过零率的数值很高,但是往往不
能维持足够长的时间,这些可以通过设定最短时间门限来判别。当
前状态处于语音段时,如果两个参数的数值降低到低门限以下,而
且总的计时长度小于最短时间门限,则认为这是一段噪音,继续扫
描以后的语音数据。否则就标记好结束端点,并返回
⑵特征参数提取:常用的语音识别参数有线性预测参数(LPC),线性预测倒谱
参数(LPCC)和Mel 尺度倒谱参数(MFCC)等。这里提取语音信号的Mel 尺度倒谱参数(MFCC),步骤如下:
预
加
重汉明窗傅立叶变
换取模三角滤波函数组取对数离散余弦变换语音
信号MFCC 归一化导谱提升计算差分系数并合
并特征参数
图3.2特征参数提取
分析:
①预加重
()()-0.97(1)y n x n x n =-
②加汉明窗
()()()w x n y n w n =⨯
③ FFT
1
2/0()()N j nk N w w n X k x n e π--==∑
这里直接采用现成的FFT 快速算法。
④对频谱进行三角滤波
程序采用归一化mel 滤波器组系数
⑤计算每个滤波器的输出能量
120()ln ()()0N w m k S m X k H k m M -=⎛⎫=≤< ⎪⎝⎭
∑ ⑥离散余弦变换(DCT)得到MFCC
()1()()cos (0.5)/1,2,...,M
m C n S m n m M n p π==-=∑
通常协方差矩阵一般取对角阵,三角滤波器组的对数能量输出之间
存在着很大的相关,采用 DCT 这种正交变换可以去除参数之间的相关性,从而使后端识别模型采用对角阵具有更高的识别率
⑦归一化倒谱提升
π≤≤
w = 1 + 6 * sin(u / 12) 1u12
w = w/max(w)
⑧计算差分系数并合并mfcc参数和一阶差分mfcc参数
将其作为一个整体,让参数更完备。
⑶模式匹配:有矢量量化技术、DTW、HMM技术、人工神经网络技术。
目前,语音识别的匹配主要应用HMM和DTW两种算法。DTW算法由于没有一个有效地用统计方法进行训练的框架,也不容易将低层和顶层的各种知识用到语音识别算法中,因此在解决大词汇量、连续语音、非特定人语音识别问题时较之HMM算法相形见绌。HMM是一种用参数表示的,用于描述随机过程统计特性的概率模型。而对于孤立词识别,HMM算法和DTW算法在相同条件下,识别效果相差不大, 又由于DTW算法本身既简单又有效,但HMM算法要复杂得多。它需要在训练阶段提供大量的语音数据,通过反复计算才能得到参数模型,而DTW算法的训练中几乎不需要额外的计算。鉴于此,DTW更适合本系统的要求。
DTW算法原理:该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题。如果把测试模板的各个帧号n=1~N在一个二维直角坐标系中的横轴上标出,把参考模板的各帧号m=1~M在纵轴上标出,通过这些表示帧号的整数坐标画出一些纵横线即可形成一个网络,网络中的每一个交叉点(n,m)表示测试模式中某一帧的交汇点。DP算法可以归结为寻找一条通过此网络中若干格点的路径,路径通过的格点即为测试和参考模板中进行计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束。
DTW算法可以直接按上面的描述来实现,即分配两个N×M的矩阵,分别为积累距离矩阵D和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i,j)的值为测试模板的第i帧与参考模板的第j帧间的距离。D(N,M)即为最佳匹配路径所对应的匹配距离。
无论在训练和建立模板阶段还是在识别阶段,都先采用端点算法确定语音的起点和终点。已存入模板库的各个词条称为参考模板,一个参考模板可表示为R={R(1),R(2),……,R(m),……,R(M)},m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模板所包含的语音帧总数,R(m)为第m帧的语音特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为T={T(1),T(2),……,T(n),……,T(N)},n为测试语音帧的时序标号,n=1为起点语音帧,n=N为终点语音帧,因此N为该模板所包含的语音帧总数,T(n)为第n 帧的语音特征矢量。参考模板与测试模板采用相同形式的MFCC系数、相同的帧长、相同的窗函数和相同的帧移。
假设测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离 D[T,R],距离越小则相似度越高。为了计算