毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc

上传人:laozhun 文档编号:3984935 上传时间:2023-03-30 格式:DOC 页数:40 大小:5.12MB
返回 下载 相关 举报
毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc_第1页
第1页 / 共40页
毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc_第2页
第2页 / 共40页
毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc_第3页
第3页 / 共40页
毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc_第4页
第4页 / 共40页
毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)计算机语音人机交互研究一种基于网格方法控制光标定位的解决方案.doc(40页珍藏版)》请在三一办公上搜索。

1、学号06150134编号2010150134研究类型应用研究分类号TP391.42HUBEI NORMAL UNIVERSITY学士学位论文Bachelors Thesis论文题目计算机语音人机交互研究 一种基于网格方法控制鼠标光标定位的解决方案作者姓名指导教师所在院系计算机科学与技术学院专业名称计算机科学与技术完成时间2010年5月25日计算机语音人机交互研究 一种基于网格方法控 制鼠标光标定位的解决方案王军(指导教师:童强)(湖北师范学院 计算机科学与技术学院 0601班 湖北 黄石 435002)摘要:语音识别是让机器听懂人的说话,并准确地识别出语音的内容和执行相应操作的技术.本文着重讨

2、论了语音控制鼠标光标的实现方法,并通过比较和总结找到一个较语音目标导航和语音方向导航有很大突破的网格法。这里通过33网格半透明窗体的屏幕覆盖将计算机屏幕划分为9块,让鼠标光标以该透明窗体为载体来移动,用户通过选择19网格区域号来实现光标移动,每进行一次选择窗体就缩小至选择区域,通过循环执行后可将鼠标光标移动至屏幕任意位置。最后,将网格法通过程序实现,并通过使用和测试说明网格法的使用价值和可能的应用前景。关键词:语音识别 语音人机交互 鼠标光标定位 网格法 中图分类号: TP391.42 Computer Speech Human-Computer Interaction Research Gr

3、id based solutions to control the mouse cursor positioning Wang Jun (Tutor:Tong Qiang) (College of Computer Science and Technology ,Hubei Normal University, Huangshi,435002)Abstract: Speech recognition is a kind of technology to allow machines to understand human speech, and accurately identify the

4、speechs content and implementation of appropriate operations. This article focuses on the implementation method of useing voice to control the mouse cursor , and by comparing and summing up to find a more objective speech navigation and significant breakthrough voice directions navigation that is gr

5、id method. Here a 3 3 grid semi-transparent screen cover will form the computer screen divided into nine, so that the mouse cursor attach to the transparent form for the carrier to move, users select the region number 1 to 9 to achieve the grid cursor, each time a choice to choose form to reduce the

6、 area after the execution. By circulating ,mouse cursor can be moved to anywhere on your screen. Finally, the grid method is achieved through the program, and there are also some instructions about the usefulness and possible applications by using the grid method and test. Keywords: Computer Speech

7、Human-Computer Interaction ; Speech recognition; grid; mouse cursor control 目 录 1 绪论11.1研究背景和意义11.2 课题发展现 状11.3 开发方法52 网格法控制光标定位理论研究92.1基于语音识别的光标控制类型92.2 网格法提出背景92.3 网格法提出112.4 网格法程序设计思想133 网格法控制光标定位程序设计与实现143.1 网格法光标定位程序开发目标143.2 关键算法设计154 以网格法为基础的简单语音人机交互系统设计与实现254.1 系统概要设计254.2 系统功能实现254.3 系统程序实现

8、274.4 系统运行与测试294.5 系统改进和优化325 总结和展望335.1 论文总结335.2 研究展望33致 谢35参考文献36计算机语音人机交互研究 一种基于网格方法控制鼠标光标定位的解决方案1 绪论1.1研究背景和意义语言是人际交流的最习惯、最自然的方式。声音是人们最熟悉、最习惯的传递信息的方式,为计算机增加声音交互,使人机交互向人与人交流那样自然友好一直是人类的美好愿望。因此,本文正是基于此方面的科研成果对计算机进行语音程序开发。在原有计算机控制系统中加入以Speech SDK5.1为核心的语音识别模块,使语音技术与计算机控系统有机地结合并实现简单的人机交互。在计算机语音控制过程

