基于matlab的语音识别系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机电信息工程学院专业综合课程设计
系:信息与通信工程
专业:通信工程
班级:081班
设计题目:基于matlab的语音识别系统
学生姓名:
指导教师:
完成日期:2011年12月27日
一.设计任务及要求
1.1设计任务
作为智能计算机研究的主导方向和人机语音通信的关键技术,语音识别技术一直受到各国科学界的广泛关注。以语音识别开发出的产品应用领域非常广泛,有声控电话交换、语音拨号系统、信息网络查询、家庭服务、宾馆服务、旅行社服务系统、订票系统、声控智能玩具、医疗服务、银行服务、股票查询服务、计算机控制、工业控制、语音通信系统、军事监听、信息检索、应急服务、翻译系统等,几乎深入到社会的每个行业、每个方面,其应用和经济社会效益前景非常广泛。本次任务设计一个简单的语音识别系。
1.2设计要求
要求:使用matlab软件编写语音识别程序
二.算法方案选择
2.1设计方案
语音识别属于模式识别范畴,它与人的认知过程一样,其过程分为训练和识别两个阶段。在训练阶段,语音识别系统对输入的语音信号进行学习。学习结束后,把学习内容组成语音模型库存储起来;在识别阶段,根据当前输入的待识别语音信号,在语音模型库中查找出相应的词义或语义。
语音识别系统与常规模式识别系统一样包括特征提取、模式匹配、模型库等3个基本单元,它的基本结构如图1所示。
图1 语音识别系统基本结构图
本次设计主要是基于HMM模型(隐马尔可夫模型)。这是在20世纪80年代引入语音识别领域的一种语音识别算法。该算法通过对大量语音数据进行数据统计,建立识别词条的统计模型,然后从待识别语音信号中提取特征,与这些模
型进行匹配,通过比较匹配分数以获得识别结果。通过大量的语音,就能够获得一个稳健的统计模型,能够适应实际语音中的各种突发情况。并且,HMM算法具有良好的识别性能和抗噪性能。
2.2方案框图
图2 HMM语音识别系统
2.3隐马尔可夫模型
HMM过程是一个双重随机过程:一重用于描述非平稳信号的短时平稳段的统计特征(信号的瞬态特征);另一重随机过程描述了每个短时平稳段如何转变到下一个短时平稳段,即短时统计特征的动态特性(隐含在观察序列中)。人的言语过程本质上也是一个双重随机过程,语音信号本身是一个可观测的时变列。可见,HMM合理地模仿了这一过程,是一种较为理想的语音信号模型。其初始状态概率向量π,状态转移概率矩阵向量A,以及概率输出向量B一起构成了HMM的3个特征参量。HMM 模型通常表示成λ={π,A,B}。
2.4HMM模型的三个基本问题
HMM模型的核心问题就是解决以下三个基本问题:
(1)识别问题:在给定的观测序列O和模型λ=(A,B,π)的条件下,如何有效地计算λ产生观测序列O的条件概率P(O︱λ)最大。常用的算法是前后向算法,它可以使其计算量降低到N2T次运算。
(2)最佳状态链的确定:如何选择一个最佳状态序列Q=q1q2…qT,来解释观察序列O。常用的算法是Viterbi算法。
(3)模型参数优化问题:如何调整模型参数λ=(A,B,π),使P(O︱λ)最大:这是三个问题中最难的一个,因为没有解析法可用来求解最大似然模型,所以只能使用迭代法(如Baum-Welch)或使用最佳梯度法。
第一个问题是评估问题,即已知模型λ=(A,B,π)和一个观测序列O,如何计算由该模型λ产生出该观测序列O的概率,问题1的求解能够选择出与给定的观测序列最匹配的HMM模型。
第二个问题力图揭露模型中隐藏着的部分,即找出“正确的”状态序列,这是一个典型的估计问题。
第三个问题是使模型参数最优化,即调整模型参数,以使模型能最好地描述一个给定观测序列,最好说明这个观测序列就是最优化模型产生出来的。用于调整模型参数,使之最优化的观测序列称为训练序列。通过训练自适应调整模型参数使之适应于训练序列并最优化,从而得到实际应用中最好的模型。
三.系统设计
3.1系统框图
图3 系统整体结构框图
3.2实施方案
实施方法及具体过程如下:
(1)端点检测vad(x):采用双门限的算法。输入为采样语音数据x,输出X1,X2是起始端点和结束端点的帧数,并将xi到x2帧的语音数据存sample(k).wave 结构数组中。
(2)MFCC参数算法mfcc(x):输入为采样语音数据x,输出为mfcc参数,取x1—2至x2—2帧的mfcc参数到sample(k).data结构数组中。
(3)HMM参数初始化inithmm(samples,M):输入为samples和NX*1的数组M,N为状态数,M是每个状态包含的高斯混合个数。
(4)viterbit识别算法:输入删模型和mfcc参数,回溯最佳状态路径,返回输出概率和状态路径。
(5)训练过程train(sample,M):对一次迭代函数baum.m实施n次迭代(设置迭代次数)。输出为训练后的HMM模型参数和总输出概率,将模型参数存入hmm{i}(hmm为一个cell数组)。
(6)识别主程序(recog):对输入待识别的语音用函数vad进行端点检测,计算出MFCC参数之后,交由识别函数viterbi.m计算得到其对数形式的输出概率,最后显示出识别结果。
四.心得体会
通过这次课题,我们在自己的亲身实践中掌握了有关Labview以及matlab设计的思想和方法,对专业知识有了进一步的理解,对语言识别领域有了初步的认识。我们将以前学习的知识在这次设计中进行了充分的应用,通过解决问题得到了很多实践的经验,有助于我们以后的学习.。
通过自己搜集的资料和相关的专业知识,我们完成了理论算法与实际应用的设计,虽然在设计的过程中不断的遇到了很多问题,但是我们克服困难,一步步前进,这不仅丰富了我们的知识,给我们对理论与知识的结合与应用提供了动力,也给我们最后解决问题提供了欣喜的源泉,为我们今后的工作打下了坚实的基础。