孤立词语音识别程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

孤立词语音识别程序
信息处理仿真实验语音处理部分
实验目的
------- 按所学相关语音处理的知识,自己设计一个孤立词语音识别程序,分析所设计系统的特性。

熟悉不同模块间如何进行有效的组合,以及模块内的设计,重点掌握特征参数的提取和模式识别方法,并对不同的特征参数提取方法和模式匹配方法有大概的了解,知道其不同的优缺点。

实验内容
1、熟悉预处理、特征参数提取、模式匹配三个模块的原理,并设计这三个模
块的matlab子程序。

2、设计主程序,将上述3个模块合理组合构成一个系统,训练模板并测试。

三、实验原理及设计步骤
1、孤立词语音识别系统:先用端点检测将语音中有用的语音部分提取出来(即将头部和
尾部的静音部分除掉),然后提取语音信号的Mel尺度倒谱参数(MFCC)进行动态归整(DTW算法)后与模板库里面的标准语音作比较,具体流程如下:
失直灘
图3.1孤立词语音识别系统
2、各模块解析
⑴预处理:包括反混叠失真滤波器、预加重器、端点检测和噪声滤波器。

这里将预加重
器和噪声滤波器放在下一个模块里,所以预处理主要进行端点检测以捕捉到数据中的语音信息。

端点检测采用双门限法来检测端点。

同时,利用过零率检测清音,用短时能量检测浊音,两者配合。

整个语音信号的端点检测可以分为四段:静音、过渡段、语音段、结束。

程序中使用一个变量status来表示当前所处的状态。

在静音段,如果能量或过零率超越了低门限,就应该开始标记起始点,进入过渡段。

在过渡段中,由于参数的数值比较小,不能确信是否处于真正的语音段,因此只要
N 1 S(m) ln
k 0
2
X w(k) H m(k) 0 m M
两个参数的数值都回落到低门限以下,就将当前状态恢复到静音状态。


如果在过渡段中两个参数中任意一个超过了高门限,就可以
确信
进入语音段了。

一些突发性的噪声可以引发短时能量或过零率的数值很高,但是往往不能维持足够长的时间,这些可以通过设定最短时间门限来判别。

当前状态处于语音段
时,如果两个参数的数值降低到低门限以下,而且总的计时长度小于最短时
间门限,则认为这是一段噪音,继续扫描以后的语音数据。

