gpt4 book ai didi

c# - SpVoice 和 SpeechSynthesizer 有什么区别

转载 作者:可可西里 更新时间:2023-11-01 09:09:43 31 4
gpt4 key购买 nike

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

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

返回 Apacela voices , 和

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

不适用于 Apacela voices .

第一个返回所有声音,第二个只返回少数声音。这与 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 声音可能支持所需的一切,但也可能不支持。你最好的选择是 ask the Acapela Group directly .

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

但我认为最有可能的可能性是 Acapela 语音尚未更新以支持 System.Speech 所需的所有接口(interface)。

关于c# - SpVoice 和 SpeechSynthesizer 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540607/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com