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

(0)

相关推荐

  • android预置默认的语音信箱号码具体实现

    有些SIM卡在出厂时并没有预置VoiceMail number,但运营商又要求能够根据PLMN去自适应的从手机中读取到预设的VM number.在此介绍以xml的方式预置VM number的方法,以及如何允许用户去修改并能够记住用户的选择.VM number使用的优先级为: SIM卡读取>用户设置>xml预置.在用户修改voice mail number时,优先存储到SIM卡.若SIM卡存储失败,则以IMSI为单位存储到手机中. 1.支持以XML的方式预置VM number,文件名为:voic

  • C#中调用SAPI实现语音合成的2种方法

    我们都知道现在的语音合成TTS是可以通过微软的SAPI实现的,好处我就不多说了,方便而已,因为在微软的操作系统里面就自带了这个玩意,主要的方式有两种: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑.(要引入SpeechLib,好像在项目上点引用,然后选到系统COM吧,好久没弄,记不清楚了) 2.使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑. 其实不管是哪一种,都是调用SAPI

  • Android实现语音识别代码

    苹果的iphone 有语音识别用的是Google 的技术,做为Google 力推的Android 自然会将其核心技术往Android 系统里面植入,并结合google 的云端技术将其发扬光大. 所以Google Voice Recognition在Android 的实现就变得极其轻松. 语音识别,借助于云端技术可以识别用户的语音输入,包括语音控制等技术,下面我们将利用Google 提供的Api 实现这一功能. 功能点为:通过用户语音将用户输入的语音识别出来,并打印在列表上. 功能界面如下: 用户

  • 语音读单词或句子的批处理

    复制代码 代码如下: ECHO OFF REM QBFC Project Options Begin REM HasVersionInfo: No REM Companyname: REM Productname: REM Filedescription: REM Copyrights: REM Trademarks: REM Originalname: REM Comments: REM Productversion: 0. 0. 0. 0 REM Fileversion: 0. 0. 0.

  • 48个英语音标表-附一个flash实现的音标的读音

    在网上找了很久,好像都找不到,越基础越难找,经典的东西,献给初学的朋友 为方便需要的朋友特整理一些英语国际音标表.doc版本提供下载 48个英语音标表 26个字母发音表 元音字母和辅音字母分类表  附一个flash实现的音标的读音 http://www.jb51.net/downtools/flash_duyin.swf 英语国际音标 http://www.jb51.net/downtools/flash_enguoji.swf

  • 用Python编程实现语音控制电脑

    电脑面前的你,是否也希望能让电脑听命于你?   当你累的时候,只需说一声"我累了",电脑就会放着优雅的轻音乐来让你放松. 或许你希望你在百忙之中,能让电脑郎读最新的NBA比分赛况-.一切都是那么惬意. 在此告诉你,不要灰心,我们真的可以做一个.做一个语音识别? 我相信很多人到这里会有两个心态,一是好奇,二是避之千里. 其实不然,你可以不用懂太多的编程技能,你甚至也可以不用懂自然语言处理技术,这篇文章虽然实现了语音操控但是绝没有你们想象的那么复杂. 如果仅仅把语音识别作为一个实现了的接口

  • IOS开发第三方语音-微信语音

    微信只能开发平台http://pr.weixin.qq.com/,里面包含了微信语音和图像,集成很简单,下载方demo后会有个文档,按照流程来(因为它只提供了真机的.a文件,所以只能用真机哦,不然会报错) 先用个有UI界面的sdk 1.装上sdk,引入相关包 2.设置 Build Settings C++ Standard Library: libstdc++ 或 Compiler Default Compile Sources As: Objective-C++ 或 将使用 SDK 的文件扩展

  • C#实现语音视频录制-附demo源码

    在很多语音视频软件系统中,经常有将实时的音频或视频录制为文件保存到磁盘的需求,比如,视频监控系统中录制监控到的视频.视频会议系统中录制整个会议的过程.语音通话系统中录制完整的对话内容.等等. MFile组件(Oraycn.MFile.dll)是傲瑞实用组件之一,它可以将原始的语音数据和视频数据按照指定的格式进行编码,并将它们写入到视频文件(如.mp4)中. 一.缘起 最近正在做的一个网络招聘平台的项目,其中有一个模块是这样的,应聘者可以通过该系统的客户端录制自己的视频(自我介绍)上传到服务器,而

  • python在命令行下使用google翻译(带语音)

    说明 1. 使用google翻译服务获得翻译和语音;2. 使用mplayer播放获得的声音文件,因此,如果要播放语音,请确保PATH中能够找到mplayer程序,如果没有mplayer,请将use_tts设置为False运行.即:main(use_tts=False)3. 退出程序,输入"x",回车. 复制代码 代码如下: #! /usr/bin/env python#coding=utf-8 import requests def translate(words):    impor

  • C#中调用SAPI实现语音识别的2种方法

    通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR.下面我们就介绍并贴出相关代码.主要有两种方式: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑.(注意要引入系统组件SpeechLib,XP要安装识别引擎) 2.使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑. 其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单. 使用第一种方式,需要注意在COM

  • C#基于UDP进行异步通信的方法

    本文实例讲述了C#基于UDP进行异步通信的方法.分享给大家供大家参考.具体如下: 服务器端: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace AsyncServer { public class UdpState { public UdpClient udp

  • C# 语音功能的实现方法

    首先要安装SpeechSDK5.1 开发包和SpeechSDK5.1 Langague Pack(中英文) 语言包,不过VS2010里是自带SpeechSDK5.0的com组件的,也可以用. 简单讲一下四个方法: 朗读时,使用 复制代码 代码如下: voice.Speak(string,SpeechVoiceSpeakFlags.SVSFlagsAsync); 暂停,使用 复制代码 代码如下: voice.Pause(); 从暂停中继续刚才的朗读,使用 复制代码 代码如下: voice.Resu

  • C#基于UDP实现的P2P语音聊天工具

    语音获取 要想发送语音信息,首先得获取语音,这里有几种方法,一种是使用DirectX的DirectXsound来录音,我为了简便使用一个开源的插件NAudio来实现语音录取. 在项目中引用NAudio.dll //------------------录音相关----------------------------- private IWaveIn waveIn; private WaveFileWriter writer; private void LoadWasapiDevicesCombo(

  • C#中使用UDP通信实例

    网络通信协议中的UDP通信是无连接通信,客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据.本文实例即为基于C#实现的UDP通信.具体功能代码如下: 服务器端代码如下: static void Main(string[] args) { UdpClient client = null; string receiveString = null; byte[] receiveData = null; //实例化一个远程端点,IP和端口可以随意指定

  • 如何应用C#实现UDP的分包组包

    场景介绍如果需要使用UDP传输较大数据,例如传输10M的图片,这突破了UDP的设计原则.UDP的设计是基于"datagram",也就是它假设你发送的每个数据包都能包含在单一的包内.并且设定UDP数据包的最大长度受基础网络协议的限制. UDP数据包的理论最大长度限制是 65535 bytes,这包含 8 bytes 数据包头和 65527 bytes 数据.但如果基于IPv4网络传输,则还需减去 20 bytes 的IP数据包头.则单一的UDP数据包可传输的数据最大长度为: 则单一的UD

随机推荐