问题标签 [sapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1261 浏览

vb.net - 从 Windows 服务通过调制解调器播放语音

我正在开发一个 VB.NET Windows 服务,该服务花费大量时间检查 BMS 数据库中的新警报并拨打电话以远程警告操作员。我目前正在使用 .NET TAPI 包装器和 SAPI 5.3 互操作程序集,我通过电话交谈的步骤是:

  1. 初始化TAPI接口;
  2. 拨打接线员号码;
  3. 取语音调制解调器 waveOut 设备 id
  4. 将语音输出设置为该设备 ID;
  5. 让 SAPI 发挥作用。

如果我将代码编译为 Windows 控制台或表单应用程序,这一切都可以正常工作,但是一旦我将其编译并作为 Windows 服务运行,步骤 5 就永远不会发生 - 语音调制解调器调用但保持沉默;其他一切正常,甚至数字监控。现在我知道 Windows 服务不应该与桌面交互,所以 UI 元素和播放声音之类的东西是不可以的,但我正在努力寻找不涉及使用 wave API 并且可以开发的替代方案在合理的时间范围内。有任何想法吗?

0 投票
1 回答
887 浏览

speech-recognition - 可以先做 SpeechToText(语音识别),然后再做 TextToSpeech(使用相同的文本和相同的声音)?

我正在为音盲人士开发一个程序。我一直在使用 sapi 和 TTs。该程序同时用一只手制作 3D 动画。但问题是声音(即使是最慢的声音)对于我想要的东西来说太快了。所以,我考虑过语音识别,但问题是我必须在动画开始之前对文本做一个大的处理。

所以,我想知道是否可以进行语音识别(从我在 .wave 文件上的声音),然后执行相同的 TT 过程(使用 Sapi 事件......),但在我的声音中使用 .wave。

如果可能,请告诉我如何。如果你认为有更好的选择,让我看看。

谢谢你的时间(请原谅我的英语)

耶稣凯维奇

0 投票
2 回答
4624 浏览

delphi - Microsoft 语音 api 5.1 GetVoices 返回 Windows 7 上不存在的语音

我正在从 XP 迁移到 Windows 7 64 位。我在 XP 机器上编译的应用程序可以在 XP 上正常运行。但是,当我在 W7 机器上运行 exe 时,GetVoices 返回的声音列表如下:
Microsoft Anna
Microsoft Mary
Microsoft Mike
Sample TTS Voice。

检查 W7 语音属性对话框显示机器上仅加载了 Microsoft Anna。检查 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices 的注册表可以确认这一点。

在我的新 Windows 7 开发机器上重新编译我的应用程序会创建一个重复上述行为的 exe。(XP编译代码和W7编译代码在W7下执行时重现同样的错误)

我在 Windows 7 64 位上使用 Delphi 7 进行开发,我正在使用 Microsoft Speech Object Library(版本 5.4)(注意:5.4 是导入类型库列表中显示的内容)。

我将 SpeechSDK51.exe 安装到我的 W7 机器上。这来自:

http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en

以下代码在 Windows 7 上生成 4 种声音的列表,即使应该只有一种声音:

关于如何处理这个问题的任何建议?

谢谢,
肖恩

0 投票
2 回答
2992 浏览

windows-server-2008 - Windows Server 2008:语音运行时 - 我缺少什么?

我正在尝试使用 system.speech 让语音识别在 Windows Server 2008 上工作。

  1. 我在 Vista 上构建了一个使用 System.Speech.Recognition (SAPI 5.4) 的控制台应用程序。在这台机器上工作得很好。

  2. 试图在 Windows Server 2008 x86 机器上安装/执行它。它有.NET 3.5。不走运...抛出错误--经调查,发现2008默认没有安装任何识别器。

  3. 安装了新的语音平台服务器运行时英语语言文件语音 SDK。这些都是大约一个月前发布的。据我了解,运行时包含与 WinServer 2008 兼容的识别器。

  4. 尝试再次运行我的应用程序,但仍然没有找到识别器。

我可以看到有一个识别器 dll 安装在:C:\Program Files (x86)\Common Files\microsoft shared\Speech\SR\v10.1\spsreng.dll

我究竟做错了什么?:)

0 投票
1 回答
751 浏览

speech-recognition - SAPI:服务器端听写

伙计们,我正在尝试组建一个服务器端系统,在该系统中我使用 Microsoft SAPI 来:

  • 在服务器中执行多个同时听写式识别。
  • 此外,所有识别都可能使用不同的扬声器配置文件(我的应用程序将识别用户并向 SAPI 指示要加载的配置文件)。
  • 我还想以编程方式训练各种用户资料。