9、中,这里主要实现语音对鼠标的控制来达到控制计算机的目的,只要实现语音对鼠标的精确控制再加上语音输入法就可完成对计算机的完全控制,而且这种控制具有很强的通用性,目前这种技术已得到初步应用。许多研究者通过对使用情况调查发现,这项技术已让世界发生很大改变,比如残疾人也可以通过声音命令控制计算机。但与此同时,许多调查者也发现,语音识别在控制计算机的过程中产生的错误和时延也越来越多的影响人们的使用质量,如在控制鼠标过程中移动时的时延将使得鼠标的定位不精确及操作不方便,因此研究如何最大限度的减少甚至消除语音识别过程中的这些缺陷正成为研究这项技术的最大出发点。本课题也是基于这种目的而开始的,这里通过网格法实

10、现语音识别过程中鼠标的精确确定位和方便操作以实现更好的人机交互效果和使用效率,是一种在此类研究中十分有突破性的实现方案。1.2 课题发展现状1.2.1 语音识别概述 语音不仅是人类之间进行信息交流最自然、最有效、最方便的工具,而且也是人与机器之间进行通信的重要工具。语音识别(Automatic Speech Recognition,ASR)作为一门综合学科,以语音为研究对象,是语音信号处理的一个重要研究方向,它是模式识别的一个分支,涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域。在美国, 八十年代末期, 由C M U推出的S P H I N X 系统, 克服了语音识别中非特定人

11、、连续语音、大词汇量三大难题。IBM公司推出了Tangora5000,其特定人5000词汇自然语言语法复杂度为160个词识别系统的首选识别率超过97%。Bell实验室开发的识别五个词VRCP系统和800语音识别服务系统,在电话业务中得到了较好的应用。在日本,NTT公司开发的ANSER系统,已经用于银行服务系统。在英国,剑桥大学开发的HTK大词汇量连续语音识别系统,在NIST和ARPA连续语音识别系统性能评测中识别率名列首位。在德国、法国等欧洲国家,语音识别也得到了足够的重视,建造了许多很有特色的连续语音识别系统。近年来,中文的语音识别取得很大的进展。我国语音识别研究工作一直紧跟国际水平,大词汇

12、量语音识别的研究被列入了国家“863”计划。鉴于中国未来庞大的市场,国外的研究机构和跨国公司也非常重视中文的语音识别研究,从IBM的ViaVoice到Microsoft的Speech SDK都支持中文语音识别,并且提供中文语音识别的开发包。1 根据识别的对象不同,语音识别任务大体可分为3类,即孤立词识别(isolated word recognition),关键词识别(或称关键词检出,keyword spotting)和连续语音识别。其中,孤立词识别 的任务是识别事先已知的孤立的词,如“开机”、“关机”等;连续语音识别的任务则是识别任意的连续语音,如一个句子或一段话;连续语音流中的关键词检测针

13、对的是连续语音,但它并不识别全部文字,而只是检测已知的若干关键词在何处出现,如在一段话中检测“计算机”、“世界”这两个词。根据针对的发音人,可以把语音识别技术分为特定人语音识别和非特定人语音识别,前者只能识别一个或几个人的语音,而后者则可以被任何人使用。显然,非特定人语音识别系统更符合实际需要,但它要比针对特定人的识别困难得多。另外,根据语音设备和通道,可以分为桌面(PC)语音识别、电话语音识别和嵌入式设备(手机、PDA等)语音识别。不同的采集通道会使人的发音的声学特性发生变形,因此需要构造各自的识别系统。语音识别的应用领域非常广泛,常见的应用系统有:语音输入系统,相对于键盘输入方法,它更符合

14、人的日常习惯,也更自然、更高效;语音控制系统,即用语音来控制设备的运行,相对于手动控制来说更加快捷、方便,可以用在诸如工业控制、语音拨号系统、智能家电、声控智能玩具等许多领域;智能对话查询系统,根据客户的语音进行操作,为用户提供自然、友好的数据库检索服务,例如家庭服务、宾馆服务、旅行社服务系统、订票系统、医疗服务、银行服务、股票查询服务等等。11.2.2 语音识别技术原理 语音技术的概念实际包括两个技术:合成器和识别器。语音合成器将文本作为输入,并产生音频流作为输出。语音合成也称为“文本到语音”(text-to-speech,TTS)。另一方面,语音识别器的行为刚好相反。它将音频流作为输入,并

