当前位置: 首页 > news >正文

基于matlab的语音识别系统

设计任务及要求

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设计的思想和方法,对专业知识有了进一步的理解,对语言识别领域有了初步的认识。我们将以前学习的知识在这次设计中进行了充分的应用,通过解决问题得到了很多实践的经验,有助于我们以后的学习.。

通过自己搜集的资料和相关的专业知识,我们完成了理论算法与实际应用的设计,虽然在设计的过程中不断的遇到了很多问题,但是我们克服困难,一步步前进,这不仅丰富了我们的知识,给我们对理论与知识的结合与应用提供了动力,也给我们最后解决问题提供了欣喜的源泉,为我们今后的工作打下了坚实的基础。


参考文献

  1. 郭圣权,连晓峰.MATLAB环境下的基于HMM模型的语音识别系统.计算机测量与控制,2004,12(5):470- 475.
  2. 王炳锡,屈丹,彭宜.实用语音识别基础.北京:国防工业出版社,2005:258-266.
  3. 刘么和.语音识别与控制应用技术.北京:科学出版社,2008: 1- 35.
  4. 胡广书.现代信号处理教程.北京:清华大学出版社,2004: 397- 398.
  5. 吴朝晖,杨莹春著.说话人识别模型与方法.北京:清华大学出版社,2009: 21- 76.
  6. 段红梅,汪军,马良河,等.隐马尔可夫模型在语音识别中的应用.工科数学,2002.
  7. 谢锦辉.隐Markov模型(HMM)及其在语音处理中的应用.武汉:华中理工大学出版社,1995.

http://www.mrgr.cn/news/66585.html

相关文章:

  • Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
  • 管易到金蝶销售数据集成全流程详解
  • 配置文件格式(xml、properties、yml/yaml)
  • k8s 查看cpu使用率最高的pod
  • DAY18|二叉树Part06|LeetCode: 530.二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236.二叉树的最近公共祖先
  • pyinstaller 打包二进制 spec 文件解析
  • C++ | Leetcode C++题解之第540题有序数组中的单一元素
  • 【Linux 28】应用层协议 - HTTPS
  • Golang | Leetcode Golang题解之第540题有序数组中的单一元素
  • Python | Leetcode Python题解之第541题反转字符串II
  • 连通区域的scipy.ndimage.label 中的label
  • C++算法练习-day37——112.路径总和
  • 云计算esxi 虚拟交换机上的基本配置
  • 好好看 3.2.3 | 纯净无广告的四端追剧软件,高清秒播
  • Python | Leetcode Python题解之第540题有序数组中的单一元素
  • linux终端代理设置
  • Redis核心知识点简介,快速记忆
  • c 语言链表的简单使用
  • 掌握PyQt5图形界面化工具及绑定爬虫程序
  • 在 HFSS 3D 布局中提升端口
  • 数据库——用户偏好设置
  • Wi-Fi AP模式入门(基于ESP-IDF)
  • Linux编程:DMA增加UDP 数据传输吞吐量并降低延迟
  • 2025 - 全网最牛的生物信息学分析 - 一键式生成DIFF_GSEA_WGCNA_GO_KEGG_DO
  • ESXI 6 主机系统介绍
  • 【error】 react 控制台报错Invalid hook call