0

我使用 SAPI 5.x 在 C# 中开发了一个 TTS(文本到语音)应用程序。我想许可或开发我自己的语音配置文件(或语音文件),这些配置文件将专门用于我的应用程序。

也就是说,它不会以与安装常规 SAPI 语音相同的方式安装,因为我不希望其他 TTS 应用程序能够使用语音并且我不希望用户能够在他们的系统控制中选择自定义语音控制板。

可能吗?目前我使用 SpeechSynthesizer.SelectVoice("Microsoft Anna"); 但我需要以某种方式使用 SelectVoice 来使用我自己的“私人”语音文件,该文件与我的应用程序一起安装。

感谢您对此主题的任何建议或帮助。

4

2 回答 2

1

你可以,但它会涉及一些(非平凡的)编码。SAPI 通过对象令牌定位其对象,对象令牌是 SAPI 用来管理引擎和应用程序之间交互的 COM 对象。

Microsoft 的 ISpObjectToken 的默认实现使用注册表,但您没有义务使用该实现。

如果您有自己的自定义对象令牌实现(并且,第 3 方引擎经常提供自己的对象令牌实现),您可以创建从对象令牌到私有 SR 语音的代码和数据的映射。如果您不公开此对象令牌(即,您没有在注册表中将您的实现注册为 DllRegisterServer 的一部分),那么 SAPI 控制面板将无法创建您的对象令牌的任何实例,因此它不会出现在您的应用程序之外的任何地方。

于 2012-06-18T21:03:53.383 回答
0

通常 SAPI 将有关可用 TTS 语音或 ASR 语言的信息存储在 Windows 注册表 (HKEY_CURRENT_USER\Software\Microsoft\Speech) 中。

其他 TTS 应用程序将从注册表中获取可用的声音,因此您的声音也将可供他们使用。

没有办法解决这个问题。

也许如果您编写一些代码以在启动应用程序时将语音信息添加到注册表中并在关闭它时将其删除。但这可能有点……有问题(关于访问权限)。

于 2012-05-31T20:47:00.247 回答