否则就标记好结
束端点,并返回
⑵特征参数提取:常用的语音识别参数有线性预测参数(LPC),线性预测倒谱
参数(LPCC)和Mel尺度倒谱参数(MFCC等。

这里提取语音信号的Mel尺度倒谱参数(MFCC,步骤如下:
图3.2特征参数提取
分析:
①预加重
y(n) x( n)-0.97x( n 1)
②加汉明窗
X w(n) y(n) w(n)
③FFT
N 1 j 2 nk/ N
X w(k) X w( n)e
n 0
这里直接采用现成的FFT快速算法。

④对频谱进行三角滤波
程序采用归一化mel滤波器组系数
⑤计算每个滤波器的输出能量
⑥离散余弦变换(DCT)得到MFCC
M
C(n) S(m)cos n(m 0.5) / M n 1,2,..., p 特征参数
m 1
通常协方差矩阵一般取对角阵,三角滤波器组的对数能量输出之间存在着很
大的相关,采用DCT这种正交变换可以去除参数之间的相关性,从而使后端
识别模型采用对角阵具有更高的识别率
⑦归一化倒谱提升
w = 1 + 6 * sin( u / 12) 1 u 12
w = w/max(w)
⑧计算差分系数并合并mfcc参数和一阶差分mfcc参数将其作为一个整体,让
参数更完备。

⑶模式匹配:有矢量量化技术、DTW HMM技术、人工神经网络技术。

目前,语音识别的匹配主要应用HMM和DTW两种算法。

DTW算法由于没有一个有效地用统计方法进行训练的框架,也不容易将低层和顶层的各种知识用到语音识
别算法中,因此在解决大词汇量、连续语音、非特定人语音识别问题时较之HMM(法
相形见绌。

HMM!—种用参数表示的,用于描述随机过程统计特性的概率模型。

而对
于孤立词识别,HMM算法和
DTV算法在相同条件下,识别效果相差不大,又由于DTW算法本身既简单又有效,但
HMM(法要复杂得多。

它需要在训练阶段提供大量的语音数据,通过反复计算才能得
到参数模型,而DTW算法的训练中几乎不需要额外的计算。

鉴于此,DTW更适合
本系统的要求。

DTW算法原理:该算法基于动态规划(DP的思想,解决了发音长短不一的模板匹配问题。

如果把测试模板的各个帧号n=1~N在一个二维直
角坐标系中的横轴上标出,把参考模板的各帧号m=1~Mi纵轴上标出,
通过这些表示帧号的整数坐标画出一些纵横线即可形成一个网络,网络中的每一个
交叉点(n,m)表示测试模式中某一帧的交汇点。

DP算法可以归结为寻找一条通过
此网络中若干格点的路径,路径通过的格点即为测试和参考模板中进行计算的帧号。

路径不是随意选择的,首先任何一种语音的发音快慢都有可能变化,但是其各部分
的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束。

DTW算法可以直接按上面的描述来实现,即分配两个NX M的矩阵,分别为积累距离矩阵D和帧匹配距离矩阵d,其中帧匹配距离矩阵d(i j)的值为测试模板的第
i帧与参考模板的第j帧间的距离。

D(N, M 即为最佳匹配路径所对应的匹配距离。

无论在训练和建立模板阶段还是在识别阶段,都先采用端点算法确定语音的起点和终点。

已存入模板库的各个词条称为参考模板,一个参考模板可表示为R={R( 1),R( 2),……,R( m,……,R (M) },m为训练语音帧的时序标号,m=1为起点语
音帧,终点语音帧,因此M为该模板所包含的语音帧总数,R( m为第m帧的语音
特征矢量。

所要识别的一个输入词条语音称为测试模板,可表示为T={T (1),
T(2),……,
T(n),……,T( N) },n为测试语音帧的时序标号,n=1为起点语音帧,n=N为终
点语音帧,因此N为该模板所包含的语音帧总数,T (n)为第n 帧的语音特征矢量。

参考模板与测试模板采用相同形式的MFC(系数、相同的帧长、相同的窗函数和相
同的帧移。

假设测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离D[T,R],距离越小则相似度越高。

为了计算
这一失真距离,应从T 和R 中各个对应帧之间的距离算起。

设 n 和m 分 别是T 和R 中任意选择的帧号,d[T (n ), R (m ]表示这两帧特征矢量 之间的距离。

距离函数取决于实际采用的距离度量,在 DTW 算法中通常 采用欧氏距离。

四、实验结果及分析
首先通过训练得到词汇表中(’盘古';'语音的特征序列,直接将这些序列存储为模板 的特征序列依次与各参考语音特征序列进行 最小且小于识别阈值的就认为是识别结果:
伏羲';'女娲';’神农')各参考 在进行识别时,将待识语音 DTW 匹配,最后得到的总失真度
正在计算参考模板的参数...
ans =68 ans =73 ans = 65
ans = 67 24 24
24
24
正在计算测试模板的参数...
ans =50 ans
=67 ans =53 ans =50 24 24
24
24
正在进行模板匹配... 正
在计算匹配结果... 测试
模板 测试模板 测试模
板 测试模板 分析:
1 2 3 4 的识别结果为 的识别结果为 的识别结果为
的识别结果为 盘古 伏羲 女娲 神农
从输出的结果看,识别得到了正确的结果,这是由于采用了预加重、 归
一化导谱提升、加入差分系数。

为了进一步验证识别的正确性,看一 下匹配距离距阵dist 的数据:
dist = 1.0e+004 * 2.3121 6.8274 7.2506 3.9750 4.7722 2.8580 6.6624 4.7198 7.2296 9.4980 2.4080 4.7717 4.6276 7.1958 5.3798 3.6102
距离距阵的对角线上是正确匹配模板的对应分数,
可见对角线上的 4个数值都是在本行中最小的,由此验证了识别结果的正确性。

但由于需要对大量路径及这些路径中的所有节点进行匹配计算, 导 致计算量极大,随着词汇量的增大其识别过程甚至将达到难以接受的程 度,因此无法直接应用于大、中词汇量识别系统。

五、实验体会与思考
这次实验,我所做的工作主要是设计并实现各模块的合理组合。

虽然在学习课程中已经对MATLA有过一定的理论学习,但是要读懂MATLAB 的程序还需要找相关的书来看,通过这次实践,对matlab的语法与应用更加了解,培养了我们独立分析问题和解决问题的能力。

在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。

而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。

虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次实验的最大收获和财富,使我终身受益。

要实现这个Dtw与Test的算法,主要是弄懂它的帧匹配距离的由来和累积距离的计算公式。

这也是实现本系统最难得一环,经过不断的调试修改,最终实现了算法的要求。

Dtw算法采用动态规划技术,存在一些问题:(1)运算量大。

由于要找出最佳匹配点,因此要考虑多种可能的情况•虽然路径限制减少了运算量,但运算量仍然很大,因而使识别速度减慢•这在大词汇量的识别中是一个严重缺点。

(2)识别性能过分依赖于端点检测。

端点检测的精度随着不同音素而有所不同,有些音素的瑞点检测精度较低。

由此影响识别率的提高。

(3)没有充分利用语音信号的时序动态信息。

在检测语音信号的端点时,一般采用平均能量或平均幅度值与过零率相乘的方法来判断。

如果所取窗长度较小,显然能够比较精确地检测到语音的端点,但会使运算量加大识别速度减慢,同时会把一些短时的脉冲噪音误认为语音,从而产生错误的识别。

如果所取窗长较大,可以加快语音处理的速度,会跳过一些短时噪音,但是端点的检测误差增加,对DTW这种端点非常敏感的算法几乎是致命的。

窗长取一合适的中间值固然可以减少窗长过短和过长的消极影响,但毋庸置疑也减弱了其积极的一面。

相关文档
最新文档