找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23821|回复: 3

[转贴] vbs 语音识别

[复制链接]
发表于 2014-11-7 18:07:31 | 显示全部楼层 |阅读模式
基本来自网上,但网上版本太多,也不知道哪个是原创的
有所精简和改进
  1. Const SLODynamic = 0

  2. Dim CommandDictionary '命令字典对象
  3. Dim WshShell   'WshShell对象提供对本地Windows程序的访问。
  4. Dim SR   '语音识别(Speech Recognition)对象
  5. Dim Grammar '语音识别的命令语法对象

  6. '初始化命令字典对象,可根据自己的需要添加命令而来
  7. Set CommandDictionary = CreateObject("Scripting.Dictionary")
  8. CommandDictionary.Add "计算器",   "calc"
  9. CommandDictionary.Add "记事本",   "notepad"
  10. CommandDictionary.Add "测试", "notepad ceshi.vbs"
  11. CommandDictionary.Add "打开键盘", "osk"

  12. Set WshShell = CreateObject("WScript.Shell") '创建WshShell对象

  13. '创建语音识别对象,调用由"Command.XML"所定义的语法,并启动语音识别引擎
  14. Set SR = WScript.CreateObject("SAPI.SpSharedRecoContext", "RecoContext_")
  15. Set Grammar = SR.CreateGrammar
  16. Grammar.Reset
  17. Grammar.CmdLoadFromFile "COMMAND.XML", SLODynamic
  18. Grammar.CmdSetRuleIdState 0, 1

  19. Set objTTS = CreateObject( "SAPI.SpVoice" )

  20. MsgBox "语音识别系统测试"
  21. WScript.Sleep 100000000

  22. '你的语音命令被识别
  23. Sub RecoContext_Recognition(ByVal StreamNumber, ByVal StreamPosition, ByVal RecognitionType, ByVal Result )
  24.         Text = Result.PhraseInfo.GetText     '获取语音识别引擎所识别的命令
  25.        
  26.         WScript.Sleep 1000
  27.        
  28.         Set fso=CreateObject("scripting.filesystemobject").opentextfile("记录.log",2)
  29.         fso.write Text  & vbCrLf & "Text"
  30.        
  31.         If CommandDictionary.Exists(Text) Then
  32.                 objTTS.Speak "正在打开" & Text
  33.                 WshShell.Run CommandDictionary.Item(Text)
  34.         End If
  35.        
  36.         If Text = "命令结束" Then
  37.                 objTTS.Speak "命令结束,再见!"
  38.                 WScript.Sleep 2000
  39.                 Set objTTS = Nothing
  40.                 WScript.Quit
  41.         End If
  42. End Sub
复制代码
COMMAND.XML 的内容如下:
  1. <?xml version="1.0" encoding="gb2312" ?><GRAMMAR LANGID="804"><RULE NAME="命令" TOPLEVEL="ACTIVE"><L>

  2. <P>计算器</P>
  3. <P>记事本</P>
  4. <P>打开键盘</P>
  5. <P>命令结束</P>

  6. </L></RULE></GRAMMAR>
复制代码
 楼主| 发表于 2014-11-7 18:09:21 | 显示全部楼层
微软 TTS 的识别率还是不够,而且会受内置的命令干扰,所以不是很实用
国内语音方面做得比较好的还属科大讯飞,杠杠的
发表于 2014-11-20 09:18:54 | 显示全部楼层
微软 TTS 的识别率还是不够,而且会受内置的命令干扰,所以不是很实用
国内语音方面做得比较好的还属科大讯 ...
CrLf 发表于 2014-11-7 18:09



    有没办法调用讯飞的呢?
 楼主| 发表于 2014-11-20 14:39:41 | 显示全部楼层
没研究过,不知道,回头试下
手机上用得多,电脑的语音输入略显鸡肋
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:45 , Processed in 0.017228 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表