vbs 调用中文语音让你电脑听你的命令的实现代码
2016-07-18来源:

关于vbs调用中文语音让你电脑听你的命令的实现代码,需要的朋友可以参考下。

如果你机器本身装了office的话,可能不需要装以下软件,我机器由于装的是openoffice,所以我提前装了

speechsdk51.exe

CNSpeechPackage.msi

这两个软件。如果让电脑朗读,参考下面的代码

代码如下:

ReadAllTextFile=CreateObject("Scripting.FileSystemObject").OpenTextFile(Wscript.Arguments(0), 1).ReadAll

Function RegExpTest(patrn, strng)

Dim regEx, Match, Matches ' 建立变量。

Set regEx = New RegExp ' 建立正则表达式。

regEx.Pattern = patrn ' 设置模式。

regEx.IgnoreCase = True ' 设置是否区分大小写。

regEx.Global = True ' 设置全程可用性。

Set Matches = regEx.Execute(strng) ' 执行搜索。

For Each Match in Matches ' 遍历 Matches 集合。

RetStr = RetStr & Match.value&" "

RetStr = RetStr & vbCRLF

Next

RegExpTest = RetStr

End Function

Set objVoice = CreateObject("SAPI.SpVoice")

Set objVoice.Voice = objVoice.GetVoices("Name=Microsoft Simplified Chinese").Item(0)

objVoice.Rate = 3 '速度:-10,10 0

objVoice.Volume = 100 '声音:0,100 100

objVoice.Speak RegExpTest("[\u4e00-\u9fa5]", ReadAllTextFile)

或是装完speechsdk51.exe之后可以参考

C:\Program Files\Microsoft Speech SDK 5.1\Samples\Scripts\SimpleTTS\SimpleTTS.html这个文件。

如果让电脑听你的命令,下边是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\Internet Explorer\iexplore.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 "x.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

==================================

x.xml源码

代码如下:

<?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>

========在中文的机器上直接运行这个vbs,很有可能出现0x80045052错误,解决办法:

控制面板---语音-语音认别选项卡------------》改成Microsoft Simplified Chinese

推荐信息
Baidu
map