精品主页 | 软件下载 | 系统下载 | 精品导航| 精彩图片 | 转帖工具 | 版主申请 | 影视下载
发新话题
打印

编写语音程序

编写语音程序

  


                  

■安徽 华英

终日面对只能通过键盘和鼠标交流的电脑,审美疲劳以及生理疲劳在所难免。虽然文人雅士给自己标榜上“键客”或“标客”的抬头,也不能够遮掩住发自内心的期望──如果能够与电脑通过语言交流一诉衷肠,那该有多好!



这里,我们将借助微软公司免费提供的语音应用开发工具包(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了解更多的微软中文语音识别引擎的知识。

TOP

发新话题