我已经知道上述某些内容是不可能从托管代码中实现的,即 System.speech 命名空间。谁能告诉我我在理论上使用 SAPI 5.x 尝试做的事情是否可行?

谢谢你的帮助。

-拉吉

0 投票
2 回答
673 浏览

speech-recognition - 使用 MS 语音识别服务器 API 进行转录

众所周知,现在 MS 语音 API (Microsoft.Speech) 的服务器版本不支持加载听写语法。

Q1:有没有办法解决这个问题?

Q2:我想到的一个想法是根据人们在特定主题上的对话历史(例如聊天室)构建语法。该软件需要进行自然语言转录,但使用的语言子集可能会有所限制。

这是否有可能相当准确和稳健?或者它是不是你不打算用非发音语法做的事情?

谢谢

0 投票
2 回答
672 浏览

windows - 我可以直接使用 SAPI 将语音从存储的音频实时转换为文本吗

我真正想要实现的是——>假设我播放一个音频文件(使用我的应用程序),它可以从互联网流式传输/或直接从本地存储访问。现在我想配置 SAPI 来收听这个源而不是麦克风,并像往常一样将语音从音频转换为文本。

0 投票
1 回答
1086 浏览

c# - SAPI 5.4 语法与 SAPI 5.1 兼容吗?

我在 C# 中为 win 7 编写了一个应用程序,它通过在 System.Speech 中使用 SharedRecognizer 来使用 .NET 4.0 和 SAPI 5.4。一切都在那个环境中工作,但在 Windows XP 上却不行。

在 Win XP(安装了 SAPI 5.1)上,它似乎不喜欢我正在使用的语法 xml 文件。

程序在尝试读取语法文件时崩溃,并出现以下错误:

经过一番搜索,我发现其他人在这个论坛上遇到了非常相似的问题,但问题似乎没有得到解决。

有人有想法么?我是否需要有两个版本的语法文件,一个用于 XP,一个用于 Win Vista/7?如果是这样,有没有人知道有什么不同的并排解释,所以我可以想出一种简单的方法来从一个翻译到另一个?如果我确实有不同格式的语法文件,我是否可以在 SharedRecognizer 中加载旧版本,我假设它是一个 SAPI 5.3-4 类?或者我是否必须使用对 SAPI 5.1 dll 的 COM 调用而不是 System.Speech 命名空间?

非常感谢!!

0 投票
1 回答
2265 浏览

c# - 如何在 SAPI 5.4 C# 程序中加载文本语法?

我一直在使用带有 SAPI 5.4 的 SRGS 语法来定义命令和控制语法。现在我想切换到文本语法,以便它们与 SAPI 5.1(甚至可能是 SAPI 4?)兼容。

我在这里找到了一个与SAPI 5.4 兼容的文本语法的示例

我想在运行时从它的 XML 文件加载该语法,而不是使用语法编译器工具,然后将语法的二进制版本作为资源。理想情况下,我希望能够在内存中创建一个 XDocument,然后让 Speech.Recognizer 监听这些命令。

有谁知道如何做到这一点?谢谢!

0 投票
1 回答
766 浏览

c# - .Net System.Speech 从 Mic-input 更改为 WavFile-input 时遇到的问题?

我正在使用 C# .net 库 System.Speech 来实现我的 ASR 应用程序(顺便说一句,我看过一篇提到 SpeechLib.dll 的帖子,这似乎是 SAPI 的一个更基本和低级的实现,它们是相同的?)。我们的主要目的是实现作为Server/Client ASR系统:在客户端记录用户的声音,并通过互联网将整个音频流传输到服务器,服务器处理ASR作业并将结果返回给客户端。

我写了一个类似的应用程序,它使用本地麦克风作为语音输入,它表现得很好。

我的原始应用程序:



这样,我用麦克风输入,结果显示的准确度还不错。

这就是问题所在。现在转到新任务,我必须将识别输入设置为 WavFile(或通过 TCP/IP 套接字连接的音频流)。所以我只是简单地把我的代码改成这样:



结果变得不尽如人意。我只是将一些波形片段分别预先录制到几个文件中,基于 mic-input 应用程序的相同语法,并将这些文件设置为 ASR 输入。但是,只能检测到一些文件(由 SpeechDetectedEvent 处理),很少有文件可以被很好地识别(由 SpeechRecognizedEvent 处理)。我只是录制了与麦克风输入应用程序相同的短语。

尽管准确性较差,但可以正确识别某些文件,这表明我的代码没有任何逻辑错误。但是我假设我在使用它之前错过了一些工作,例如设置识别器的一些参数。

所以我在这里寻求帮助,如果有人知道使用 wavfile-input 精度差的原因吗?

谢谢!!!!