




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(设计)题 目: 基于微软语音引擎的语音识别 学 生: 刘欢 学号: 201040620228 学 院:物理与电子科学学院 专业: 电子信息科学与技术 入学时间: 2010 年 9 月 15 日指导教师: 周小波 职称: 教授 完成日期: 2014 年 5 月 4 日诚 信 承 诺我谨在此承诺:本人所写的毕业论文基于微软语音引擎的语音识别均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名): 年 月 日基于微软语音引擎的语音识别作者:刘欢 学号:201040620228 指导老师:周小波摘要:本设计是利用微软语音软件开发包Speech SDK,在VC+6.0 的MFC平台下实现计算机语音识别的过程。通过对微软语音开发理论的学习与探索,了解MFC平台的开发与应用,掌握Microsoft Speech SDK (SAPI)在VC+6.0下的加载运行,设计出的在Windows系统下的人机交互语音识别系统。系统总体设计包含上位机设计和下位机设计,以上位机软件设计为主体设计部分,下位机部分作为功能扩展部分。其中下位机设计使用STC89C51单片机作为主控芯片,下位机软件采用C语言在Keil下编程实现。上位机控制部分包含打开Windows视窗程序、打开浏览器中的网站等操作。下位机控制部分主要是控制语音模块的语音播报。整个系统是围绕日常生活中人们所需进行设计的,为人们日常生活提供更多的便利。 关键词:语音识别、Speech SDK、MFC、单片机; The Speech Recognition design based on Microsoft Speech SDKName: LiuHuan Student ID:201040620228 Instructor:Xiaobo ZhouAbstract : The design which using the Microsoft Speech SDK was designed on the workspace of MFC by VC+6.0 and make it that PC speech recognition true. The man machine interaction system which operations on Windows Operation System was designed by learning and researching in the Microsoft Speech development theory , knowing the design and application on the workspace of MFC and the operation on VC+6.0.The whole system design was insisted of the upper computer design and the lower computer design , the upper computer design was the main design and the lower computer design was designed as an extended design.The main control chip of the lower computer design used STC89C51 MCU. The software of the lower computer was programmed by C program language at the workspace of Keil. The part of the upper computer control included opening the windows procedure, opening websites and so on . The main function of the lower computer control was controlling the voice broadcast which was produced by voice module . The whole system was designed by enclosing peoples daily lives , in order to make it much more convienient . Key words: speech recognition, Speech SDK, MFC, Microcontroller Unit ;目录1.引言11.1研究的背景11.2研究的意义11.3研究的目标12.系统整体设计概述12.1 设计环境要求12.2 功能概述23.语音识别系统底层概述33.1语音识别的基本原理33.2 Microsoft Speech SDK介绍44.系统上位机设计64.1 语音识别的过程64.1.1 COM库的初始化64.1.2 对语音识别对象的创建74.1.3 上下文语音识别命令的创建74.1.4 对识别消息和感兴趣事件进行设置74.1.5 语法和规则的装载74.1.6 响应各种事件84.2 上位机程序设计过程104.2.1编写语法规则文件104.2.2上位机系统初始化104.2.3消息函数实现115.系统下位机设计115.1 下位机硬件设计115.1.1 串口电平转换电路设计125.1.2 语音控制模块及流水灯电路设计135.2 下位机软件设计135.2.1 下位机串口通信波特率设置145.2.2 语音播报控制芯片时序控制156.系统配置与调试156.1上位机调试156.2下位机调试187. 设计总结18参考文献:19附录一:系统上位机部分源代码20附录二:XML语法规则文件代码31附录三:系统下位机源代码33致谢381.引言1.1研究的背景语音识别技术的产生与不断发展的过程已经有六十多年的历史, 在计算机与现代通信技术的不断进步,语音识别技术的进步及其扩大的应用领域也得以体现。目前,一些基于语音识别技术的产品如语音拨号电话,智能语音搜索引擎等在国内外都相继得到了开发与使用。最早利用计算机技术实现语音识别技术的有IBM、APPLE、GOOGLE等公司,在目前的Windows、Android等智能移动设备中都相继得到了开发。 1.2研究的意义语音识别技术是语音领域的重要组成部分,同时在计算机科学领域中发挥着不可或缺的作用。在应用领域中语音识别是人机交互方式的一个重要应用,伴随着语音技术、通信技术、智能物联网技术的发展,语音识别技术将在远程智能控制、教育培训、电子商务管理等各个新型领域中发挥着更大的作用。1.3研究的目标本设计的目标是利用微软语音开发包Microsoft Speech SDK 5.1 开发设计出具有语音识别功能的软件。该软件的使用是在Windows操作系统下运行的,识别相关语音命令来加载运行所指定的功能。2.系统整体设计概述2.1 设计环境要求系统整体设计包括上位机语音识别软件设计,下位机单片机及其应用硬件结构与程序算法设计。上位机采用在VC+6.0 的MFC平台下编程实现,下位机使用STC89C51单片机进行通信并实现相应的控制过程。在设计过程中的硬件要求有电源、一台装有VC+6.0的Windows PC、麦克风设备、串口或USB转串口设备、单片机最小系统以及实现相应功能的应用电路及其元器件等。2.2 功能概述在MFC加载编译,执行程序后,生成的可执行文件即最终的应用软件。启动应用软件后,系统立即进入语音识别状态,由用户对着PC的麦克风发出相关语音请求指令,系统会对发出的语音请求信号进行识别与判断,如果与预期设定的语音请求指令相一致,那么就可以获得有效的识别结果,在函数调用中加载相应的功能指令。在程序设计的过程中首先对系统进行初始化,包括语音初始化和串口初始化,其中串口初始化是为了与下位机进行通信,然后进入语音识别过程。本设计中加入了调用Windows系统视窗程序、打开网站、播放Flash动画与下位机进行通信并实现相应功能。如图1所示为系统功能流程。麦克风语音助理Windows系统视窗程序打开网站通信串口播放Flash启动计算器百度阜阳师范学院火车订票下位机打开文件夹语音播报奏乐流水灯 图1 系统功能流程3.语音识别系统底层概述3.1语音识别的基本原理根据语音识别在现实中的应用,语音识别存在以下几种形式:小词汇量与大词汇量的识别、无词汇数量限制的识别,独立单个词语与串联连续词句的识别,特定相关人与非特定相关人的识别。尽管语音识别系统存在着多种类别,但各种识别形式遵循相似的语音识别基本原理与处理方法。预处理声学参数分析测度估计判决语音库专家知识库失真测度语音信号识别结果如图2所示为语音识别原理的详细流程,当一个具有一定意义和信息含量的语音信息被录入识别系统时,系统会对其进行“训练(Training)”过程,其具体操作是开始分析语音信息的特征,接着按一定的指令将其传送到机器并存储起来。进行训练之后就会对语音进行“识别(Recognition)”,具体过程是与语音参数库中的参数模板进行比较,以此来判断识别结果是否理想。在识别过程中通常加入失真度比较环节,该过程中会计算“识别”过后的语音与语音参数矢量之间的“失真测度(DistortionMeasures)”,从中取出失真度最小的模块,即可当作最终理想的识别结果。图2 语音识别原理流图3.2 Microsoft Speech SDK介绍Microsoft Speech SDK是在windows 操作系统下视窗环境(如VC+6.0、Visual Studio等开发工具)语音开发工具包,其主要包含以下几种语音引擎,即应用设计接口(SAPI)、微软的串联语音及语音到文本的合成(TTS)引擎以及微软的连续语音识别引擎(MCSR)1。这里主要针对SAPI引擎作详细介绍,SAPI引擎主要用于对低层系统的控制,此外,还具有高度适应性的直接语音管理、训练向导管理、事件管理以及语音识别(SR)管理等。如图3所示为SAPI层,应用程序接口(API)层和设备驱动接口(DDI)层三者之间的结构图。Application(应用程序)Application(应用程序)SAPI Runtime (SAPI运行时)Recognition Engine(识别引擎)TTS Engine(语音合成引擎)APIDDI图3 微软Speech SDK底层驱动结构由上面的结构图可以看出在这里用户应用程序是通过SAPI与API层之间进行交互的,语音识别引擎是通过SAP层与DDI进行通信的。其中API层在对语音识别以及语音合成方面的程序开发起到了加快作用。因此语音识别API层在程序开发过程起到了主导作用,是在这里要详细介绍的一个环节。语音识别中存在的可共享语音识别引擎CRInstanceCreat_ISP是其主要接口。CRInstanceCreat_ISP在处理语音识别事件和应用程序接受消息通知的过程中起到了传输作用。应用程序在语音引擎的选择中有两种不同的选择方式。其中的共享式语音识别(Shared Recognition)在语音识别应用程序的共享语音识别引擎得到了广泛的应用,具备可用于提供给其他能够接受的语音识别应用程序的功能2。在创建一个可共享语音识别引擎 CRInstanceCreat_ISP对象的过程中,应用程序(APP)首先要调用COM 的ComCRInstanceCreat(SpShared_CLSID_ReCon)函数,从而SAPI可以将音频输入流设置为默认模式。如果在一个大型的服务程序中,通常需要驱动在一个系统上独立运行,为确保系统能够有一个稳定的工作状况,此时独占式语音识别(InProc Speech Recognition)引擎与共享式语音识别引擎(CRInstanceCreat_ISP)相比显得更加适合。在创建一个独占式语音识别引擎的CRInstanceCreat_ISP对象的过程中,应用程序同样要首先调用COM的ComCRInstanceCreat函数。在这里应用程序调用ComCRInstanceCreat(SpShared_CLSID_ReCon)函数的目的是创建独式识别引擎,为了对音频输入的设置,还需要调用ISpRecognizet:SetInput函数。最后一步的操作是对ISpRecognizet:CreateCRInstanceCreat函数的调用,用其来得到 CRInstanceCreat_ISP对象。接下来的操作是为APP感兴趣的事件来设置消息进行通知处理。作为IspEventSource的一种应用接口,在CRInstanceCreat_ISP接口中调用相应的方法用于指定CRInstanceCreat_ISP需要的特定的消息,这个方法可以是IspNotifySource。在这里不管什么样的事件在被处理之前都需要被ISpEventSource:InterestSET的方法来进行设定。在经过ISpEventSource:InterestSET方法事件设定过程的中,需要有SPEI_RECOGNITION事件来标识Recognizer_ISP,因为Recognizer_ISP是在CRInstanceCreat_ISP对语音识别之后的状态标识。 在设置好感兴趣事件之后,系统设计上需要指定何种语音,实现这个方法就需要以一定的指令或语法来进行约束,包含一定的控制语法和相关的口述命令。在这里应用程序需要首先创建和加载一个RecoGrammar_ISP接口,是为前面所提到的控制语法提供载体,而且在这个过程需要调用RecoGrammar_ISP:LoadDictation 方法,用其作为口述语法的载体。当确定好适当的控制语法之后,需要对口述状态进行设置,此时应用程序APP需要调用RecoGrammar_ISP:SetDictationState 方法以此来激活控制语法执行启动识别过程3。在APP执行请求的过程中,首先需要某个通知机制来得到相应的通知消息,实现此过程还需要lParam成员,其包含的IspRecoResult接口为APP确定了RecoGrammar_ISP 接口识别出的是何种语音信号。4.系统上位机设计在系统设计中上位机设计是主体设计部分,在这里上位机软件直接起到对Windows系统应用程序的操作作用,也是与下位机进行互动引导模块。本设计系统方案的软件是在VC+6.0 的MFC平台下设计并执行的,其中MFC平台(Microsoft Foundation Classes)是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。在MFC设计软件过程中,首先需要在Windows7系统下安装微软Speech SDK 5.1的语音发卡包,在VC+6.0的工具选项中导入Speech SDK 5.1 的库文件和头文件即加载软件底层接口驱动程序,通过语音识别来执行相关指令以实现相应的功能。4.1 语音识别的过程语音识别的编程离不开由上所述的几种语音识别引擎接口即以下四个语音引擎RecoGrammar_ISP,Recognizer_ISP ,ISpPhrase以及CRInstanceCreat_ISP它们都遵循COM组件的工作原理和Windows应用程序的工作原理即消息驱动机制,在实现过程中首先需要构造出操作语音识别的类即CSpeechRecognition,接下来即可通过CSpeechRecognition类来实现一个语音识别程序4。语音识别系统执行所需的各个引擎接口都在CSpeechRecognition类中封装好了,它们分别是m_cpRecoEngine,m_cpRecoCotxt和 m_cpDictationGrammars,使用这些接口的目的在于它们使语音识别过程得到了简洁方便。4.1.1 COM库的初始化COM库(Componet Object Model)即组件对象模型,是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准5。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。COM库存在于DLL中,其在OLE32.DLL与OLE32.LIB中,定义了一些常用的函数,因此对COM的调用必须先用函数CoInitialize (Null)来对其进行初始化。4.1.2 对语音识别对象的创建在对语音识别对象的创建过程中需要以特定的顺序定义各个语音接口的对象,语音识别对象的识别事件可以对计算机用户发出的声音做出响应,判断用户朗读的词汇并执行相应的操作。语音识别对象Recognizer Object是实现语音识别引擎的方法。 4.1.3 上下文语音识别命令的创建 上下文语音识别命令(Recognition Context)的创建是为系统在语音识别过程中,对语音识别的命令请求包括接收与发送消息起到了通知作用,同时为语法规则对象的创建起到了驱动作用,在创建语法规则对象时,一般每个语音识别上下文对象都对应一个消息处理函数,该对象由特定函数创建6。 4.1.4 对识别消息和感兴趣事件进行设置在这里需要首先调用函数SetNotifyWindowMessage,为了将识别消息送给windows,让windows辨别具体需要进行处理的识别消息。在对语音响应时间的确定时需要通过函数中定义的消息WMSrenent来计量,此时在初始化函数的响应窗口中会得到通知7。接下来需要对感兴趣事件进行设置。4.1.5 语法和规则的装载 语音识别引擎需要有一套特定的语法,APP需要首先初始化的步骤是语法的装载,而且需要对RecoGrammar_ISP 接口进行执行激活处理。当存在的语法规则被RecoGrammar_ISP 接口识别,ISpRecogContext对象会向APP发出语音识别消息,接下来就会对识别消息响应函数进行调用;在编辑消息函数中,获取识别的结果是通过ISpPhraser接口实现的8。在语法规则还没有被终止,这一步可以一直循环下去。根据实际应用的情况确定在此次程序设计采用听说式语法规则,由于它具有相当大的语言词汇量,适合汉语普通话的录入识别。4.1.6 响应各种事件在以上五个步骤都依次执行完毕时,即已经完成了语音识别的初始化过程,接下来就能对每个程序事件进行直接响应。当应用程序退出时,卸载COM平台。语音识别助理软件系统流程如图4所示。开始链接引擎正确装载XML命令语法设置麦克风正确麦克风接收语音命令状态识别正确将识别结果送给控制模块是否识别结束识别结束返回出错提示否否否是是是 是图4 语音识别助理软件系统流程4.2 上位机程序设计过程上位机设计总体过程包括语法规则文件即“微软语音识别CmdCtrl.xml”文件的编写、程序初始化即语音识别初始化和串口通信初始化以及消息函数的实现过程。其中文件采用记事本进行编辑,将需要录入的语音信息写入文件中。程序设计需要首先安装微软Speech SDK 5.1,VC+6.0中建立工程,在工程设计中加入串口通信、Flash控件。文件配置中添加语音引擎sapi的头文件和库文件。4.2.1编写语法规则文件 XML文件是一种可以用来作为扩展标记的语言文件,其主要作用是定义数据类型,使系统文件更具有结构化的特点9。在实际应用当中,XML文件需要由用户自己编写,来实现源语言的文件标记,XML文件在Web信息的交换中起到了主要的作用。XML文件的编写有一套统一的约束规则,而且XML文件在对系统主程序结构的描述和交换提供了独立的方法。在本上位机设计中需要装载XLM文件,在对语音识别信息语音信号录入的关键字依次写入XML语法规则文件中。在语音引擎加载完毕,系统需要装载XML命令,编写语法规则文件是用其来定义需要识别的命令。在这些由用户录入的特定的语句,需要命令控制约束进行对其识别,程序中编写的“微软语音识别CmdCtrl.xml”文件需要在语法规则RecoGrammar_ISP接口中装载并被激活。4.2.2上位机系统初始化程序初始化过程中需要对语音识别进行初始化,在这里语音识别初始化即4.1所述的COM口初始化、语音识别对象的创建、上下文语音识别命令的创建、识别消息和感兴趣事件的设置、语法和规则的装载六个底层驱动过程。接着是对串口进行初始化,串口初始化的目的是为了与下位机进行通信,串口初始化过程中需要进行的操作有串口端口号的设定、输入模式设定为二进制模式、收到一个字节引发OnComm事件、串口参数的设置其中波特率9600bit/s,无奇偶校验。4.2.3消息函数实现在以上语音识别引擎和串口初始化完毕,系统初始化完成,接下来是对程序消息函数的实现过程。在MFC程序运行过程中,程序需要由事件驱动。系统维护是维护窗口例行过程中主要的维护机制,对在传入系统的消息时消息处理函数会对其进行处理。在建立一个窗口前,为了让消息处理函数与窗口建立联系,消息处理函数必须先写,当系统检测到消息时就会调用消息处理函数。消息函数中包含的消息事件是在程序流程中依次被取出,在程序执行实现,将实现结果依次发送到特定的窗口中。整个消息响应过程是一个程序轮询的过程。在程序轮询中按照取出消息,派发消息的循环过程,直到退出循环,程序终止10。本程序在对消息响应函数的设计过程中,在语法规则被识别引擎CRInstanceCreat_ISP识别之后,应用程序需要由ISpRecoContext对象发出语音识别消息,并调用识别消息的各个响应函数。5.系统下位机设计为了实现更多的扩展应用,使人机互动过程更加灵活多样,系统方案中加入了PC与MCU的通信部分。系统下位机设计的硬件部分包括51单片机最小系统,电平转换电路,语音播报模块。系统下位机软件设计采用C语言在Keil下编程,将生成的.hex文件通过串口烧写到单片机。5.1 下位机硬件设计这里使用STC89C51单片机作为下位机MCU,系统电源采用电脑USB接口电源供电,语音模块供电部分采用两个二极管达到降压的目的,整个下位机电路系统包括语音模块电路,单片机最小系统电路以及串口电平转换电路,单片机最小系统电路如图5所示。其中电路板设计使用Altium Designer6.9 软件绘制原理图与PCB,电路板工艺设计过程中主要经过了电路板钻孔、线路曝光、线路显影以及线路腐蚀四个流程。图5 单片机最小系统5.1.1 串口电平转换电路设计由于电脑电平使用的是CMOS电平,而下位机最小系统采用的是TTL电平,在上位机与下位机进行数据交换时过程中,需要将电脑的COMS电平转换成下位机的TTL电平,将下位机的TTL电平转换成电脑的CMOS电平,上位机与下位机才能正常通信。本串口电平转换芯片选用MAX232芯片,串口电平转换电路如图所示。图6 串口电平转换电路5.1.2 语音控制模块及流水灯电路设计语音播报控制芯片选用广东唯创的WTV020-SD,该模块控制方式多样,这里选用该模块的三线串口控制方式,三线串口控制方式具有对存储在SD卡中的任意一个.AD4格式文件进行语音播报的功能。其硬件链接方式简单,只需CLK,RST以及DI三条线路与单片机的IO连接。流水灯电路中使用7个发光二极管加一个1K欧排阻进行限流,如图7所示为语音控制模块以及流水灯的接口电路。图7 语音模块与LED电路图8下位机硬件实物图5.2 下位机软件设计该系统下位机软件采用C语言在Keil下编程实现。软件实现的功能是当上位机接收到语音命令信息,向下位机串口发送相应的十六进制字符,下位机接收到串口发送的数据,通过选择判断,实现对应的功能要求,本设计案例中加入了语音播报与流水灯闪烁过程。下位机软件执行流程如图9所示:执行相关功能模块结束接收数据一致一致 否是等待串口发送并接收数剧波特率、IO口初始化开始图9 下位机执行流程图5.2.1 下位机串口通信波特率设置为了使上位机与下位机能进行正常通信,这里单片机使用11.0592MHz晶振,波特率设定为9600 bit/s。根据波特率的计算公式: 其中X为定时器的初始值,fosc为单片机使用的晶振频率大小。此过程需要对单片机的定时器,串行口控制寄存器以及PCON寄存器进行设置。定时器工作方式选择定时器一的方式二,串行口方式选择方式一,即串行口使用10位通用异步通信接口,此时PCON寄存器的SMOD位设定为0。根据以上条件和波特率计算公式得出定时器一的初始值X。5.2.2 语音播报控制芯片时序控制这里语音播报芯片WTV020-SD使用的是三线串口控制模式,其实现机制是是由单片机的三个IO口按照一定的时序分别控制CLK,RST以及DI。其控制时序如图10所示。在RST信号拉低5ms之后,CLK信号需要立即拉高300ms并等待数据线2ms的时间,数据线可随时钟线发送数据,每次发送两个字节数据即音频文件的文件名,这里音频文件名是以十六进制形式命名的两字节格式。当文件名的十六位数据发送完毕,语音播报芯片开始响应输出对应的语音文件,即时序图中的BUSY信号为高电位,表示有语音输出这个状态。图10 三线串口控制时序6.系统配置与调试6.1上位机调试系统上位机设计是在Windows7系统下进行配置的,上位机实现调试阶段主要是针对上位机麦克风的训练。系统上位机在对Windows系统视窗程序、打开网站和播放Flash动画都是在PC上完成的,当用户在一定的距离之内对着麦克风发出语音请求,Windows弹出相应的功能表示上位机软件在PC中的设计没有问题。上位机麦克风训练过程首先需要打开Windows7系统,进入控制面板的轻松访问界面启动语音识别并设置麦克风。如图11 所示为启动语音识别配置麦克风。图11 启动语音识别配置麦克风当上位机进入系统弹出软件欢迎动画界面如图12所示。 图12 软件欢迎动画界面系统上位机软件打开后,当用户对着麦克风呼出“阜阳师范学院”,Windows界面弹出阜阳师范学院的网站。图13 小叶同学正对着麦克风呼叫“阜阳师范学院”图14 Windows 弹出阜阳师范学院网站窗口6.2 下位机调试系统下位机调试主要针对串口通讯和语音播报模块的时序调试。串口通讯调试过程中,由上位机发送十六进制字符如果下位机接收到相应的字符那么波特率设置正确。在语音播报控制模块的调试中需要严格按照WTV020-SD的三线控制时序,其中CLK与DI时序如图15示波器截图所示,黄线是CLK,绿线是DI。 图15 示波器检测到的CLK与DI时序波7. 设计总结本设计过程是学习与设计的同步过程,由于在校期间软件方面知识很是欠缺,本设计是从开始接触MFC到了解在MFC平台下开发软件的一个开始阶段。设计制作过程中也是从一点一滴学起来的,并逐步完善的。为了让整体设计效果达到实用性与趣味性,在设计过程中相继添加了几个生活中实用性的模块。因为语音识别技术是人机互动的一种方式,在人的意志控制下,以发出语言的方式让机器来实现人的意愿是很有趣,很友好的。当然,在设计过程遇到了一些问题,解决这些问题的过程的同时也提升了学习能力,在历时几个月的学习与设计的时间里,对软件设计有了初步认识。参考文献:1 Microsoft Speech5.1SDKHelp Z.2 李逸波,郭天杰,王华驹.最新语音识别技术M 北京:电子工业出版社,1998.3 安居院猛,中嵨正之.计算机语音处理(日)M 北京:国防工业出版社,1987.4 孟威,黄维通 Visual C+ 程序设计教程M 北京:机械工业出版社,2002.5 李禹才,左友东,郑秀清.基于SpeechSDK的语音控制应用程序的设计与实现J.计算机应用,2004.6 李松, 沈文轩.基于Microsoft SpeechSDK5. 1 实现中英文朗读 J. 7 宋阳.利用SAPI5完成中文语音音素的分解 J.微计算机息,2005.8 朱民雄,闻新,黄健群,周露-计算机语音技术M.北京:北京航空航天大学出版社,2002.9 杨尚国,杨金龙.语音识别技术概述J1福建电脑,2006.10 张艳.基于MFC平台下的语音识别系统的设计.计算机语音技术,2007.附录一:系统上位机部分源代码/基于微软语音引擎的语音识别/阜阳师范学院/物理与电子科学学院.实验C楼103/刘欢/2014.5.4#include stdafx.h#include voice.h#include voiceDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();enum IDD = IDD_ABOUTBOX ; protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support protected: DECLARE_MESSAGE_MAP(); void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX); BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP()/ CVoiceDlg dialogCVoiceDlg:CVoiceDlg(CWnd* pParent /*=NULL*/): CDialog(CVoiceDlg:IDD, pParent) B0=0;m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CVoiceDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CVoiceDlg)DDX_Control(pDX, IDC_EDIT1, m_Edit1);DDX_Control(pDX, IDC_WEBSITE, m_website);DDX_Control(pDX, IDC_SHOCKWAVEFLASH1, m_FlashPlayer);DDX_Control(pDX, IDC_MSCOMM1, m_com);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CVoiceDlg, CDialog)/AFX_MSG_MAP(CVoiceDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnAddFlash)ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)ON_MESSAGE(WM_RECOEVENT, OnRecoEvent)ON_BN_CLICKED(IDC_WEBSITE, OnWebsite)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CVoiceDlg message handlersBOOL CVoiceDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/* 语音识别初始化*/HRESULT hr =m_SREngine.InitializeSapi(this-GetSafeHwnd(), WM_RECOEVENT);if(FAILED(hr)return FALSE;hr = m_SREngine.LoadCmdFromFile(微软语音识别CmdCtrl.xml); if(FAILED(hr)/:MessageBox(NULL, HERE,OK,MB_OK);return FALSE;hr = m_SREngine.SetRuleState(NULL, NULL, SPRS_ACTIVE /*TRUE*/);if(FAILED(hr)return FALSE;/* 语音识别初始化*结束*/if(m_com.GetPortOpen()m_com.SetPortOpen(FALSE);m_com.SetCommPort(1);m_com.SetInputMode(1);m_com.SetInBufferSize(1024);m_com.SetOutBufferSize (512);m_com.SetSettings(9600,n,8,1);if(!m_com.GetPortOpen()m_com.SetPortOpen(true);m_com.SetRThreshold(1);m_com.SetInputLen(0); m_com.GetInput();return TRUE; / return TRUE unless you set the focus to a controlvoid CVoiceDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);void CVoiceDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint(); /*CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BIT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省蚌埠市怀远实验教育集团2022-2023学年九年级上学期语文第三次月考试卷(含答案)
- 2025科技、互联网行业劳动合同书范本
- 2025年安徽中考试题及答案
- 伊宁河大桥施工方案审批
- 出租楼梯安装方案范本
- 刺线护网安装施工方案
- 烟囱防腐调研方案范本
- 物业项目咨询方案范本
- 专业顾问考试题目及答案
- 2025专利许可合同范本
- 稳评从业人员培训考试及答案解析
- 2025年甘肃省兰州市榆中县招聘乡村医生考试参考试题及答案解析
- 燃气入户安检课件
- 预防静电安全知识培训课件
- 临时用电专项施工方案(老旧小区改造项目)
- 2025党校中青班入学考试试题及答案
- GB/T 8165-2025不锈钢复合钢板和钢带
- 2025年中国咖啡饮料行业市场深度分析及发展战略规划报告
- 小学生科普课件向日葵
- 铁路工务介入管理办法
- 25年一建建筑实务真题及答案
评论
0/150
提交评论