15、将其转换为文本副本。语音识别比语音合成更复杂。可以认为其具有一个前端和一个后端。前端处理音频流,从而分隔可能发声的声音片段,并将它们转换成一系列能够在信号中表示元音的数值。后端是一个专用的搜索引擎,它获取前端产生的输出并跨以下三个数据库进行搜索:一个发音模型、一个词典和一个语言模型。发音模型表示一种语言的发音声音,可通过训练来识别某个特定用户的语音模式和发音环境的特征。词典列出该语言的大量单词,以及关于每个单词如何发音的信息。语言模型表示一种语言的单词如何合并。这两种模型都很重要。准确指定什么语音听起来相似是不可能的。而且,人类的语音很少遵循可以轻松定义的严格且正规的语法规则。生成好模型的一个

16、必要因素是获得大量可表示的数据。另一个同等重要的因素是用于分析该数据以生成实际模型的技术的复杂性。当然,同一个单词不会存在两次发音完全相同的情况,因此识别器也无法找到一个准确的匹配。而且对于给定的声音片段,说话者的言语中可能包含了很多潜在含意。因此,识别器的质量取决于它提炼搜索、排除不适当匹配以及选择更类似匹配的能力。识别器的准确性依赖于它是否具有优秀的语言和发音模型,以及用于处理声音和跨模型搜索的算法。模型和算法越好,错误就越少,而且找到结果也越快。无庸置疑,这是一项非常困难的技术。虽然识别器的内置语言模型旨在表示一个广泛的语言域(例如,英文日常用语),但是任何给定的应用程序通常有非常具体的

17、语言模型要求。特定的应用程序通常只需要某些对它而言具有特定语义的说话方式。因此,除了使用通用语言模型外,应用程序还应该使用一种语法来限制识别器只收听应用程序关注的语音。这有很多好处:增加了识别的准确性,确保了所有识别结果对应用程序有意义,而且使识别引擎能够指定在识别文本中固有的语义值。图 1-1显示关于这些优势如何实际投入使用的一个示例。2图 1.1 使用针对应用程序输入的语音识别1.2.3 SAPI5.1 的工作原理 语音识别的功能由一系列的 COM 接口协调完成,下面先介绍语音识别的主要接口:IspRecognizer 接口:用于创建语音识别引擎的实例,在创建时通过参数选择引擎的种类识别引

18、擎有两种:独占(InProcRecognizer)的引擎和共享(Shared Recognizer)的引擎。独占的引擎对象只能由创建的应用程序使用,而共享的引擎可以供多个应用程序共同使用。IspRecoContext 接口:主要用于接受和发送与语音识别消息相关的事件消息,装载和卸载识别语法资源。3IspRecoGrammar 接口:通过这个接口,应用程序可以载入、激活语法规则,而语法规则里定义着期望识别的单词短语和句子。通常有两种语法规则:听写语法(Dictation Grammer)和命令控制语法(Command and ControlGrammer)。听写语法用于连续语音识别,可以识别出引

19、擎词典中大量的词汇,例如,可以识别报纸上的一篇文章、你的一段讲话、一个故事等,也就是说,可以用语音代替键盘进行文字输入;命令控制语法主要用于识别用户在语法文件里自定义的一些特定的命令词汇和句子,譬如,菜单命令(打开文件,保存文件,插入等),上网(当说出网址时候,电脑自动转到指定网址)。这些语法规则以 XML 文件的格式编写,通过 IspReco Grammar 接口载入、激活。Isp Phrase 接口:用于获取识别的结果,包字、识别了哪一条语法规则等。语音识别的功能由上面的 COM 接口共同完成特定的工作程序。概括地说,语音识别的工作原组件的工作原理和一般 Windows 应用程序的工作驱动

20、机制相似,具体如下:(1)首先,初始化 CO M;(2)接着要实例化各个语音接 口(以特定的顺别语法、识别消息,使识别引 擎处于工作状态);(3)当有语法规则被 识别后,语音接口向应用音识别消息;(4)在识别消息响应函数里,通过 IspPhrase 接收的结果;(5)应用程序退出时,卸载COM。 图1.2 微软 Speech SDK结构图中,该语音框架主要靠SAPI运行来实现应用程序与语音引擎之间的协作,而SAPI提供各种接口来实现不同的语音功能,如识别、朗读、训练等。1.3 开发方法1.3.1 开发工具 语音识别程序一般是基于语音开发工具包开发的,目前常用的工具包有Microsoft Spe

