收藏 分销(赏)

利用MATLAB平台实现-少量字的语音识别功能-毕业论文.doc

上传人:二*** 文档编号:4510507 上传时间:2024-09-26 格式:DOC 页数:31 大小:1.95MB 下载积分:5 金币
下载 相关 举报
利用MATLAB平台实现-少量字的语音识别功能-毕业论文.doc_第1页
第1页 / 共31页
本文档共31页,全文阅读请下载到手机保存,查看更方便
资源描述
本科毕业论文(设计) 论文题目: 利用MATLAB平台实现 少量字的语音识别功能 学生姓名 学 号 专 业 物理学 指导教师姓名 职 称 部 门 物理系 论文题目 利用MATLAB平台实现少量字的语音识别 摘 要 摘要:初步研究两种不同的语音识别算法---动态时间伸缩算法(DTW)和隐马尔科夫模型(HMM), 初步探究并实现在MATLAB环境中应用DTW识别法的孤立字语音识别实验平台。 关键字:MATLAB,语音识别,LPC,LPCC,MFCC,动态时间伸缩算法(DTW),隐马尔科夫模型(HMM) Abstract 【Abstract】: Use two kinds of arithmetic to study speech recognition: Dynamic Time Warping (DTW) and the Hidden Markov Model (HMM). Build a basic test platform of speech recognition using DTW. 【Key words】: MATLAB, speech recognition, LPC, LPCC, MFCC, Dynamic Time Warping, Hidden Markov Model 目 录 引言 4 1.语音识别简介 5 1.1语音识别系统的分类 5 1.2语音识别系统的基本构成 5 2.语音识别参数 6 2.1线性预测系数(LPC) 6 2.2线性预测倒谱系数(LPCC) 8 2.3 MFCC系数 8 2.4参数计算流程 9 3.DTW算法 11 3.1 DTW算法原理 11 3.2 DTW的高效算法 14 4.HMM算法 16 4.1 HMM的原理 16 4.2 HMM的前向概率和后向概率 17 4.3识别算法——Viterbi解码 19 4.4 baum-welch算法 20 5.实验及总结 23 5.1 实验准备以及步骤 23 5.2 实验结果及讨论 25 5.3 实验结论 29 参考文献 30 引 言 自上世纪80年代开始,语音识别技术的研究进入了一个蓬勃发展的时期,一些商用系统也从实验室进入市场。然而,在实际的应用中,由于各种干扰因素导致的测试条件与训练环境的不匹配,系统的性能往往会收到极大的影响。因此提高语音识别系统的性能就成为了语音识别技术真正走向实用化的关键课题。 语音识别是以声音作为研究对象它是语音信号处理的一个重要研究方向,是模式识别的一个分支涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终目标是实现人与机器进行自然语言通信。本文研究了汉语语音识别技术及其实现方法。论文首先分析了语音信号预处理问题。对MFCC倒谱系数在语音识别中的运用做了详细介绍。其次研究了基于DTW的语音识别系统,针对DTW算法中系统识别性能过分依赖于端点检测、动态规划的计算量太大等缺陷,分别提出了快速DTW算法和端点松动的DTW算法,仿真结果比较理想。继而研究了基于HMM的语音识别系统。针对HMM在实际应用中的优化计算问题,包括初始模型选取,定标等进行了深入的分析与探讨。针对传统定标仍能溢出的问题,给出了无溢出的参数重估公式。 第一章 语音识别简介 1.1语音识别系统的分类 语音识别是近年来十分活跃的一个研究领域。在不远的将来,语音识别技术有可能作为一种重要的人机交互手段,辅助甚至取代传统的键盘、鼠标等输入设备,在个人计算机上进行文字录入和操作控制。本文介绍了语音识别的基本流程、所用到的语音参数算法、语音识别的训练算法和识别算法做初步的探究,主要运用了特定人孤立词识别的DTW算法和非特定人识别的连续HMM算法的MATLAB识别系统。 语音识别按说话人的讲话方式可分为孤立词(Isolated Word)识别、连接词(Connected Word)识别和连续语音(Continuous Speech)识别。孤立词识别是指说话人每次只说一个词或短语,每个词或短语在词汇表中都算作一个词条,一般用在语音电话拨号系统中。连接词语音识别支持一个小的语法网络,其内部形成一个状态机,可以实现简单的家用电器的控制,而复杂的连接词语音识别系统可以用于电话语音查询、航空定票等系统。连续语音识别是指对说话人以日常自然的方式发音,通常特指用于语音录入的听写机。显然,连续非特定人语音识别的难度要大得多,因为不仅有说话人口音的问题,还有协同发音、断字断句、搜索等问题,除了考虑语音的声学模型外还要涉及到语言模型,如构词法、文法等。 从识别对象的类型来看,语音识别可以分为特定人(Speaker Dependent)语音识别和非特定人(Speaker Independent)语音识别。特定人是指只针对一个用户的语音识别,非特定人则可用于不同的用户。实际上,非特定人语音识别的初始识别率往往都比较低,一般都要求用户花一定的时间对系统进行训练,将系统的参数进行一定的自适应调整,才能使识别率达到满意的程度。 非特定人大词表连续语音识别是近几年研究的重点,也是研究的难点。目前的连续语音识别大多是基于HMM(隐马尔可夫模型)框架,并将声学、语言学的知识统一引入来改善这个框架,其硬件平台通常是功能强大的工作站或PC机。 1.2语音识别系统的基本构成 语音识别系统的典型实现方案为:输入的模拟语音信号首先要进行预处理,包括预滤波、采样和量化、加窗、端点检测、预加重等。语音信号经预处理后,接下来很重要的一环就是特征参数提取。对特征参数的要求是: (1) 提取的特征参数能有效地代表语音特征,具有很好的区分性。 (2) 各阶参数之间有良好的独立性。 (3) 特征参数要计算方便,最好有高效的计算方法,以保证语音识别的实时实现。 在训练阶段,将特征参数进行一定的处理之后,为每个词条得到一个模型,保存为模版库。在识别阶段,语音喜好经过相同的通道得到语音参数,生成测试模版,与参考模版进行匹配,将匹配分数最高的参考模版作为识别结果。同时还可以在很多先验知识的帮助下,提高识别的准确率。 第二章 语音识别的参数 2.1 线性预测系数 语音信号是一种典型的时变信号,然而如果把观察时间缩短到十毫秒至几十毫秒,则可以得到一系列近似稳定的信号。人的发音器官可以用若干段前后连接的声管进行模拟,这就是所谓的声管模型。下图为语音产生的生理结构示意图: 图2-1 语音产生的生理结构示意图[1] 由于发音器官不可能毫无规律地快速变化,因此语音信号是准稳定的(quasi steady)。全极点线性预测模型(LPC)可以对声管模型进行很好的描述,这里信号的激励源是由肺部气流的冲击引起的,声带可以有周期振动也可以不振动,分别对应浊音(Vowel)和清音(Consonant),而每段声管则对应一个LPC模型的极点。一般情况下,极点的个数在12~16之间,就可以足够清晰地描述语音信号的特征了。LPC是语音分析的重要手段,它能很好地进行谱估计,即可作为语音特征的参数。因此仅用12个LPC系数就能很好地表示复杂语音信号的特征,这就大大降低了信号的冗余度并有效地减少了计算量和存储量,使之成为语音识别和语音压缩的基础。下图为以声管模型为基础的LPC模型: 图2-2 以声管模型为基础的LPC模型 由: 该式表示p个方程构成的方程组,未知数为p个。求解该方程组,就可以得到系统的线性预测系数。由基于自相关的递推求解公式求解,也就是所谓的Durbin算法得: ………………………………………………2.1 ……………………………..2.2 …………………………………………………...2.3 …………………………..2.4 ………………………………………2.5 公式中,上标表示第次迭代,每次迭代只计算和更新 直到时,结束迭代。 在MATLAB中利用lpc函数[2]计算LPC系数,其语法为: a = lpc(x,n); 这里x为一帧语音信号,n为计算LPC参数的阶数。通常x为240点或256点的数据,n取10~12,对语音识别来说就已经足够。 2.2 线性预测倒谱系数 在语音识别系统中,很少直接使用LPC系数,而是由LPC系数推导出另一种参数:线性预测倒谱系数(LPCC)。倒谱实际上是一种同态信号处理方法,标准的倒谱系数计算流程需要进行FFT变换[3],对数操作和相位校正等步骤,运算比较复杂。在实际运作中大多数语音识别系统都会采用倒谱参数来作为有关距离的度量。LPC 倒谱系数是描述说话人声道特性的,广泛应用于声纹识别。在实际计算中,当序列x(n)为最小相位的情况下,可以利用序列x(n)及其倒谱系数c(n)的递推关系来简化计算。 序列x(n)及其复倒谱系数c(n)的递推公式如下: ……...………...….2.6 LPCC参数是一种非常重要的参数,它不是由原始信号x(n)得到,而是由LPC系数得到的。由2.6式可得LPC到LPCC的直接递推关系。 ……………………………………………..2.7 ……………………2.8 ………………………...…..2.9 2.3 MFCC系数 LPC模型是基于发音模型建立的,LPCC系数也是一种基于合成的参数。这种参数没有充分利用人耳的听觉特性。实际上,人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的,基本上是一个对数的关系。近年来,一种能够比较充分利用人耳这种特殊的感知特性的参数得到了广泛的应用,这就是Mel尺度倒谱参数(Mel-scaled Cepstrum Coefficient),或称Mel频率倒谱系数,简称为MFCC。大量的研究表明,MFCC参数能够比LPCC参数更好地提高系统的识别性能。从目前使用的情况来看,在大词汇量语音识别应用中已逐渐取代原本常用的线性预测编码导出的倒频谱参数,原因是它考虑了人类发声与接收声音的特性,具有更好的鲁棒性。由于语音信号在时域上的变化快速而不稳定,所以通常都将它转换到频域上来观察,此时它的频谱会随着时间作缓慢的变化。所以通常将加窗后的帧经过快速傅立叶变换(FFT),求出每帧的频谱参数。再将每帧的频谱参数通过一组N 个( N 一般为20 ~ 30 个)三角形带通滤波器所组成的Mel频率滤波器,将每个频带的输出取对数,求出每一个输出的对数能量(log energy)Ek,k =1,2,... N。再将此N 个参数进行余弦变换(cosine transform) 求出L 阶的Mel -scale cepstrum 参数。[4] MFCC参数的计算是以“bark”为其频率基准的,它和线性频率的转换关系是: ……………………………….2.10 MFCC参数也是按帧计算的。首先要通过FFT得到该帧信号的功率谱,转换为Mel频率下的功率谱。这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器: ………2.11 MFCC参数的计算通常采用如下的流程: (1)首先确定每一帧语音采样序列的点数。对每帧序列进行预加重处理后再经过离散FFT变换,取模的平方得到离散功率谱。 (2)计算通过M个后所得的功率值,即计算和在各离散频率点上乘积之和,得到M个参数,。 (3)计算的自然对数,得到,。 (4)对计算其离散余弦变换,得到,。 (5)舍去代表直流成分的,取作为MFCC参数。 MATLAB中计算mfcc参数的函数为melcepst.m,其中调用了函数melbankm.m,用来计算M个滤波器的系数。 2.4 完整的参数计算流程 特征提取方法: 特征的选取取决于具体的系统,下面的特征是有代表性的: ①幅度(或功率) ②过零率 ③临界带特征矢量 ④线形预测系数特征矢量(LPC) ⑤LPC倒谱特征矢量(LPCC) ⑥ Mel倒谱系数(MFCC) ⑦前三个共振峰F1,F2,F3 具体步骤分4步: 1.端点检测 所谓端点检测,就是在实时输入的声音信号中,区分背景噪声和环境噪声,准确地判断出声音信号的开始点和结束点。这一过程应由特定的算法自动完成,通常利用短时能量来检测浊音,用过零率来检测清音,两者配合实现可靠的端点检测。端点检测算法常用的是由语音能量和过零率组合的有双门限法,以及短时能量和过零率的乘积构成的能频值法。 2. 预加重滤波器 在语音参数计算之前,一般要将其通过一个预加重滤波器。 3. 倒谱提升窗口 在为每帧数据计算出阶MFCC参数后,通常还要为这个系数分别乘以不同的权系数,实际上是一个短的窗口: ……………………………………………..2.12 ……………………2.13 4. 差分倒谱系数 标准的MFCC参数只反映了语音参数的静态特性,而人耳对语音的动态特征更为敏感,通常用差分倒谱参数来描述这种动态特性。 差分参数的计算采用下面的公式: …………………….2.14 这里c和d都表示一帧语音参数,k为常数,通常取2,这时差分参数就称为当前帧的前两帧和后两帧参数的线性组合。 第三章 DTW算法 3.1 DTW算法原理 在孤立词语音识别中,最为简单有效的方法是采用DTW(Dynamic Time Warping,动态时间弯折)算法,该算法基于动态规划(DP)的思想,解决了发音长短不一的模板匹配问题,是语音识别中出现较早、较为经典的一种算法。用于孤立词识别,DTW算法与HMM算法在相同的环境条件下,识别效果相差不大,但HMM算法要复杂得多,主要体现在HMM算法在训练阶段需要提供大量的语音数据,通过反复计算才能得到模型参数,而DTW算法的训练中几乎不需要额外的计算。所以在孤立词语音识别中,DTW算法仍得到广泛的应用。 在训练和建立模板阶段以及在识别阶段,都采用端点检测算法确定语音的起点和终点。已存入模板库的各个词条称为参考模板,一个参考模板可表示为,m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此为该模板所包含的语音帧总数,为第帧的语音特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为,为测试语音帧的时序标号,n=1为起点语音帧,n=N为终点语音帧,因此N为该模板所包含的语音帧总数,T(n)为第n帧的语音特征矢量。参考模板与测试模板一般采用相同类型的特征矢量(如MFCC系数)、相同的帧长、相同的窗函数和相同的帧移。测试和参考模板分别用T和R表示,为了比较它们之间的相似度,可以计算它们之间的距离D[T,R],距离越小则相似度越高。为了计算这一失真距离,应从T和R中各个对应帧之间的距离算起。设n和m分别是T和R中任意选择的帧号,d[T(n),R(m)]表示这两帧之间的距离。距离函数取决于实际采用的距离度量,在DTW算法中通常采用欧氏距离。 若N=M则可以直接计算,否则要考虑将T(n)和R(m)对齐。对齐可以采用线性扩张的方法,如果N<M可以将T线性映射为一个M帧的序列,再计算它与之间的距离。但是这样的计算没有考虑到语音中各个段在不同的情况下的持续时间会产生或长或短的变化,因此识别效果不可能最佳。因而更多地是采用动态规划(DP)的方法。 如果把测试模板的各个帧号n=1~N在一个二维直角坐标系中的横轴上标出,把参考模板的各帧号m=1~M在纵轴上标出,通过这些表示帧号的整数坐标画出一些纵横线即可形成一个网格,网格中的每一个交叉点(n,m)表示测试模式中某一帧与训练模式中某一帧的交汇点。DP算法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为测试和参考模板中进行距离计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束 图3-1 DTW算法路径原理示意图 为了描述这条路径,假设路径通过的所有格点依次为其中=(1,1),=(N,M)。路径可以用函数描述,其中,。那么下一个通过的格点只可能是下列三中情况之一: …………………………..3.1 用表示上述三个约束条件。求最佳路径的问题可以归结为满足约束条件时,求最佳路径函数,使得沿路径的积累距离达到最小值,即: ………...3.2 搜索该路径的方法如下:搜索从点出发,可以展开若干条满足的路径,假设可计算每条路径达到点时的总的积累距离,具有最小累积距离者即为最佳路径。易于证明,限定范围内的任一格点只可能有一条搜索路径通过。对于,其可达到该格点的前一个格点只可能是、和,那么一定选择这3个距离中的最小者所对应的格点作为其前续格点,若用代表此格点,并将通过该格点之路径延伸而通过,这时此路径的积累距离为: …………….....3.3 ….3.4 这样可以从=(1,1)出发搜索,再搜索……,对每一个都存储相应的前一格点及相应的帧匹配距离。搜索到时,只保留一条最佳路径。这便是DTW算法。[5] 3.2 DTW的高效算法 由于匹配过程中限定了弯折的斜率,因此许多格点实际上是到达不了的,如下图所示。因此菱形之外的格点对应的帧匹配距离是不需要计算的。另外也没有必要保存所有的帧匹配距离矩阵和累积距离矩阵,因为每一列各格点上的匹配计算只用到了前一列的三个网格。充分利用这两个特点可以减少计算量和存储空间的需求。 如图所示,把实际的动态弯折分为三段,,其中: ……………………………3.5 图3-2 DTW高效路径示意图 和都取最相近的整数。由此也得出对M和N长度的限制条件: ………………………………..3.6 当不满足以上条件时,认为两者差别实在太大,无法进行动态弯折匹配。 在X轴上的每一帧不再需要与Y轴上的每一帧进行比较,而只是与Y轴上间的帧进行比较,和的计算如下式: ................................3.7 ………………….3.8 也可能会出现的情况,此时弯折匹配的三段为。 对于X轴上每前进一帧,虽然所要比较的Y轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的: ……..3.9 由于X轴上每前进一帧,只需要用到前一列的累积距离,所以只需要两个列矢量D和d分别保存前一列的累积距离和计算当前列的累积距离,而不用保存整个距离矩阵。每前进一帧都进行更新,即按上式利用前一列的累积距离D和当前列的所有帧匹配距离d(x,y),求出当前帧的累积距离,保存于矢量d中,再把新的距离d赋值给D,作为新的累积距离,供下一列使用。这样一直前进到X轴上最后一列,矢量D的第M个元素即为两个模板动态弯折的匹配距离。 图3-3 DTW改进算法模型[6] 第四章 非特定人语音识别算法——HMM 4.1 HMM的原理 1. HMM基本概念 HMM,即隐马尔科夫模型(Hidden Markov Model),是在Markov链的基础之上发展起来的。由于实际问题比Markov链模型所描述的更为复杂,观察到的事件并不是与状态一一对应,而是通过一组概率分布相联系,这样的模型就称为HMM。它是一个双重随机过程,其中之一是Markov链,这是基本随机过程,它描述状态的转移。另一个随机过程描述状态和观察值之间的统计对应关系,即站在观察者的角度,只能看到观察值,不能直接看到状态,而是通过一个随机过程去感知状态的存在及其特性。 一个HMM模型由若干个状态组成,随着时间的变化,各个状态之间可以发生转移,也可以在一个状态内驻留。每个观察向量对不同的状态都有相应的输出频率。[7]以一个包含四个状态为例,状态之间或状态自身的转移概率用表示,输入观察序列为。每个观察序列是一帧MFCC参数。在这个模型中,序列是可观测的输入序列,称为观察序列,而每一时刻所处的状态却是隐含的。下表为HMM模型的各参数及其说明[8]: 模型参数 说 明 N 模型的状态数 状态转移矩阵, 各状态的起始概率分布, 输出概率密度函数, 其中输出概率密度函数中参数描述如下表所示。 参 数 说 明 O 观察向量 M 每个状态包含的高斯元的个数 第j状态第1个混合高斯函数的权 N 代表正态高斯概率密度函数 第j状态第1个混合高斯元的均值矢量 第j状态第1个混合高斯元的协方差矩阵 权系数满足下面的条件 ……………………………4.1 这种连续混合高斯HMM通常简称为CHMM。对于每一个状态,都用若干个正态高斯概率密度函数(简称为pdf)的线性组合来表示,每个pdf有各自的均值矢量和协方差矩阵,这些都是通过对大量的MFCC参数进行统计得到的。 对于HMM模型,有三个基本问题需要解决: (1)给定观察序列和HMM模型计算观察斜率对HMM模型的输出概率。 (2)给定观察序列和HMM模型确定一个最优的状态转移序列。 (3)调整使最大。 4.2 前向概率和后向概率——HMM的输出概率计算 1.HMM输出概率的计算 给定观察序列和HMM模型,如果已知状态转移序列,则有: …...4.2 HMM模型输出序列q的概率为: ……………….4.3 对所有可能的状态转移序列q,模型输出观察序列O的概率[9]。由全概率公式可得: ….4.4 该式大约需要次计算,这在实际中是无法承受的。为了降低计算复杂度,可以采用前向和后向算法。 2.HMM的前向概率和后向概率 首先定义HMM的前向概率为: ………………………...4.5 表示给定HMM模型参数,部分观察序列在t时刻处于状态的概率。那么有: a) 初始化: …………………………4.6 b) 递归: …………...4.7 c) 终结: ………………………………4.8 与前向概率相对应,还有后向概率。定义后向概率为: ……………………....4.9 表示HMM模型参数,观察序列在t时刻处于状态i,系统输出部分观察序列的概率。 后向概率也有类似的递推公式计算: a) 初始化: ……………………………4.10 b) 递归: ………….4.11 c) 终结: 前向概率和后向概率的递推关系由下图说明 图4-1 前向概率和后向概率示意图 3.利用前向概率和后向概率计算输出概率 前向概率公式和后向概率公式巧妙地将整个观察序列对HMM模型的输出概率分成两个部分观察序列的输出概率的乘积,而且它们各自都有相应的递推公式,可以大大简化计算[10]。经过分析,可以得到下面的输出概率计算公式: ………………4.12 实际上,这就是HMM三个基本问题中第一个问题的解答。它的另一种常用的形式是: …………..4.13 实际计算中首先计算出对于每个t和每个状态i的前向概率和后向概率,然后套用上面的公式,计算出该观察序列对模型的输出概率。这两个公式也称为全概率公式。 4.3 识别算法——Viterbi解码 Viterbi算法,不仅可以找到一条足够好的状态转移路径,还可以得到该路径所对应的输出概率。同时,用Viterbi算法计算输出概率所需要的计算量要比全概率公式的计算量小很多。 定义为时刻t时沿一条路径,且,产生出的最大概率,即有 ……………..4.14 Viterbi算法的递推形式如下 (1) 初始化 ………………………….4.15 …………………………………...4.16 (2) 递归 …………..4.17 ..................4.18 (3) 终结 ………………………………4.19 …………………………..4.20 (4) 状态序列求取: ……………….4.21 这里,为t时刻第i状态的累积输出概率,为t时刻第i状态的前续状态号,为最优状态序列中t时刻所处的状态,为最终的输出概率。 对语音处理应用而言,动态范围很大,或者说不同的Q使的值差别很大,而事实上是中举足轻重的唯一成分,因此,常常等价地使用和,那么,Viterbi算法也能用来计算。 4.4 Baum-Welch 算法 这个算法实际上是解决HMM训练,即HMM参数估计问题,或者说,给定一个观察值序列,该算法能确定一个,使最大。 由前向变量和后向变量的定义,有: …………..4.22 这里,求取,使最大是一个泛函极值问题。但是由于给定的训练序列有限,因而不存在一个最佳的方法来估计。在这种情况下,Baum-Welch算法利用递归的思想,使局部极大,最后得到模型参数。 定义为给顶训练序列O和模型时,时刻t时Markov链处于状态和时刻t+1为状态的概率,即 …………………………4.23 可以推导出: …………………4.24 那么,时刻t时Markov链处于状态的概率为: …………….…………4.25 因此,表示从状态转移到状态的次数的期望值。由此,导出了Baum-Welch算法的重估公式[11](reestimation): ..…………………………………..4.26 ……………… 4.27 …………….4.28 试推导该重估公式: 引理:设为正实数,为非负实数,即,那么由对数函数的凹特性有如下结论: ……..……….………..4.29 ………………….………..4.30 ..……………4.31 此处所有求和均是从1到S。 定义辅助函数 ...……………4.32 其中,为原来的模型,为新求取的模型,O为训练用观察值序列,,S为某个状态序列,那么,由引理易推出下面的定理[12]: 如果,那么。…………………..……..4.33 该定理构成了重估公式的理论基础:对辅助函数,重要能找到,使达到最大值,那么就能保证,从而使,这样,新得到的模型在表示训练序列O方面就比原来的模型要好。一直重复这个过程,直到某个收敛点,就可以得到根据训练序列O估计出的结果模型,而使最大而求取参数的公式就称之为重估公式。不同的,其参数,A和B就不同,重估公式的具体形式也不同[13]。 第五章 实验及总结 5.1 实验准备及步骤 实验平台为Windows平台上,采用Matlab数学工具通过完成程序而实现的。本实验主要采用DTW算法实现语音识别。 首先,我们使用windows自带的录音器,分别由我和合作者黄博录入了4组数据(1人两组),每组8个音频文件,本别为从“一”到“八”的汉语发音。其中一组为参考模板,另外一组为测试模板。 首先用wavread函数读入wav文件,用mfcc函数获得其MFCC参数,用vad函数对其进行端点检测,并保存语音部分的MFCC参数到参考模板的机构数组ref(i).mfcc中。 我们比较一下两个人的语音端点检测的短时信号图: 图5-1 说话者A发音的vad输出(1)——横轴:时间(单位:秒)纵轴:能量——(单位:eV)(上图)语音原始信号;Energy 短时能量(单位:eV);ZCR 过零率(单位:%) 图5-2 说话者A发音的vad输出(2)——横轴:时间(单位:秒)——纵轴:能量(单位:eV)(上图)语音原始信号;Energy 短时能量(单位:eV);ZCR 过零率(单位:%) 图5-3说话者B发音的vad输出(2)——横轴:时间(单位:秒)——纵轴:能量(单位:eV)(上图)语音原始信号;Energy 短时能量(单位:eV);ZCR 过零率(单位:%) Vad函数的功能就是通过端点检测功能甄别出语音信号的起始点与结束点,图中的红线就是程序标记的语音信号始末点,可以看出,杂音基本被排除,效果是非常明显的。 同时,从以上三个图的对比可以看出,不同发音者的发音波形及特性有较明显区别。 原始波形中,发音者A的波形在横轴两端不对称,而发音者B的波形在横轴两端比较对称; 能量波形中,两者的区别更加明显:发音者A的能量高峰在语音后部,发音者B的能量高峰在语音前部; 过零率波形中也可以明显看出两个人的区别。端点检测下的短时能量分析只是语音识别的第一步,但是通过该步骤已经可以粗略的区别出不同发音者,并且可以进一步分析发音者语音信号的特点。由此证明了端点检测在语音识别中是非常重要的。 5.2 实验结果及讨论 本实验的MATLAB运行环境中输出结果如下列图所示: 图5-4 说话者A的两组语音匹配结果及距离匹配矩阵 图6 说话者B的两组语音匹配结果及距离矩阵 从输出记过看,识别具有了一定程度的正确度。为了进一步验证结果,看一下匹配距离矩阵dist的数据如下图所示: 距离矩阵的对角线上是正确匹配模板的对应分数,可见对角线上的8个数值中有50%都是在本行中最小的,由此验证了识别结果的正确性。 图5-5说话者B的两组语音匹配结果及距离匹配矩阵 图5-6说话者A和B 的语音匹配结果及距离匹配矩阵 图5-7 说话者A和B的匹配矩阵的三维曲面图 图5-8 说话者A和B的匹配矩阵的的三维柱状图 图5-9 说话者A和B的匹配矩阵的灰度视图 结果显示:说话者A的自匹配识别率为89%,说话者B的自匹配识别率也为89% ,而A和B之间的识别率为62% 。 图5-4,图5-5,图5-6中的匹配矩阵元为每个语音信号和参考模板中所有共8个语音信号的匹配距离,可以看出,在正确识别情况下,矩阵对角线上的矩阵元是本行中最小的(同一个语音信号和自己匹配距离最小),在匹配失败的情况下,对角线上的矩阵元也是次最小的。这一结果说明了DTW的可靠性和稳定性。 图5-7,图5-8,图5-9以不同方式直观的显示了矩阵元的大小关系。X轴表示说话者A的语音信号编号,Y轴表示说话者B的语音信号编号,Z轴表示矩阵元的大小。 三维曲面图中的蓝色部分,灰度图中的全黑色部分为数值较小区域,可以看书,这个区域基本是在对角线上的。灰度图中的红色连线便显示了黑色方块分布在对角线上及附近。 自匹配的识别准确率达到90%,而不同发音者之间的识别率有明显下降,为60%。这也是显示出DTW算法在非特定人语音识别中不如特定人语音识别准确。 文献[1]指出,使用DTW算法的特定人孤立字语音识别率能高达近100% ,而我们始终无法达到这一效果。有几方面的原因: 1.录音设备和程序偏简单。一个非常良好和精确的模板库是高效率语音识别系统的基础。我们使用简易麦克风和windows自带录音程序可能无法建立一个完备的模板库。 2.DTW算法自身的缺陷。DTW自身算法只适用于孤立字语音识别,而且是简单字。因此识别机理上更加先进的HMM和ANN方法能够满足更高的要求。 对DTW算法进行改进(比如端点检测)已经提高了该算法的识别率。 3.DTW算法仅限于孤立字的语音识别,而连续语音的识别目前来说还比较难以达到高的识别率,这也是今后语音识别课题研究发展的方向。 5.3 实验结论 课题最终在MATLAB平台的基础上基本实现了个别个体的特定语音识别,基本上达到了预定的目的。基于DTW模型的语音识别简单的说就是通过MATLAB的程序段,将待识别的语音信号与数据库中的模板进行相似度对比,将相似度最高者最为识别结果输出,同时DTW的识别效率取决于参考模板的清晰度以及广泛度,如果能够建立一个范围庞大而且清晰的特定人语音库,将能够大大提高语音识别的效率。我们的试验由于时间以及外部设备的关系,难以组建一个非常精确的参考样本,因此识别的效率略微偏低,不过已经足够说明DTW识别算法在特定人孤立字语音识别中的巨大作用。本文对于DTW算法提出了几条在实际操作中切实可行的改进建议,并对MFCC参数编程和ANN的应用进行了探讨。在程序中,由于受数据库的局限,并没有实现对于语音的模糊识别,但个别个体的特定语音识别也具有广泛的用途。 参考文献: [1] Rabiner L, Juang B H. Fundamentals of Speech Recognition, Prentice-Hall International. Inc, 1999, p.17 [2] D.G.Childers, Matlab之语音处理与合成工具箱(影印版), 清华大学出版社, 2004, p.45-51 [3] 黄文梅, 熊桂林, 杨勇, 信号分析与处理—MATLAB语言及应用, 国防科技大学出版社, 2000, p.37-40 [4] 杨行峻, 迟惠生,“语音数字信号处理”, 电子工业出版社. 1995 [5] 张焱, 张杰, 黄志同, 语音识别中动态时间规整和隐马尔可夫统一模型 数据采集与处理 1997年03期 p.218-222 [6] 何强, 何英, MATLAB扩展编程[M], 清华大学出版社, 2002 p.345-347 [7] Rabiner L and Juang B H. Introduction to hidden Markov models, IEEE ASSP Mag, vol.3,no.1,4-16,1986 [8] Huang X D. Hidden Markov Models for Speech Recognition, Edinburgh Information Technology Series.1999(7):136-202 [9] Rabiner L, A tutorial on hidden Markov models and selected applications in speech recognition, Proc, of IEEE, 77(2)257-286,1989 [10] Jen+Tzung Chien, Predictive Hidden Markov Model Selection for Speech Recognition, IEEE Transaction on Speech and Audio Processing, vol.13, No.3, May 2005 [11] 谢锦辉, 隐Markov模型(HMM)及其在语音处理中的应用, 华中理工大学出版社. [12] Christo
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服