语音识别算法及其实现

2019-07-17 16:01发布

一、概述
1.1. 选题意义

目前,高科技发展迅速,日新月异,而因为实际需要,各种防盗技术也日趋多样化。其中智能人声防盗系统引起了我们的兴趣,因此我们选了语音识别算法及其实现这一课题,来探究一下语音识别的原理及其实现过程。语音识别研究的根本目的是研究出一种具有听觉功能的机器,能直接接受人的口呼命令,理解人的意图并做出相应的反映。语音识别系统的研究涉及微机技术、人工智能、数字信号处理、模式识别、声学、语言学和认知科学等许多学科领域,是一个多学科综合性研究领域。近年来,高性能数字信号处理芯片DSP技术的迅速发展,为语音识别的实时实现提供了可能。其中,凌阳公司的单片机以其良好的性价比和代码的可移植性被广泛地应用于各个领域。因此,我们采用凌阳公司的具有DSP功能和语音特 {MOD}的完全SOC技术的凌阳十六位单片机来实现语音信号的识别。
1.2. 实验目的
1、掌握特定人语音辨识技术。
2、可以应用于简单语音控制场合。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
五谷道场
1楼-- · 2019-07-17 17:03
二、算法原理
2.1. 语音识别的基本过程
      根据实际中的应用不同,语音识别系统可以分为:特定人与非特定人的识别、独立词与连续词的识别、小词汇量与大词汇量以及无限词汇量的识别。但无论那种语音识别系统,其基本原理和处理方法都大体类似。一个典型的语音识别系统的原理图如图1所示。



      语音识别过程主要包括语音信号的预处理、特征提取、模式匹配几个部分。预处理包括预滤波、采样和量化、加窗、端点检测、预加重等过程。语音信号识别最重要的一环就是特征参数提取。提取的特征参数必须满足以下的要求:
      (1)提取的特征参数能有效地代表语音特征,具有很好的区分性; (2)各阶参数之间有良好的独立性;
      (3)特征参数要计算方便,最好有高效的算法,以保证语音识别的实时实现。
      在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,保存为模板库。在识别阶段,语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。同时,还可以在很多先验知识的帮助下,提高识别的准确率。
2.2. 语音识别的DSP实现技术
2.21. 浮点运算的定点实现
      在语音识别的算法中,有许多的浮点运算。用定点DSP来实现浮点运算是在编写语音识别程序中需要首先解决的问题。这个问题可以通过数的定标方法来实现。数的定标就是决定小数点在定点数中的位置。Q表示法是一种常用的定标方法。其表示机制是:
      设定点数是J,浮点数是f,则Q法表示的定点数与浮点数的转换关系为: 浮点数f转换为定点数x:x= (int)y×2Q;定点数z转换为浮点数y:y      =(float)x×2-Q。
2.22. 数据精度的处理
      用16b的定点DSP实现语音识别算法时,虽然程序的运行速度提高了,但是数据精度比较低。这可能由于中间过程的累计误差而引起运算结果的不正确。为了提高数据的运算精度,在程序中采用了以下的处理方法:
      (1)扩展精度 在精度要求比较高的地方,将计算的中间变量采用32b,甚至48b来表示。这样,在指令条数增加不多的情况下却使运算精度大大提高了。
      (2)采用伪浮点法来表示浮点数
      伪浮点法即用尾数+指数的方法来表示浮点数。这时,数据块的尾数可以采用Q1.15数据格式,数据块的指数相同。这种表示数据的方法有足够大的数据范围,可以完全满足数据精度的要求,但是需要自己编写一套指数和尾数运算库,会额外增加程序的指令数和运算量,不利于实时实现。
      以上两种方法,都可以提高运算精度,但在实际操作时,要根据系统的要求和算法的复杂度,来权衡考虑。
2.23. 变量的维护
      在高级语言中,有全局变量与局部变量存储的区别,但在DSP程序中,所有声明的变量在链接时都会分给数据空间。所以如果按照高级语言那样定义局部变量,就会浪费大量的DSP存储空间,这对数据空间较为紧张的定点DSP来说,显然是不合理的。为了节省存储空间,在编写DSP程序时,最好维护好一张变量表。每进入一个DSP子模块时,不要急于分配新的局部变量,应优先使用已分配但不用的变量。只有在不够时才分配新的局部变量。
2.24. 采用模块化的程序设计方法
      在语音识别算法的实现中,为了便于程序的设计和调试,采用了模块化的程序设计方法。以语音识别的基本过程为依据进行模块划分,每个模块再划分为若干个子模块,然后以模块为单元进行编程和调试。在编写程序之前,首先用高级语言对每个模块进行算法仿真,在此基础上再进行汇编程序的编写。在调试时,可以采用高级语言与汇编语言对比的调试方式,这样可以通过跟踪高级语言与汇编语言的中间状态,来验证汇编语言的正确性,并及时的发现和修改错误,缩短编程周期。另外,在程序的编写过程中,应在关键的部分加上必要的注释与说明,以增强程序的可读性。
      在总调时,需要在各模块中设置好相应的人口参数与出口参数,维护好堆栈指针与中间变量等。
五谷道场
2楼-- · 2019-07-17 19:58
三、硬件设计及功能描述
3.1. 外接电路组成部分
IOB1
IOB0
两个发光二极管
5V
电压

此部分硬件用于显示语音控制的现象。1K电阻用于限流作用。
3.2. 凌阳单片机简介
凌阳十六位单片机是台湾凌阳公司2001年推出的新一代单片机,具有高速度、低价、可靠、实用、体积小、功耗低和简单易学等特点。其有多种型号,经过比较我们选择了其代表型号SPCE061A。因为该型号在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,芯片只内嵌32K字的闪存(FLASH)。较高的处理速度使其能够非常容易地、快速地处理复杂的数字信号。现比较而言,SPCE061A微控制器是适用于数字语音识别应用领域产品的一种经济的选择。
SPCE061A的内部结构图如下图所示,其中输出端IOA15和IOB15分别接上图的IOB1 IOB0,组成整体电路。
五谷道场
3楼-- · 2019-07-17 21:35
 精彩回答 2  元偷偷看……
五谷道场
4楼-- · 2019-07-17 23:53
五、原程序清单
五谷道场
5楼-- · 2019-07-18 04:34
六、总结
我首先要感谢在设计准备过程中给予我们帮助的钱老师,还要感谢给予我们帮助和指导的研究生宋坤师兄!自从听老师讲DSP开始我就对这门课怀有恐惧心理,尤其是到后来听不懂老师讲的东西的时候,我更是惴惴不安,怀疑是不是自己太笨了,老师讲的东西也听不懂了。但是在设计过程中我们没有气馁,翻阅了大量的资料,在前辈的指导下,最后终于有了一个初步的设计思路。首先我要说明一点,这里的程序并不全是我们的成果,所有的子程序都是凌阳科技大学计划里公开的源文件。我们设计的整体思路是从2003年大学生电子科技大赛的一个参赛项目中演化出来的,并受了它不少的影响。目前还没有动手去做,只是进行了理论推算和验证,目前从理论上看这是可行的,下一步我们就要开始进行单片机编程和连接了。做这个设计让我学到了很多东西,自学了很多单片机的一些知识,而且又复习了C语言的知识。而且通过做这个设计,也锻炼了我搜集、分析和处理信息的能力。
同时我还有一个小小的建议,就是希望学校能够拍一些研究生在我们进行设计的初期给一点指导和建议什么的,这样有助于我们更好地完成本次设计任务,效果也会更好的。
agopie
6楼-- · 2019-07-18 06:07
:victory:

一周热门 更多>