21、ech SDK 和IBM VoiceType两种。而前者毋庸置疑是基于Windows平台下开发该类应用程序的最佳工具,其SAPI(Microsoft Win32-compatible speech application programming interface)提供了实现文字-语音转换(Text-to-Speech)和语音识别(Speech Recognition)程序的基本函数,大大简化了语音编程的难度,降低了语音编程的工作量。因此Microsoft Speech SDK 备受语音识别程序开发者们青睐。同时在Microsoft Speech SDK中还包含一系列支持COM(组件对象模型)

22、组件的语音自动控制接口,只要具备支持OLE(对象连接与嵌入)自动控制的通用语言就可实现该类语音识别应用程序的开发。而VB语言正是具备以上条件的通用性语言,因此在VB6.0环境下实现语音识别程序的开发就变得十分简单,这是因为在一些基于Windows的语言开发工具中都会提供与语音识别引擎的良好接口,这使得在基于这些语言开发工具下开发语音识别程序变得异常方便。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发

23、Windows环境下功能强大、图形界面丰富的应用软件系统。4 基于VB6.0环境下的语音识别程序的软硬件配置要求为:安装Microsoft Speech SDK 5.1,安装麦克风,安装VB6.0集成开发环境, XML编辑工具。1.3.2 开发过程及简单实例介绍 (1)参见1.3.1中基于VB6.0语音识别程序开发工具的软硬件配置要求安装相关软硬件。 (2)建立用户词汇表。用户词汇表即用户对应用程序所说的内容,用户对应用程序所说的词或词组所组成的集合便构成用户词汇表。用户词汇表也是开发语音识别程序必不可少的组成部分。用户对应用程序的控制只能通过用户词汇表中词或词组来实现,用户词汇表中的内容将会

24、与应用程序中的相关命令对应而最终转化为可供应用程序执行的控制命令。用户词汇表中的内容也是用户在进行音频信息输入时唯一可被输入的信息,音频输入信息的类容必须在词汇表所覆盖的内容范围之内,一旦其超出词汇表范围,应用程序将无法识别。另外,词汇表中的具体词或词组的内容一般与其所要实现的控制命令相对应,如在词汇表中定义“stop”这个词时,一般是要实现关闭程序的命令,当用户向应用程序说出“stop”时,应用程序便可执行关闭命令。对于本程序中建立词汇表是要用到Notepad2这个文本编辑工具。同时在建立用户词汇表时还必须遵循相关语法规则。下面演示具体实现过程: 打开XML编辑工具,用以下格式将用户词汇表添

25、加到XML文件中,这些命令将作为用户的语音输入命令,也是主程序中的语法。 - - - now start now next now stop now pause now select one ok 以上代文本码符合XML语法规则,在此要特别注意中的编号809,809为英文识别引擎使用编号,若使用中文识别引擎则应使用编号804。我们需要知道如何将用户的词或词组添加进去并最终组成一个用户词汇表。这里我们需要做的工作就是在这些语句中的 之间添加用户所要添加的词或词汇,如以上now start中即表明“now start”这个词已经添加进用户词汇表,若要继续添加只需执行相同操作即可。当用户将所有要对应

26、用程序说的词或词汇全部添加完毕后,即可将该文件命名并保存为.xml文件。由此,用户词汇表即创建完毕。在此需要说明的是,本示例中是使用英文识别引擎,因此该方法中常见用户词汇表不支持中文词汇或词组的模式,虽然能将中文词或词汇写入进该文件中,但在程序执行时是无法识别的。如有特别需求,中文词或词汇的输入可采用拼音的形式录入进去来作为代替,在用户读入音频信息时可直接说中文。若使用中文识别引擎,则可以直接添加中文词汇表,但必须要将中的ID号改为804,其他操作相同同上。另需说明的是,语音识别引擎的配置可在Windows控制面板中的语音中设置,在此可配置不同语言的语音识别引擎。5(3)在VB6.0环境下开发

