当前位置:  开发笔记 > 编程语言 > 正文

SpVoice和SpeechSynthesizer有什么区别

如何解决《SpVoice和SpeechSynthesizer有什么区别》经验,为你挑选了1个好方法。

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

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

返回Apacela的声音,和

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

不适用于Apacela的声音.

第一个声音返回所有声音,但第二个声音只返回少量声音.这是与SAPI 5.1和SAPI 5.3相关的吗?

在Vista和XP上的行为是相同的,在SpVoice能够检测到Apacela语音但是使用SpeechSynthesizer时,在XP和Vista上都没有检测到声音.

我猜XP使用SAPI 5.1,而Vista使用SAPI 5.3然后为什么在所有操作系统上都有相同的行为,但与API的行为不同?

另外哪个API更强大,两种方式/ API有什么区别?



1> sblom..:

SpeechLib是一个Interop DLL,它使用了经典的基于COM的SAPI.System.Speech由Microsoft开发,可直接从托管代码中与文本到语音(和语音识别)进行交互.

通常,在编写托管应用程序时坚持使用托管库(System.Speech)更为清晰.

它绝对与SAPI版本无关 - 这里最可能的问题是语音供应商(在这种情况下是Acapela)必须明确地实现对某些System.Speech功能的支持.Acapela可能会说你支持所需要的一切,但也有可能他们不支持.您最好的选择是直接询问Acapela集团.

声音在HKLM\SOFTWARE\Microsoft\Speech\Tokens中注册,您应该看到Windows内置声音,以及您在其中列出的Acapela声音.如果你发现他们的注册方式有任何明显的差异,你可以通过使他们的注册与MS-Anna的注册相匹配来使Acapela的声音有效.

但我要说的最可能的是,Acapela语音尚未更新,无法支持System.Speech所需的所有接口.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有