基于VB的智能语音灯
- 格式:pdf
- 大小:320.34 KB
- 文档页数:13
摘要:本设计介绍了用Visual Basic6.0调用Speech_SDK函数来实现语音识别功能,并用XML文件建立语法规则即用户词汇表,同时通过MAX232芯片把PC机与单片机相连用以通信。
用户可根据个人爱好设置不同的语音内容作为指令,或者通过单击控制界上的按钮来实现LED灯的亮灭控制。
语音识别作为一种重要的信息识别方式在金融、电信等领域有着极大的应用空间。
关键词:Visual Basic;Speech_SDK;语音识别;单片机目录引言 (III)1.毕业设计简介 (IV)1.1总体设计说明 (V)2语音识别程序及软件介绍 (V)2.1Visual Basic6.0简介 (V)2.2Speech SDK简介 (V)2.3XML文件简介 (VI)2.4语音识别过程 (VI)3单片机接收信号 (VII)3.1keil uvision4简介 (VII)3.2单片机接收信号过程 (VII)3.3电路连接图 (VIII)4结论 (VIII)参考文献: (X)引言对语音识别的研究起步于二十世纪五十年代,从二十世纪末开始进入实际应用。
语音识别在技术原理上主要采取匹配识别和检测识别两种识别方式,关键技术包括选择识别单元、特征参数提取、声学模型及语言模型的建立等。
语音识别是一门交叉学科,语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。
[1]智能语音行业是高度技术驱动的行业,其技术驱动力体现在两方面:一是语音技术核心算法的完善;二是芯片技术的不断进步。
目前语音技术的核心算法以统计模式识别方法为主,在芯片计算速度不断提高的同时成本显著降低,使得语音技术能更加广泛应用。
国内语音技术市场潜在需求巨大,综合考虑目前的技术成熟度和客户接受度,以下市场有望率先进入大规模应用时期:企业级语音市场:以呼叫中心应用为主,包括语音导航和声纹识别。
车载语音市场:目前以导航设备应用为主,语音合成技术在车载导航系统的使用已较为普遍,但语音识别技术不足10%。
未来随着语音识别技术的渗透率快速增长,车载语音市场规模有望提升。
移动终端市场:主要是语音技术在智能手机和平板电脑中的应用。
一是触摸屏和键盘等输入设备的补充和完善;二是移动终端语音技术新应用的不断出现。
随着科学技术的进步和社会的发展,物联网时代的到来,相信语音控制技术必将得到大力发展。
1.毕业设计简介语音识别研究在国内外已经有了很多年的发展历史,特别是在近些年,随着实验室条件下语音识别的飞速发展,语音识别的应用已经离我们越来越近。
语音识别作为一种重要的信息识别方式在金融、人机交互、电信等领域有着极大的应用空间。
近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。
语音识别是一门交叉学科,语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。
本设计是AT89C51芯片的电路为基础,通过Visual Basic 调用Speech_SDK 函数来实现语音识别功能,并用XML 文件建立语法规则即用户词汇表,大大提升了语音识别效率。
同时通过MAX232芯片把PC 机与单片机相连用以通信。
用户可根据个人爱好设置不同的语音内容作为指令点亮或熄灭相应LED 灯。
该设计有很好的实际使用价值,为单片机爱好者和语音爱好者提供了很好的借鉴。
1.1总体设计说明本设计是用Visual Basic6.0调用Speech_SDK 函数,以XML 文件为语法规则来实现语音识别功能,同时用MAX232芯片实现PC 机与单片机的相连。
用户可根据个人爱好设置不同的语音内容作为指令,或者通过单击控制界上的按钮来实现LED 灯的亮灭。
图1总体设计结构图2语音识别程序及软件介绍2.1Visual Basic6.0简介[2][3]Visual Basic 是微软公司开发的编程设计软件,它也是基于Windows 操作系统可视化编程环境。
Visual Basic 6.0因操作简单实用,所以从其问世以来很受专业程序员和编程爱好者的追捧。
Visual Basic 6.0由标题栏、菜单栏、工具栏、工具箱、窗体窗口、工程窗口、属性窗口、窗体布局窗口等构成。
Visual Basic 6.0的组件有很多,比如编辑器、设计器、属性等开发组件。
Visual Basic 6.0还提供了窗口编辑,可直接对窗口进行计算机VB 基于Speech_SDK 的语音识别。
89C51接收信号点亮相应的灯编辑和预览。
Visual Basic6.0的工具箱由指针、图片框、标签、文本框、框架、命令按钮、复选框、单选按钮、组合框、列表框、水平滚动条、垂直滚动条、定时器、驱动器列表框、目录列表框、文件列表、形状控件、直线、图像控件、数据控件、OLE容器构成。
2.2Speech SDK简介[4]微软、IBM等公司都相继推出了它们基于PC的语音识别产品。
其中,微软Speech SDK完全支持简体中文语音系统的开发,是开发语音软件的一个理想工具。
它是基于COM标准开发的,底层协议以COM组件的形式完全独立于应用程序层,为应用程序设计人员屏蔽了复杂的语音技术,充分体现了COM的技术优点。
[6]Microsoft Speech SDK中包含着一系列支持COM(组件对象模型)组件的语音自动控制接口,只要具备支持OLE(对象连接与嵌入)自动控制的通用语言就可实现该类语音识别应用程序的开发。
因此在VB环境下实现语音识别程序的开发就变得十分简单。
在Visual Basic环境下,利用事件驱动的编程机制、易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,以用动态链接库(DLL)、对象的链接与对象连接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件。
应用程序(Application)应用程序(Application)SAPI运行(SAPI Runtime)识别引擎(Recognition Engine)语音合成引擎(TTS Engine)图2Microsoft Speech SDK结构基于以上优点选择了应用Visual Basic结合Speech SDK开发语音识别系统并结合单片机实现语音控制灯。
2.3XML文件简介[7]可扩展标记语言(Extensible Markup Language,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML 是标准通用标记语言(SGML)的子集,非常适合Web 传输。
XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.本设计用来定义用户词汇表。
2.4语音识别过程该语音程序框架主要靠SAPI 运行来实现应用程序与语音引擎之间的协作,而SAPI 提供各种接口来实现不同的语音功能,如识别、朗读、等。
在本设计中计算机系统首先识别出用户发出的语音信息并根据其内容通过串口不断向单片机发送不同的指令。
否是图3语音识别程序结构框图3单片机接收信号3.1keil uvision4简介[6]Keil C51是美国Keil Software 公司出品的51系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部分组合在一起。
2009年2月发布Keil uVision4,Keil uVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
3.2单片机接收信号过程开始载入窗体,初始化接收语音信号是否为有效命执行相应命令发送指令[8]语音识别系统将识别出的信号通过串口发送给单片机,单片机接收信号处理后控制相应灯的亮灭。
其过程图大致如下:否是图4下位机程序设计方框图3.3电路连接图以51单片机为电路基础通过MAX232与PC 机相连其图如下:图5单片机接收信号电路连接示意图4结论串口初始接收信号判断点亮相应灯灯有效命令随着物联网技术的飞速发展,智能语音控制作为物联网的重要组成部分必将获得飞速发展。
通过本设计不仅让我对单片机及VB6.0用了更深的认识还使我对一项设计的研究过程所需的步骤和具体实现方法的力度掌握。
总之,这次设计从软件编写到连接调试,我用了大量时间和精力。
正是曾经为程序的编写暝是苦想过,曾经为无法找到错误而恼怒过,曾经为为某一功能不能实现而犹豫彷徨过,但最终成功了。
我不仅品味到结果的喜悦,也明白了过程的弥足珍贵。
致谢:通过这三个月来的忙碌和学习,本次毕业论文设计已接近尾声,作为一个大专生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次毕业设计。
在毕业论文设计过程中,我遇到了许许多多的困难。
在此我要感谢我的指导老师周江老师给我悉心的帮助和对我耐心而细致的指导,我的毕业论文较为复杂烦琐,但是周江老师仍然细心地纠正图中的错误。
除了敬佩周江老师的专业水平以外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决毕业设计中遇到的种种问题。
同时感谢我院、系领导对我们的教导和关注;感谢大学三年传授我们专业知识的所有老师。
谢谢你们呕心沥血的教导。
还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。
如果没有他们的帮助,此次毕业论文的完成将变得困难。
他们在我设计中给了我许多宝贵的意见和建议。
同时也要感谢自己遇到困难的时候没有一蹶不振,取而代之的是找到了最好的方法来解决问题。
最后,感谢生我养我的父母。
谢谢他们给了我无私的爱,为我求学所付出的巨大牺牲和努力。
参考文献:[1]《智能语音行业深度研究报告》海通证券2010,12,31[2]《VB6.0程序设计实训教程》杨克玉机械工业出版社[3]《VB6.0百度百科》[4]《基于Microsoft Speech SDK的语音关键词检出系统的设计和实现》林茜,欧建林厦门大学智能科学与技术系2007,12,30[5]《XML基础教程与实验指导》孙晓非清华大学出版社[6]《VB6.0环境下的语音识别程序开发方法》王军,童强湖北师范学院计算机科学与技术学院2010,6[7]《keil百度百科》[8]《单片机应用技术(C语言版)》王静霞电子工业出版社附录:VB上位机原程序:Option ExplicitDim WithEvents RC As SpSharedRecoContextPublic Grammar As ISpeechRecoGrammarDim Voice As SpVoiceDim strStext As StringPrivate Sub Exit_Click()Unload MeEnd SubPrivate Sub Form_Load()mPort=5MSComm1.Settings="9600,n,8,1"MSComm1.PortOpen=TrueSet Voice=New SpVoiceEnd SubPrivate Sub Label1_Click(Index As Integer)MSComm1.Output="A"Shape1.FillColor=vbRedEnd SubPrivate Sub Label2_Click()MSComm1.Output="B"Shape2.FillColor=vbRedEnd SubPrivate Sub Label3_Click()MSComm1.Output="C"Shape3.FillColor=vbRedEnd SubPrivate Sub Label4_Click(Index As Integer)MSComm1.Output="D"Shape4.FillColor=vbRedEnd SubPrivate Sub Label5_Click()MSComm1.Output="S"Shape1.FillColor=&H80FF80Shape2.FillColor=&H80FF80Shape3.FillColor=&H80FF80Shape4.FillColor=&H80FF80End SubPrivate Sub RC_Recognition(ByVal StreamNumber As Long,_ByVal StreamPosition As Variant, _ByVal RecognitionType As SpeechRecognitionType,_ByVal Result As ISpeechRecoResult_)strStext=Result.PhraseInfo.GetTextIf(strStext="打开阳台灯")ThenMSComm1.Output="A"Shape1.FillColor=vbRedEnd IfIf(strStext="关闭阳台灯")ThenMSComm1.Output="a"Shape1.FillColor=&H80FF80End IfIf(strStext="打开卧室灯")ThenMSComm1.Output="B"Shape2.FillColor=vbRedEnd IfIf(strStext="关闭卧室灯")ThenMSComm1.Output="b"Shape2.FillColor=&H80FF80End IfIf(strStext="打开厨房灯")ThenMSComm1.Output="C"Shape3.FillColor=vbRedEnd IfIf(strStext="关闭厨房灯")ThenMSComm1.Output="c"Shape3.FillColor=&H80FF80End IfIf(strStext="打开客厅灯")ThenMSComm1.Output="D"Shape4.FillColor=vbRedEnd IfIf(strStext="关闭客厅灯")ThenMSComm1.Output="d"Shape4.FillColor=&H80FF80End IfIf(strStext="关闭")ThenMSComm1.Output="S"Shape1.FillColor=&H80FF80Shape2.FillColor=&H80FF80Shape3.FillColor=&H80FF80Shape4.FillColor=&H80FF80End IfEnd SubPrivate Sub Star_Click()If(RC Is Nothing)ThenSet RC=New SpSharedRecoContextSet Grammar=RC.CreateGrammar(1)Grammar.DictationLoadEnd If'Grammar.DictationSetState SGDSActive Grammar.CmdLoadFromFile"tys.xml",SLODynamic Grammar.CmdSetRuleIdState0,SGDSActive End SubPrivate Sub Timer1_Timer(Index As Integer)Label5.Caption=Format(Now(),"HH:MM:SS")End Sub。