27、语音识别应用程序内核和控制界面。 1)进入VB6.0编程环境,在进行程序开发前,必须在引用项中添加Microsoft Speech Object Library(微软语音对象库)。 2)引用添加完毕后即可开始设计和开发前台控制界面,前台界面制作完成后便进入开发本程序的关键阶段核心代码的编写。在此本程序中的源码实现如下:Public WithEvents RC As SpSharedRecoContext /定义RC为共享文本语音识别对象Public myGrammar, b As IspeechRecoGrammar /定义词汇表语法对象Private Sub Form_Load() Set

28、RC = New SpSharedRecoContext Set myGrammar = RC.CreateGrammar myGrammar.CmdLoadFromFile e:tempsol.xml, SLODynamic /依据用户词汇表的语法规则调用语法词汇表/ myGrammar.CmdSetRuleIdState 0, SGDSActiveEnd SubPrivate Sub RC_FalseRecognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal Result As SpeechL

29、ib.ISpeechRecoResult)Label1.Caption = (不可识别信息)End SubPrivate Sub RC_Recognition(ByVal StreamNumber As Long, ByVal StreamPosition As Variant, ByVal RecognitionType As SpeechLib.SpeechRecognitionType,ByVal Result As SpeechLib.ISpeechRecoResult)Label1.Caption = Result.PhraseInfo.GetTextSelect Case Resu

30、lt.PhraseInfo.GetTextCase kaishi /命令接口MsgBox 现在开始运行程序Case now start /命令接口MsgBox 这是我编写的第一个语音程序,好高兴哦!Case hello /命令接口 Text1.Text = hii,你好,很高兴见到您!Case now stop /命令接口EndEnd SelectEnd Sub以上代码具有较强易读性,这也是VB语言的优点之一,而由以上代码可以看出此类应用程序的编码并非十分困难(本程序只是简单的应用实例开发,如开发较之功能强大的语音识别程序也会有较高的复杂度),case语句提供命令接口,执行时可在该命令下实现该

31、命令所对应的功能,这里可通过调用不同的功能函数或API函数来实现。6 2 网格法控制光标定位理论研究 2.1基于语音识别的光标控制类型目前有两种语音控制鼠标的模式:目标导向光标控制和方向导向光标控制。对于前者,用户需要用语音给出具体目标名称或者位置,比如图标、菜单、或者屏幕区域名称,然后给出执行的命令如“单击”等,这种方式对于单个软件还是有效的,但是当目标增加的时候用户需要记忆很多目标的名称,还可能出现同名称目标的情况,因此工作中错误率会增加。另一种方向导向光标控制又分为非连续控制的和连续控制的两种,对于非连续的情况用户要同时说明方向和距离,如命令“左8厘米”那么光标就向左移动8厘米。而对于连

32、续的情况用户先说明方向如“向左”,光标就向左移动,直到用户再说“停止”,光标就停止运动。2.2 网格法提出背景 2.2.1 目前光标控制的实现语音识别引擎通常可以分为两种工作方式,一种就是命令控制(command and control)方式,这个方式下语音识别引擎可以识别简短的语音命令,以便执行相应的程序;另外一种是连续听写方式,这个模式下语音识别引擎要识别连续的语音,这种功能实现起来比语音控制更复杂,因为语音听写过程中需要对上下文以及相同相似发音的词语进行分析、作出判断,而在命令控制语音方式中不需要作上下文分析。这里采用的是命令控制方式,因为实现语音控制鼠标只需要对有限的几个简短的命令进行

33、识别,如“左”、“右”、“停”等。图是语音控制鼠标程序的结构图。图2.1 语音控制鼠标程序结构图2.2是一个理想情况下方向导航实现语音控制鼠标的例子。光标初始位置在屏幕左下方,目标矩形在屏幕右上区,首先用户对麦克风发出“右”的命令,光标就向右移动;当光标到达目标下方的时候用户说“上”命令,光标就改向上移动;(或者先说“停”命令,光标停止)当光标到达目标矩形,用户说“停”命令,光标停止,最后用户说“单击”,程序模拟鼠标左键单击事件,相当于目标矩形被单击。7图2.2 方向导航控制光标过程图2.2.2 目前语音控制鼠标的缺陷虽然几个简单的语音命令,可以控制鼠标移动到屏幕的任何位置,并可以根据语音命令

