SRTP优秀作品.doc
第十一期SRTP特优项目总结
姓名:王超
题目:操作系统的语音控制扩展
导师:杨莹春
操作系统的语音控制扩展
项目总结
研究内容
随着计算机技术的快速发展和应用领域的不断扩大,在与计算机的交互中,人们越来越需要一种更方便、更自然的方式。而语言是人类交流信息最自然和最方便的手段。让计算机听懂我们说的话,从而让我们与计算机用语言方便自然地进行交流。
我们研究的是在操作系统的基础上开发一套用语音控制计算机的辅助软件系统,最终目标是实现完全用语音命令使用操作系统。我们的实验平台是微软Windows操作系统,并以XP为主。借鉴Windows Vista的语音控制方式,我们要做出能够在多种其他Windows系列操作系统上使用的语音控制辅助系统。
该系统的结构应该比较成熟,并实现基本的功能,可以完全使用语音命令来使用操作系统;系统必须具有很好的可扩展性,对新功能的需求可以动态添加,所以语音控制系统的可用性将不断的增加。该系统的构架是Core-Server-Utilities体系结构,即语音系统内核(Core)通过Server给各种实用程序(Utilities)提供服务。内核提供语音识别以及相关功能的实现;Server中可以注册并加载很多个实用程序;实用程序集是真正用来实现控制目的的程序集,通过调用Server提供的内核功能,每个实用程序给操作系统用户提供各自的语音控制功能。实用程序由我们开发一些常用的,以实现完全用语音控制操作系统;同时,由于内核接口是严格定义并公开的,实用程序也可由其他人编写并注册到Server中,以提供更方便更友好的用户界面。注释:这里所说的实用程序(Utility)并不一定要新建一个进程来运行,而是可以作为Server进程的一个线程来运行,这种方式将极大的降低系统的开销。
该系统需要实现的功能主要有以下几个:
通过语音命令来开启或停止语音对操作系统的控制。
通过语音命令来模拟键盘操作。用户说完“Keyboard”就能进入键盘操作模式,通过说出按键的名称能够完成相应键的按键动作,并且可以通过高级语音命令来完成组合键按键等操作。
通过语音命令开启语音控制鼠标操作。例如,当用户说完“Click”、“Double Click”、“Right Click”等命令时就能完成相应的点击动作;还可以通过语音命令来实现鼠标的精确移动,具体方式参考Windows Vista的MouseGrid命令。
通过语音命令来启动常用的程序,打开常用的文件或文件夹,以及执行注销、关机等操作。例如,当用户说完“Web Browser”后就能启动默认浏览器,说完“Shut Down”后通过确认对话框就能关机;用户可以把自己常用的文件或文件夹添加到语音启动列表,之后只要通过自定义的语音口令就能打开它们。这可以说是语音形式的快捷方式。
通过语音命令来完成Windows图形用户界面的基本操作。例如打开开始菜单,选择菜单项,打开桌面或资源管理器中的文件或文件夹,窗口的最大最小化与还原,关闭窗口,点击按钮等等。该功能的特色在于可以使用名字来指定操作对象,例如当前资源管理器窗口中有一个文件夹叫MyFolder,那么通过说“MyFolder”就能选中该文件夹,再说“Open”就能打开文件夹,或者说“Mouse Menu”就能打开右键菜单,等等。
上述功能的结合使用保证了用户能够完全通过语音控制来使用操作系统。
创新特色
我们的语音控制系统在组件结构以及部署结构上具有高度的灵活性与可扩展性。这主要体现在Core-Server-Utilities的体系结构上。下面将简单的描述该系统的体系结构:
位于最上层的每个Utility是一个负责完成相对独立的功能的部件,例如实现语音控制鼠标的Mouse Grid部件、实现语音控制键盘的Keyboard部件、实现语音命令快捷方式的User Command部件、实现语音控制Windows图形用户界面的Window Operator部件。这些部件以线程或进程的形式在系统中运行,每个部件不关心其他部件的行为,甚至不知道其他部件的存在;所有的部件都由Server集中管理(加载,卸载,启动,停止,排外(Exclusive)模式等等),Server提供了所有部件各自的接口需求以及部件之间的并发执行及同步问题。Utilities可以在Server的运行过程中动态的插入。
实际上,Utility本身不带有任何语音识别的能力。所有与语音识别相关的功能都由Core实现并提供一组标准的接口。所以在编写Utility时不需要关心语音识别,只需要使用Core提供的接口,得到用户输入的语音的识别结果,然后根据这个结果执行由Utility定义的操作。在Core和Utilities之间建立桥梁的就是Server,Server会把Core提供的接口交给每个Utilit