■安徽 华英
终日面对只能通过键盘和鼠标交流的电脑,审美疲劳以及生理疲劳在所难免。虽然文人雅士给自己标榜上“键客”或“标客”的抬头,也不能够遮掩住发自内心的期望──如果能够与电脑通过语言交流一诉衷肠,那该有多好!
这里,我们将借助微软公司免费提供的语音应用开发工具包(SAPI
5.1 SDK)让你的电脑能通过麦克风听懂你的语音命令,对你言听计从。虽然避免不了编程,好在微软提供的脚本自动化(Scripting
Automation)让你通过记事本就能编写出这样的程序,方便极了!
安装配置语音识别引擎
首先请确保耳机和麦克风已经与电脑正确连接了。接着执行以下操作确认系统中已经安装了微软中文语音识别引擎。
点击“开始→设置→控制面板→语音”,进入语音识别选项卡,如果语音属性中可用,则表明安装了语音识别引擎,如图所示。如果不可用,则表明该引擎没有安装。
小提示
如果想得到更好的识别效果,不妨花些时间对语音识别引擎进行训练。只要根据提示朗读一些关于识别引擎的介绍文字即可,一举两得。
如果系统内没有安装语音识别引擎,你可以单独从微软网站下载整个SDK或者直接通过Microsoft
Office安装。Office默认不安装语音识别引擎,所以我们需要手动添加。打开“控制面板→添加或删除程序”,单击“更改或删除程序”后再点击“Microsoft
Office”,然后单击“更改”。接着单击“添加或删除功能”,然后在“要安装的功能”下双击“Office共享功能”,双击中文可选用户输入方法,单击语音,单击下箭头,然后单击“从本机运行”。以上步骤对于不同版本的Windows和Office程序可能有所差异,请注意进行相应调整。
控制程序
下面就是实现代码,非常简单,用“记事本”程序输入并且保存成CommandPC.VBS即可:
'==========================================================================
'
Name : CommandPC.VBS
' AUTHOR : HUAYING
' DATE :
2005-1-31
'==========================================================================
Dim
CommandDictionary '命令字典对象
Dim WshShell
'WshShell对象提供对本地Windows程序的访问。
Dim ScriptComplete '程序结束标志
Dim
SR '语音识别(Speech Recognition)对象
Dim Grammar
'语音识别的命令语法对象
'初始化命令字典对象,可根据自己的需要添加命令
Set CommandDictionary =
CreateObject("Scripting.Dictionary")
CommandDictionary.Add "上网",
"""C:\Program Files\Mozilla Firefox\firefox.exe"""
'注意双引号的数目
CommandDictionary.Add "计算器",
"calc"
CommandDictionary.Add "记事本",
"notepad"
CommandDictionary.Add "空当接龙", "freecell"
Set
WshShell = CreateObject("WScript.Shell")
'创建WshShell对象
ScriptComplete = False
'初始化程序结束标志
'创建语音识别对象,调用由"Command.XML"所定义的语法,并启动语音识别引擎
Set SR =
WScript.CreateObject("SAPI.SpSharedRecoContext", "RecoContext_")
Set Grammar
= SR.CreateGrammar
Grammar.CmdLoadFromFile "COMMAND.XML",
SLODynamic
Grammar.CmdSetRuleIdState 0, 1
MsgBox
"你好,主人,请吩咐。"
'等候你的语音命令(需要安装麦克风)
'当识别出"命令结束"命令时程序结束
Do
WScript.Sleep 1000
Loop Until ScriptComplete
MsgBox
"欢迎再跟我说话,再见!"
'你的语音命令被识别
Sub RecoContext_Recognition(ByVal
StreamNumber, ByVal StreamPosition, ByVal RecognitionType, ByVal Result )
Text = Result.PhraseInfo.GetText
'获取语音识别引擎所识别的命令
If Text <> "命令结束" Then
WshShell.Run CommandDictionary.Item(Text) '由WshShell对象Run方法执行你的命令
Else
ScriptComplete = true
'程序结束标志
End If
End
Sub
自定义你的命令语法文件Command.XML内容如下,记得要跟CommmandPC.VBS放在同一个目录中哦:
<?xml
version="1.0" encoding="gb2312" ?>
<GRAMMAR
LANGID="804">
<RULE NAME="命令" TOPLEVEL="ACTIVE">
<L>
<P>上网</P>
<P>计算器</P>
<P>记事本</P>
<P>空当接龙</P>
<P>命令结束</P>
</L>
</RULE>
</GRAMMAR>
好了,现在双击CommandPC.VBS并且试着对你的电脑说出“空当接龙”,她是不是自动帮你打开了这个游戏呢?你还可以根据自己的需求不断扩充命令,真是“我的地盘我做主”啊!
以上程序在Windows
2000及Windows XP中测试通过,你可以在http://www.cfan.com.cn/11program/200513/commandpc.zip下载到本文的源代码。你还可以参看http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306537了解更多的微软中文语音识别引擎的知识。