34、模拟单击,双击等各种鼠标事件,但是实际使用中还存在缺陷。对于大的目标而言,这种语音控制鼠标控制没有什么问题,如果目标区域比较小,将会增加使用者的难度,比如当光标移动到矩形时喊“停”,光标会继续移动一小段才停,这时光标可能已经越过了目标矩形。这种情况和语音识控制中存在的延时有关,每次用户发出语音命令到命令被执行都有一个过程,首先使用者说出语音命令是需要时间的,而且语速快的人和语速慢的人说同样的命令花的时间不同;另外语音识别引擎成功识别一个语音命令也需要一个时间。所以语音控制鼠标在控制过程中必然存在延时。 因此从开始发出语音命令到动作被执行,光标必然会有位置的误差:SVt (S为位置误差,V为鼠标

35、移动速度,t为说话和识别造成的延时)。7 Sear等人曾经研究用一个虚拟鼠标机制来解决延时误差问题,即在真实的鼠标移动前虚设一个鼠标,当假鼠标到达目标是发出语音命令,执行的时候真鼠标正好到达目标处。但是他们的试验结果并不理想。因为每个人说话的习惯和速度是不一样的,而且不同的状态下的语速也不同,因此延时t不是一定的,所以每次的位置误差S也不尽相同,而一种固定距离的先导虚拟鼠标并不能取得很好的效果。72.3 网格法提出 2.3.1 网格法是一种改进方法 目标导向光标的方法中直接语音输入目标名称即可完成光标定位,但在目标导向中把目标的名称作为语音输入不具有随机性,因为有些目标名称可能不在XML语音命

36、令库中使得命令无法识别,且大多时候目标名称数量太多会给用户带来大量的记忆量,这大大降低了使用的易用性和方便性。方向导航可解决光标的随机移动问题,且移动时只需几条简单的方向控制命令,使用较方便,但由于在移动控制时的时延问题很难解决,这也使得对光标的定位准确度大大降低。网格法是一种命令控制模式方法,在进行光标定位时,语音输入命令为19九个数字,这九个数字代表目标所在区域标记序号,每进行一次数字命令输入即将目标缩小到该序号所在小区域,小区域中继续进行33网格划分,继续通过语音命令输入即可进一步缩小到目标所在区域,如此循环执行即可精确到达目标位置。这里只需九个数字命令就可实现将光标移到至计算机屏幕任意

37、位置,而且这里的操作对于随机离散的光标移动毫无障碍,对光标的移动定位控制十分灵活。网格法能实现随机的光标移动和定位,具备目标光标导向的准确性和方向光标导向的离散性。网格法也避免了目标导向中目标名称不在语音命令库和目标名称过多导致语音命令过多不便记忆的问题,同时网格法也没有方向光标导向的时延问题。因此,网格法在语音识别光标控制中是一种很好的改进方法。2.3.2 网格法原理 在语音光标控制研究中,我们要实现语音控制鼠标的完全功能实现,这不光要完成语音控制鼠标光标的定位和移动,还包括鼠标的单击、双击、右击等功能的实现。而我们知道,鼠标光标的定位和移动实现是关键所在,因为鼠标光标的移动具有不确定性,以

38、及移动位置的分布在整个计算机屏幕,目标范围很大,语音在控制鼠标光标移动时的难度也随之增加,这里语音控制即完成了人对物理鼠标的控制。 从以上一些光标控制的实现方法中就可看出其实现的难度和复杂性,这里所研究的就是要在以上的传统研究的基础上寻找一种新的方法,这就是网格法。网格法同基于目标和基于方向的方法相比从理论上来讲优势是比较明显的。所谓网格法,即将计算机屏幕用网格分为33网格,网格依次编号(19),用户需要将光标移动至某个位置时首先将其移动至目标所在的编号小网格中(即缩小目标),编号小网格继续进行递归33网格划分,再通过继续移动来到达精确位置。这里对光标的移动控制是通过语音输入目标区域所在网格编

39、号来实现的。8 我们在本研究使用一个3 3格,对于一个典型的(1024 768)计算机屏幕,三次递归网格缩小(1/729屏幕大小)即可精确到像素级,这充分体现了网格法的精确性,同时,由于语音控制时定位时的命令只有19九个数字,语音识别错误也会大大降低。图2.3 33网格法原理示意图(这里演示目标区域在1号网格中,递归时也为1号网格)2.4 网格法程序设计思想这里是通过开发一个半透明网状窗体覆盖计算机显示器主界面,将计算机的主界面进行33网格划分,并对每一块用数字序号进行标记(19标记),在控制光标导向的过程中通过对块号的选择让半透明窗体缩小至所在序号位置,光标也随之移动至窗体上,小块区域内继续

