分类

游戏分类 网络游戏 软件分类

手游攻略

编写语音程序 让电脑“听”从你的命令

2007/5/10 12:22:39作者:   A+

终日面对只能通过键盘和鼠标交流的电脑,审美疲劳以及生理疲劳在所难免。虽然文人雅士给自己标榜上“键客”或“标客”的抬头,也不能够遮掩住发自内心的期望——如果能够与电脑通过语言交流一诉衷肠,那该有多好!
这里,我们将借助微软公司免费提供的语音应用开发工具包(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了解更多的微软中文语音识别引擎的知识。

分享:

相关文章

网友评论
我要跟贴