在 VBS 脚本中使用 SAPI 语音识别?

2024-01-01

我发现这个一行示例允许在 VBScript 中使用 Windows SAPI 文本转语音功能:

CreateObject("SAPI.SpVoice").Speak("This is a test")

我想知道 SAPI 语音识别是否可以以同样简单的方式在 VBScript 程序中使用。当我寻找此类信息时,出现的大量 SAPI 信息都与 C++ 相关,例如微软SAPI http://msdn.microsoft.com/en-us/library/ms723627%28v=vs.85%29.aspx站点,或 VBS 中的文本转语音。我尝试查找有关可在 VBScript 中使用的 SAPI COM 对象语音识别部分的文档,但没有找到。

您知道是否存在这样的文档吗? TIA

EDIT: 收到第一个答复后添加了额外的请求

虽然下面的第一个答案提供了 SAPI COM 对象文档的链接,但我想引起您对我问题中的一点的注意:“我想知道 SAPI 语音识别是否可以在 VBScript 程序中使用以同样简单的方式“。SAPI文档是huge!我读了几页,但我完全迷失了……我的目标是识别几个单词,比如 8 或 10 个,并在每次识别出其中一个单词时在屏幕上显示不同的消息;这就对了! (该程序应该是通过以下方式启动的控制台应用程序cscript)。有没有simple实现这样的事情的VBS代码示例?如果编写此解决方案所需的代码需要有几页,那么这不是我正在寻找的答案......


这是一个工作示例vbscript 倾听一个 wav 文件:

scriptRunning = true

Sub rc_Recognition(StreamNumber, StreamPosition, RecognitionType, Result)
  Wscript.Echo "Reco: ", Result.PhraseInfo.GetText, ".", RecognitionType
End Sub

Sub rc_StartStream(StreamNumber, StreamPosition)
  Wscript.Echo "Start: ", StreamNumber, StreamPosition
End Sub

Sub rc_EndStream(StreamNumber, StreamPosition, StreamReleased)
  Wscript.Echo "End: ", StreamNumber, StreamPosition, StreamReleased
  scriptRunning = false
End Sub


outwav = "C:\SOFT\projects\af2t\t.wav"
Const SAFT22kHz16BitMono = 22
Const SSFMOpenForRead = 0

set sapiFStream = CreateObject("SAPI.SpFileStream")
sapiFStream.Format.Type = SAFT16kHz16BitMono
sapiFStream.Open outwav, SSFMOpenForRead


MsgBox "A SpeechLib::ISpRecoContext object will be created"

Const SGDSActive = 1

Set rct = WScript.CreateObject("SAPI.SpInProcRecoContext", "rc_")
Set rgnz = rct.Recognizer
Set rgnz.AudioInputStream = sapiFStream
Set rcGrammar = rct.CreateGrammar
'rcGrammar.DictationLoad
rcGrammar.DictationSetState SGDSActive
i = 0
while scriptRunning and i < 100
  WScript.Sleep(50)
  i = i + 1
wend

MsgBox "A SpeechLib::ISpRecoContext object has been created"

代码的神奇部分是这一行(“rc_”prefix参数允许事件被潜艇捕获):

Set rct = WScript.CreateObject("SAPI.SpInProcRecoContext", "rc_")

我用于测试的 t.wav 文件中的录制文本是使用 SAPI.SpVoice::Speak 和 MS-David 语音生成的;-)

我花了10天弄清楚how to写这个脚本。 Microsoft 正在删除有关自动化、COM、旧式脚本等的文档。真是遗憾。

因此,这可以在听写模式下读取 wav 文件。但我无法纠正它以使其在实时听写模式下工作(即使用麦克风作为直接输入)。对此任何帮助表示赞赏。谢谢。

EDIT:直接/实时听写模式已解决。如果有兴趣我分享 vbscript 代码。

EDIT2:以 wav 形式朗读的文本示例:Hello world. This is a talk about gear tooth profile using a circle involute.vbscript 的控制台输出

C:\SOFT\projects\af2t>cscript r.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. Tous droits réservés.