40、进行33网格划分,继续通过语音输入数字命令进行目标区域选择和缩小来进一步到达目标位置,如此循环执行最终即可精确将光标移动至目标位置。以下通过图示来说明 3 21 6 5 4 9 8 7 7 (a).33半透明网格覆盖全屏幕 (b).语音输入5后透明网格缩小到5号位置 。 。递归缩小直至精确到指定位置 (c).语音再次输入4后进行一次递归操作 图2.4 网格法过程实现示意图3 网格法控制光标定位程序设计与实现 3.1 网格法光标定位程序开发目标语音光标控制的目的是要用语音命令来完成物理鼠标的功能,即语音控制光标的移动、单击、双击、右击等功能。从目前我们人通过用手使用物理鼠标控制计算机来看,在物理

41、鼠标的作用下,我们人能基本控制计算机来完成相应操作而为人类服务。物理鼠标是用手来操作的,而这对于残疾人来讲是无法实现的,同时,在很多特定场合下,人们在操作计算机的过程中双手同时还要完成其他操作(如飞行员在飞机驾驶过程中)而无法用手同时来操作鼠标,这就使得用语音控制鼠标变得十分有用。网格法光标定位程序同其他语音光标控制方法一样都是要实现语音对鼠标的控制,使得我们可以抛弃物理鼠标来控制计算机。在语音控制鼠标的过程中,光标的定位是关键所在,因为Windows系统是把计算机命令变成显示器屏幕上坐标的位置,例如:各种菜单、标签、按钮等,当光标对准这个位置时,就是对准了这道计算机命令,计算机执行的始终是光

42、标所对准的命令。因此只要能实现光标在计算机屏幕的任意位置移动就能执行计算机的所有命令,这就使得在光标控制中光标定位变得意义十分重大。网格法同其他光标定位方法相比最大的优势在于语音控制时执行效率高,定位速度快,出错率低等。3.2 关键算法设计3.2.1 Win32 API 介绍 Win32 API即为Microsoft 32位平台的应用程序编程接口(ApplicationProgramming Interface)。所有在in32平台上运行的应用程序都可以调用这些函数。使用Win32 API,应用程序可以充分挖掘Windows的32位操作系统的潜力。Mircrosoft的所有32位平台都支持统一

43、的API,包括函数、结构、消息、宏及接口。使用 Win32 API不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。9以下是VB调用API函数使用说明。 声明API函数在VB中,不能直接调用API函数,必须遵循“先声明后使用”的原则,否则会出现“子程序或函数未定义”的错误信息。1、API函数的声明要用到Declare语句,如果该API函数有返回值,则其声明为Function,如果没有返回值,可以将其声明为Sub;2、如果该API函数为多个窗体共用,则应将其定义在模块(Module)中,一般以Public开头,如:Public Declare Func

44、tion EnumWindows Lib user32 (ByVal lpEnumFunc As Long, ByVal lParam _As Long) As Long;如果该API函数只为一个窗体使用,则可在该窗体的通用声明中声明,以Private开头即可;3、在Declare语句中,Lib关键字用来指明该API函数属于哪个DLL,作用是告诉VB如何找到这个API。如果调用的DLL库文件属于Windows的核心库(USer32、Kernel32、GDI32)。例如,上面例子中的EnumWindows函数是属于User32.dll的;4、在Declare语句中,Alias关键字用来指明API函数的别名。如果我们定义的函数名称与实际的API函数不同名时,就要在Alias关键字后写明API的真正名称,而且必须区分大小写;如果定义的函数名称与实际的API函数名相同时,可以省略Alias关键字;5、VB以地址方式传递参数(只传递数据的地址,不传递实际的参数值),而许多API要求以值传递方式传递参数(需实际的数据)。如果调用的API函数以值传递,则需在参数声明前加上ByVal关键字。获取API函数在VB中,API函数的声明存放在Win32api.txt中(如VB6.0存放于vbwinapi目录下)。我们可以利用VB的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号