当前位置:文档之家› SRTP优秀作品

SRTP优秀作品

第十一期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提供的接口交给每个Utility。

此外,由于Core提供的接口很灵活,功能很复杂,所以使用起来不方便,特别是对于一些功能简单的Utility的编写,直接使用Core提供的接口是非常的不合算的。

因此我们在Core的基础上搭建了一个辅助库,对Core提供的接口进行了封装,以损失一定的灵活性与复杂功能为代价,提供了使用起来非常方便的新接口。

于是,Utility可以选择直接使用Core的接口,也可以使用该辅助库的接口,还可以同时使用两者。

基于这样的体系结构,语音识别、部件管理、功能部件三者的实现只要专注于自己的需求,增加了可实现性与可维护性;并且由于Core的标准接口以及Utility的动态加载机制,该系统的可修改性与可扩展性非常的强大。

任何个人、组织将可以开发Utilities,最终该系统的功能将越来越强大。

我们的语音控制系统已经达到了研究成果简介中的目标。

主要有以下几点:
●完成了Core的开发,主要实现语音识别与并发控制。

●完成了Server的开发,主要实现Utilities的动态加载与管理,以及图形界面。

●完成了五个主要的Utility的开发,包括:
(1)实现语音控制启动或停止本系统对操作系统的控制的Server Utility部件
(2)实现语音控制鼠标的Mouse Grid部件
(3)实现语音控制键盘的Keyboard部件
(4)实现语音命令快捷方式的User Command部件
(5)实现语音控制Windows图形用户界面的Window Operator部件
●通过这些组件的结合已经能够对操作系统进行较全面的控制。

我们的执行过程如下:
●课题设计: 2008 年 6 月至 2008 年 7 月
●需求调研: 2008 年 7 月至 2008 年 9 月
●技术搜集与学习: 2008 年 8 月至 2008 年 12 月
●研制开发: 2008 年 10 月至 2009 年 4 月
●撰写论文或研究报告: 2009 年 3 月至 2009 年 4 月
●结题和答辩: 2009 年 5 月
该项目已基本完成,用于语音控制操作系统的功能已经较好的实现。

各个主要的Utility
已经发布了1.0以上正式版本。

整个系统已经可以正常的运行并投入使用。

随着计算机技术的快速发展和应用领域的不断扩大,在与计算机的信息交流中,人们越来越需要一种更方便、更自然的方式。

而语言是人类交流信息最自然、最有效和最方便的手段。

让计算机听懂我们说的话,从而让我们与计算机用语言方便自然地进行交流。

通过SRTP项目的实践开发,我们学习了微软Speech SDK 5.1里语音应用程序接口(SAPI)的结构和工作原理,了解了一些国内外开发的语音识别应用系统;应用了一些成熟的设计模式,体会到了这些设计思想的精髓;提出了几点设计思想上的创新,并应用到系统开发中。

从第十一期SRTP立项到现在的结题经历了约一年的时间,期间学习了一些新的技术,培养了小组协作能力,熟悉了项目开发流程,积累了项目实践经验。

SRTP项目不同于一般的课堂程序设计。

SRTP项目的复杂度更高,难度更大,更贴近实际应用,更具有挑战性。

这种在本科阶段类似科研项目的实践经历是一笔宝贵的财富。

大学生科研训练计划确实是一个很好的锻炼本科生实践能力的平台,对将来的科研和就业平添不少助力。

该系统在很多方面还可以进行扩展和优化,主要有以下几个值得创新的地方:
1.增加系统学习功能,及先由用户选择操作系统动作,输入用户希望的语音指令,由语音控
制系统进行记录和更新,提高系统可用性;
2.支持多语言混合语音命令;
3.提供语音输入法;
4.增加语音指令配置中心,用于选择语言,设置相关命令词条;
5.增加语音向导,用于问题帮助和指令查询。

研究成果照片
下图为软件开发内容的样例图。

左侧有项目的树形结构图,中央窗口为MouseGrid部件的窗口原型图。

下图为MouseGrid部件的运行效果图:
王超
2009年6月14日于浙江大学求是圆。

相关主题