vbs 调用中文语音让你电脑听你的命令的实现代码
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 FilesMicrosoft Speech SDK 5.1SamplesScriptsSimpleTTSSimpleTTS.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 FilesInternet Exploreriexplore.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
SQLids.vbs 0.7(最终版,以后改成gui界面的)
是有这个问题的。第一,应当用正则判断较好。第二,我用循环加返回结果大于30个长度就退出循环,我相信没有表名和字段名大于30个字母的,但是字
vbs 函数 获取数组字符串的最后一个LastOne 挺方便的
将下面的代码直接保存为gimoo.vbs运行即可。FunctionLastOne(Str,splitStr)'输入字符和分隔符,得到最后一部分LastOne=right(Str,len(Str)-InStrRev(Str,splitStr))EndFunctionmsgb
枚举域内计算机个数vbscript脚本(没环境,没测试)
原来是微软专家的代码在这:http://www.microsoft.com/china/technet/community/scriptcenter/resources/hey060127.mspx我改成了全自动式的,不需要手要修改域的adsi连接字符
编辑:广州明生医药有限公司
标签:命令,对象,结束,语音识别,程序