Start:  1 0
Reco:  Hello world . 0
Reco:  this is a talk about gear to the profile using a circle invalid . 0
End:  1 195040 -1

C:\SOFT\projects\af2t>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VBS 脚本中使用 SAPI 语音识别? 的相关文章

  • 如何在Python中使用谷歌语音识别API? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 mp3 文件 我想使用 Google 的语音识别功能从该文件中获取文本 任何我可以找到文档或
  • MSGBOX 在 WSH/VBS 中的位置

    这是我的下一个问题 我希望有人可以帮助我 是否可以在 wsh vbs 中放置 msgbox 替代文本 http www 4freeimagehost com uploads a9b04cde0527 jpg http www 4freeim
  • 如何隐藏 toast 消息“您的音频将发送到谷歌以提供语音识别服务。”在安卓中?

    我正在使用谷歌语音识别器在 Android 中集成语音服务 但是当按下麦克风按钮时 会显示这条烦人的 toast 消息 请建议我一种隐藏此 toast 消息的方法 这是我的java代码 public class FormActivity e
  • 使用CamerX android进行视频录制时使用语音识别器API

    我目前正在使用cameraX 来录制带有音频的视频 并且工作得很好 但是现在我必须在录制视频时使用SpeechRecognizer 并获取用户所说内容的转录 UPDATE 我尝试从视频中提取音频 然后将其作为额外内容提供给意图 但它不起作用
  • vbscript 使用 Ccur 四舍五入到小数点后两位

    我在用CCur 代替CDbl 正如这个问题中的回答 vbscript 数学表达式不起作用 https stackoverflow com questions 13569944 vbscript mathematical expression
  • 发送 HTML 电子邮件 asp

    我想在电子邮件中添加一些 html 我已经尝试过以下方法 vFromName someone vFromAddress someemail vTo recipient vSubject someSubject vBodyofemail ta
  • 经典 ASP 中的超时问题

    我正在开发一个经典的 ASP 项目 在从数据库填充数据并将其绑定到 UI 中时遇到超时问题 我们得到以下错误 脚本超时 超出了脚本执行的最长时间 您可以通过为 Server Scripttimeout 属性指定新值或更改 IIS 作为管理工
  • 命令行参数 - 所需对象:'objshell.NameSpace(...)'

    我正在编写一个脚本 该脚本将利用 Windows 的内置功能来解压缩提供的 zip 文件 我对 vbscript 还很陌生 所以有些语法让我有点困惑 我正在使用一些现有代码并尝试修改它 以便它将采用命令行选项作为文件名 如果我使用命令行传递
  • VBScript 宏 getParentFolder 名称

    我正在尝试创建一个 vbscript 宏 它将获取存储宏的文件夹位置并将输出文件创建到同一文件夹中 我正在使用下面的代码 但它没有获得正确的位置 Set obj1FSO CreateObject Scripting FileSystemOb
  • 使用 Librosa 生成的频谱图看起来与 Kaldi 不一致?

    我使用 Kaldi 的 egs tidigits 代码生成了 七 话语的声谱图 使用 23 个 bin 20kHz 采样率 25ms 窗口和 10ms 偏移 通过 MATLAB imagesc 函数可视化的频谱图如下所示 我正在尝试使用 L
  • 在wix中,使用vbscript,如何写入日志文件?

    我正在自定义操作中尝试以下操作 Session Log GetOfficeBitness Session Property OfficeBitness 我收到错误 错误 1720 此 Windows Installer 程序包有问题 A 无
  • 如何从 vbs 脚本发送电子邮件

    如何从 vbs 脚本发送电子邮件 在无法连接到互联网的计算机上 位于我的非互联网区域 我通过谷歌搜索将以下内容整合在一起 但似乎需要调用微软的服务器 如果我无法访问 microsoft com 该怎么办 sch http schemas m
  • 浏览器上的连续语音识别,例如“ok google”或“hey siri”

    我正在做一个 POC 我的要求是我想实现这样的功能OK google or Hey Siri在浏览器上 我正在使用 Chrome 浏览器Web speech api 我注意到我无法继续识别 因为它会在一段时间后自动终止 而且我知道出于安全考
  • TypeScript 中的语音识别和语音合成

    我能够通过创建如下接口在 TypeScript 中运行 SpeechRecognition 并且工作正常 namespace CORE export interface IWindow extends Window webkitSpeech
  • 如果 vbs 脚本崩溃,请重新启动它

    我正在尝试制作一个 vb 脚本 如果它崩溃 它将重新启动另一个 vb 脚本 我搜索了又搜索 但我得到的只是如何重新启动程序 并且由于 vb 脚本是后台进程 因此当您在 Win32 Process 中搜索时它不起作用 这是我的代码 set S
  • adArray 的 VBScript / ADODB 语法问题?

    我希望有人能给我一些关于我的 vb 脚本的新视角 该脚本的主要目的是使用一些参数执行存储过程 我得到的错误是 预计声明结束 我没有做过太多的 VB 脚本编写 但从目前为止我发现的情况来看 这个错误是由于某种语法问题造成的 我已经查看这个脚本
  • 从 Google 语音识别中删除脏话审查

    我正在尝试使用 Google 的语音到文本 API 在 iOS 应用程序中将语音转换为文本 我只是将一些音频数据发送到 URL 并且它返回了我所说的 大部分 正确的单词 但是 它用 替换了任何脏话 我如何用实际的咒语替换 只是一些附加信息
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • 如何使用 java/vb 脚本调用自定义 ActiveX dll 中的方法

    我使用 VB6 创建了一个 ActiveX dll 并使用打包和部署向导将其打包 生成了一个 cab 文件和一个演示 HTML 页面 此 ActiveX dll 包含一个 simgle 方法 该方法返回字符串且不接受任何参数 我遇到的麻烦是
  • 等待程序完成

    为了监视带宽使用情况并且不要在启动时加载不必要的程序 我想先执行dumeter exe 然后执行firefox exe 当我关闭firefox时 它应该杀死dumeter 我使用以下代码启动 Set WshShell WScript Cre

