C# 我是否可以在我的应用程序中安装其他TTS应用程序无法访问的自定义SAPI语音?

C# 我是否可以在我的应用程序中安装其他TTS应用程序无法访问的自定义SAPI语音?,c#,sapi,text-to-speech,speechsynthesizer,C#,Sapi,Text To Speech,Speechsynthesizer,我使用SAPI 5.x在C语言中开发了一个TTS文本到语音应用程序。我想授权或开发我自己的语音配置文件或语音文件,这些文件将专门用于我的应用程序 也就是说,它的安装方式与常规SAPI语音的安装方式不同,因为我不希望其他TTS应用程序能够使用该语音,也不希望用户能够在其系统的控制面板中选择自定义语音 可能吗?目前我使用SpeechSynthesizer.SelectVoiceMicrosoft Anna;但我需要的是以某种方式使用SelectVoice来使用安装在我的应用程序旁边的我自己的私人语音

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

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

可能吗?目前我使用SpeechSynthesizer.SelectVoiceMicrosoft Anna;但我需要的是以某种方式使用SelectVoice来使用安装在我的应用程序旁边的我自己的私人语音文件


感谢您在此主题上提供的任何建议或帮助。

通常SAPI会在Windows注册表HKEY\U CURRENT\U USER\Software\Microsoft\Speech中存储有关可用TTS语音或ASR语言的信息

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

这是没有办法的


如果您在启动应用程序时编写一些代码在注册表中添加语音信息,并在关闭应用程序时将其删除,则可能会发生这种情况。但这可能有点。。。访问权限方面存在问题。

您可以,但它将涉及一些非琐碎的编码。SAPI通过查找其对象,这些对象是SAPI用于管理引擎和应用程序之间交互的COM对象

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

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