SpVoice 和 SpeechSynthesizer 之间有什么区别

2023-11-25

在 C# 中使用语音 API 或的这两种方法有什么区别SAPI?

using SpeechLib;
SpVoice speech = new SpVoice();
speech.Speak(text, SpeechVoiceSpeakFlags.SVSFlagsAsync);

返回阿帕塞拉声音, and

SpeechSynthesizer ss = new SpeechSynthesizer();
ss.SpeakAsync ("Hello, world");

不适用于阿帕塞拉声音.

第一个返回所有声音,但第二个仅返回少数声音。这与 SAPI 5.1 和 SAPI 5.3 有关吗?

Vista 和 XP 上的行为相同,SpVoice 都能够检测到 Apacela 语音,但使用 SpeechSynthesizer,在 XP 和 Vista 上都检测不到语音。

我猜 XP 使用 SAPI 5.1,而 Vista 使用 SAPI 5.3,那么为什么在所有操作系统上都有相同的行为,但 API 的行为却不同呢?

还有哪个API更强大,两种方式/API有什么区别?


SpeechLib 是一个 Interop DLL,它在幕后利用了经典的基于 COM 的 SAPI。 System.Speech 由 Microsoft 开发,用于直接从托管代码中与文本转语音(和语音识别)进行交互。

一般来说,在编写托管应用程序时,坚持使用托管库 (System.Speech) 会更干净。

这绝对与 SAPI 版本无关——这里最可能的问题是语音供应商(在本例中为 Acapela)必须显式实现对某些 System.Speech 功能的支持。您所拥有的阿卡佩拉声音可能支持所需的一切,但也有可能不支持。你最好的选择是直接询问 Acapela 集团.

语音在 HKLM\SOFTWARE\Microsoft\Speech\Tokens 中注册,您应该会看到 Windows 内置语音以及您已添加的 Acapela 语音列在那里。如果您发现它们的注册方式有任何明显差异,您might能够通过使 Acapela 声音的配准与 MS-Anna 等的配准相匹配来使 Acapela 声音发挥作用。

但我想说最有可能的可能性是 Acapela 语音尚未更新以支持 System.Speech 所需的所有接口。

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

SpVoice 和 SpeechSynthesizer 之间有什么区别 的相关文章