随机推荐

  • 如何在 Outlook 签名中嵌入图像?

    是否可以为以下内容创建 HTML 电子邮件签名 2003年展望或上面不引用外部图像 也就是说 使用那些特殊的 cid 引用 但将图像本身嵌入到签名中 而不是嵌入到文件系统或网络中 这是一个 Web 应用程序 它根据用户的各种输入生成 标准
  • 使用 javascript 中的类加载 php 页面

    我在 javascript 中有弹出类 并在我的 html 页面中添加了显示该弹出窗口所需的所有脚本 我正在尝试在单击表单的提交按钮时在弹出窗口中加载 PHP 页面 弹出窗口对于如下按钮工作正常 来自 select php 的文本显示在弹出
  • 通过 Xcode 克隆特定的 git 分支

    我在从 Apple Xcode 克隆特定 git 分支时遇到困难 在 Xcode gt 源代码管理 gt 克隆并插入我的 HTTP 克隆 url 中 我只能克隆主分支 但我没有找到从 Xcode 克隆另一个开发人员分支的解决方案 通过使用终
  • 我可以读取文件并在编译时构造异构对象吗?

    情况 YAML 文件包含按名称排列的异构对象列表 如下所示 object Foo name Joe Bloggs age 26 object Bar location UK 对象不继承任何基类 也不共享彼此之间的任何类型的关系 除了它们看起
  • 将 javascript 和 css 内联放入一个缩小的 html 文件中以提高性能?

    一个典型的网站由一个index html 文件和一堆javascript 和css 文件组成 为了提高网站的性能 可以 缩小 javascript 和 css 文件 以减小文件大小 将 javascript 文件连接成一个文件 与 css
  • 当过滤器存在时使用数组设置范围值

    我想将某个范围的值获取到一个数组中 处理数组数据 然后将该数组中的值设置回它来自的范围 考虑到该范围可能包含一些隐藏行 让我们以两列的工作表为例 A B VALUE FILTER 1 P 2 N 3 N 4 P 5 P 然后应用自动过滤器并
  • 如何正确编写 int、double、float 等的数学扩展方法?

    我想编写一系列扩展方法来简化数学运算 例如 代替 Math Pow 2 5 我希望能够写 2 Power 5 在我看来 这更清楚 问题是 在编写扩展方法时如何处理不同的数字类型 我需要为每种类型编写一个扩展方法吗 public static
  • 如果满足条件,Reactor如何重复某个步骤n次

    请帮我处理反应堆 我需要检查一个条件最多n次并返回最终结果 我发现reactor有reactor extra模块 https projectreactor io docs extra snapshot api reactor retry R
  • 比较两个文本文件并将差异写入文本文件

    我想比较两个文本文件并将差异输出到另一个文本文件中 Location c temp z txt compare object get content c temp hostname old txt get content c temp ho
  • 这句话是什么意思

    unlike SwingUtilities invokeAndWait the event thread is permitted to call SwingUtilities invokeLater 我无法清楚地理解这一点 请帮助我 另一
  • Angular 6 router - 替换当前路由的一些参数

    在我的 Angular 6 解决方案中 网址具有以下结构 语言 app section object id view queryparams 语言选择器组件由应用程序的所有部分共享 并且包含在父路由之一的模板中 以便它出现在所有子路由中 当
  • 如何使用 xlwings 保存工作簿?

    我有一个 Excel 工作表 一些按钮和一些宏 我使用 xlwings 来使其工作 有没有办法通过 xlwings 保存工作簿 我想在执行操作后提取特定的工作表 但保存的工作表是操作前提取的工作表 没有生成的数据 我提取所需工作表的代码如下
  • PowerShell 帮助文件无法正确显示

    在 Windows 10 和 Windows Server 2012 上的 PowerShell 4 0 5 0 中进行了测试 clear help wmiobject or cls man job 清除屏幕后 帮助文件无法正确显示结果 重
  • Pandas 的 concat 函数中的“级别”、“键”和名称参数是什么?

    问题 我该如何使用pd concat 是什么levels论据 是什么keys论据 是否有很多示例可以帮助解释如何使用所有参数 Pandas concat函数是瑞士军刀 https en wikipedia org wiki Swiss Ar
  • 是否可以清除 Ionic 中的视图缓存?

    我目前正在开发 Angular Ionic Cordova 项目 我们最近升级到了最新的 Ionic beta 从项目之前使用的版本开始 这里引入了视图缓存 然而这样做也带来了一个问题 该应用程序面向客户 并且非常以数据为中心 然而 目前用
  • ng-repeat 中的角度验证不起作用

    我很难使用 ng repeat 语句进行验证 我有以下代码 我只是希望当名称字段为空时将 has error 添加到 div form group 中 我似乎无法让它发挥作用 有什么想法吗 我在小提琴手中的尝试 http jsfiddle
  • Admob 在 Google Admob 面板中找不到转账资金链接 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 google admob 中找不到转账资金链接 我的余额超过 50 美元 并且我的付款信息已填写完整 但我无法转账 请帮助 我在哪里
  • 如何检查网站是否支持 HTTP/2 协议

    关于这个问题有很多话题HTTP 2 https en wikipedia org wiki HTTP 2协议 但我想知道是否有一个使用该协议的工作网站 I e 我们可以决定使用http or https 但是我们如何编写 HTTP 2 请求
  • 为什么我无法关闭 Hibernate SessionFactory 并重新打开它并且它仍然可以工作?

    我在关闭 Hibernate 会话工厂时遇到问题 我的应用程序允许用户重新创建数据库 因此当他们想要这样做时 我首先关闭 Hibernate 会话工厂以释放 Hibernate 对数据库的控制 public static void clos
  • 在 VBS 脚本中使用 SAPI 语音识别?

    我发现这个一行示例允许在 VBScript 中使用 Windows SAPI 文本转语音功能 CreateObject SAPI SpVoice Speak This is a test 我想知道 SAPI 语音识别是否可以以同样简单的方式