我想通过System.Speech.Synthesis提供的SpeechSynthesizer在WPF中添加TTS。
但是,尽管下载了更多语音添加,但 Windows 11 中添加的自然语音并不是新添加的。
是否可以通过现有本地的 SpeechSynthesizer 使用自然语音,而不是通过订阅 Azure 并调用 API 密钥?
我用 GetInstalledVoices() 检查了列表,但没有添加新的声音。
System.Speech.Synthesis.SpeechSynthesizer
支持 SAPI 语音,而 Windows 11 讲述人自然语音是 Azure AI Speech 语音的离线(嵌入式)版本。
它们属于不同的语音系统,因此您不能通过 SpeechSynthesizer 使用自然语音,也不能通过 Azure Speech SDK 使用 SAPI 语音。
微软建议使用Azure语音的在线版本,功能更多,但需要联网,而且要花钱。如果无法访问互联网,微软还提供一些语音的离线(嵌入式)版本。然而,对嵌入语音的访问是有限的:
微软限制对嵌入式语音的访问。您可以通过 Azure AI Speech 嵌入式语音受限访问审核申请访问权限。有关更多信息,请参阅嵌入式语音的访问受限。
还有:
只有由 Microsoft 管理的客户,即直接与 Microsoft 客户团队合作的客户,才有资格访问。
Windows 11 讲述人自然声音怎么样?是的,它们是嵌入的声音,但它们受到一些不公开的模型密钥的保护。事实上,微软没有为第三方应用程序提供使用“讲述人”自然语音的记录方式。
所以不符合嵌入语音资格的人只能使用在线版本。
...或者,如果您仍想尝试一下,这里有一个 hack 可以完全满足您的需求:让“讲述人”的自然声音可供
System.Speech.Synthesis.SpeechSynthesizer
使用。它以某种方式从某些系统文件中提取了正确的模型密钥,因此它可以使用安装的自然声音。但它仍然没有得到微软的认可。使用它需要您自担风险。