随机推荐

  • Hibernate - 批量更新从更新返回意外行数:0 实际行数:0 预期:1

    我收到以下休眠错误 我能够识别导致问题的功能 不幸的是 该函数中有多个数据库调用 由于休眠在事务结束时刷新会话 我无法找到导致问题的行 下面提到的休眠错误看起来像是一般错误 它甚至没有提到哪个 Bean 导致了这个问题 有人熟悉这个休眠错误
  • BarSpacing 选项在 Mathematica 中是如何实现的?

    我正在尝试实现一个DateListBarChart函数 获取日期数据并输出与以下位置相同的条形图DateListPlot 如果给定相同的数据 则它们必须在相同的水平位置绘制数据 这样就可以使用组合它们Show 我发现很难获取设置BarSpa
  • 修改twitter bootstrap导航栏

    我一直在尝试修改 Twitter 引导导航栏 目前所有链接都向左对齐 而我真正想要的是让它们居中 在另一篇文章中我读到你使用这个 tabs pills margin 0 auto padding 0 width 100px 但这对我不起作用
  • IRb:如何使用预加载的类启动交互式 ruby​​ 会话

    当我经历采用 Ruby 语言的旅程时 我花了很多时间在 IRb 上 太棒了 但是 由于我不太了解它的功能 并且对 Ruby 仍然是个 傻瓜 所以我想了解以下内容 如何在不重新启动 IRb 的情况下 刷新 会话 或者这是不可能的 如何配置 I
  • 在 C/C++ 源代码中包含 Git 提交哈希和/或分支名称

    我想知道如何将 Git 提交哈希和 或其他信息获取到已编译二进制文件中 C 变量的内容中 而不使其成为 Git 跟踪的源代码的一部分 我需要跟踪在嵌入式处理器上运行的已编译可执行文件中的固件版本信息 在这种封闭环境 即没有文件系统 中 无法
  • 添加登录名并使用 SQL Server 身份验证连接到 SQL

    我想在 SQL Server 2008 中添加一个用户 这样我就可以使用 SQL Server 身份验证而不是 Windows 身份验证来连接到 SQL 并尝试使用以下代码创建一个具有登录名的用户 CREATE login newLog w
  • SQL Server 2008 中唯一的日期范围字段

    我有一个表 其中包含两个名为 StartTime 和 EndTime 的字段 两者都是 TIME 字段 我想添加一个约束 防止插入与预先存在的时间范围重叠的任何记录 例如 如果已存在 StartTime 5 00 EndTime 10 00
  • 如何使用本地phpMyAdmin客户端访问远程服务器?

    假设有一个远程服务器 并且我在我的计算机上本地安装了 phpMyAdmin 客户端 如何通过 phpMyAdmin 客户端访问该服务器并对其进行管理 那可能吗 只需将以下行添加到您的 etc phpmyadmin config inc ph
  • Microsoft.CSharp.Core.targets 丢失

    我正在使用构建工具 2017 在 TFS 2017 Update 3 上构建 Web 服务项目 出现以下错误 C Program Files x86 Microsoft Visual Studio 2017 Enterprise MSBui
  • 如何将依赖项注入动态加载的程序集

    我有一个管理器类 它通过反射加载单独程序集中包含的各种插件模块 该模块用于与外界通信 WebAPI 各种其他网络协议 public class Manager public ILogger Logger Modules need to ac
  • 服务器端仅接受 FileField 中的某种文件类型

    我该如何限制FileField服务器端以一种优雅的方式只接受某种类型的文件 视频 音频 pdf 等 一种非常简单的方法是使用自定义验证器 在您的应用程序中validators py def validate file extension v
  • 通过Android Studio更改应用程序包名称

    我知道这个问题在 SO 中被问过好几次 我已经检查了下面发布的答案 但对我不起作用 解决方案1 解决方案2 目前 我的应用程序的包名称是 com example test 我想把它改成 com example test test1 所以 我
  • 基于内容的水平居中 UICollectionView

    我有一个水平 UICollectionView 工作正常 但我想在不需要滚动时将单元格居中 IE if所有单元格都能够适合视图宽度并且用户不需要滚动then将单元格居中 if所有单元格都无法适合视图宽度并且用户需要滚动then不要将单元格居
  • 语句前的感叹号 (!) 有何作用? [复制]

    这个问题在这里已经有答案了 我试图通过在笔记本中输入以下内容来在 Jupyter 笔记本中安装深色主题 pip install jupyterthemes jt t chesterish 第一个命令有效 但第二个命令出现一些错误 然后我写了
  • Bash for 带有空格的循环

    我想做这样的事情 COMMANDS ls df du hs Devel for i in COMMANDS do echo i done 结果将是 ls df du hs Devel 但我找不到空格的正确语法 COMMANDS ls df
  • EclipseLink/Maven 存储库去了哪里? (再次)

    是的 我知道 主题之前被问过 但存储库又移动了 有人看过吗 我将非常感激 A 快速搜索显示一长串镜像 其中大多数返回 404 但它们的缓存条目仍然可见 目前 因此 这些文件似乎确实已从源头删除 而且是最近才删除的 以下是一些仍具有文件的镜像
  • iOS:是否可以同时从多个麦克风录音

    所有最新的 iPhone 都有 2 个以上麦克风 是否可以同时从所有麦克风进行录音 如果可能的话 最好的 iOS 音频库是什么 AudioKit EzAudio AudioUnits CoreAudio AudioKit 和 EzAudio
  • eclipse ini 配置

    实际上我和我的朋友正在尝试学习和使用 eclipse 3 4 我们在工作时遇到一些堆内存问题 我的朋友建议增加 eclipse ide 的内存分配 因为他有 4GB RAM 并且他想分配足够的堆 分配合适的烫发大小 并启用并行垃圾收集到这个
  • 是否可以向 ELB 后面的所有实例发送广播消息?

    我想将更新发送到 ELB 后面的所有实例 我更喜欢发送更新而不是从实例端轮询 是否可以向 ELB 发送一条消息 该消息将广播到所有实例 不直接 不 一种编程解决方法是查询 ELB API 以发现运行状况良好的实例的身份 然后查询 EC2 A
  • SpVoice 和 SpeechSynthesizer 之间有什么区别

    在 C 中使用语音 API 或的这两种方法有什么区别SAPI using SpeechLib SpVoice speech new SpVoice speech Speak text SpeechVoiceSpeakFlags SVSFla