我是否可以使用其他TTS应用无法访问的应用安装自定义SAPI语音?

时间:2012-05-23 17:05:02

标签: c# sapi text-to-speech speechsynthesizer

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

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

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

感谢您就此主题提出任何建议或帮助。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

没有办法解决这个问题。

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