首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF中立即暂停SpVoice?

如何在WPF中立即暂停SpVoice?
EN

Stack Overflow用户
提问于 2016-06-20 17:03:05
回答 1查看 352关注 0票数 5

我想用多种语言的多种声音进行文本到语音的转换。

我试过SpeechSynthesizer (参考: System.Speech),但它只支持2个英语语音。在安装了6个来自微软网站的英语语音后,我仍然无法获得任何其他的语音。

我改用了SpVoice (参考:微软语音对象库)。SpVoice可以识别我刚安装的6个声音。问题是当我调用spVoice.Pause()时,它总是延迟0.5秒才完全停止说话。我还尝试将AlertBoundary设置为SpVoice,但没有帮助。

使用SpeakAsyncCancelAll时,SpeechSynthesizer可以立即暂停,但只适用于默认语音。

EN

回答 1

Stack Overflow用户

发布于 2016-12-22 13:43:11

基本上,Pause方法在最近的警报边界处暂停语音,并关闭输出设备,允许其他语音使用它。

spVoice.Speak()方法可以同步调用也可以异步调用。当同步调用时,该方法直到说出文本时才返回;当异步调用时,它立即返回,并且语音作为后台进程发出。

我希望您正在同步调用spVoice.Speak()。这就是你得到这个问题的原因。所以使用异步方法而不是同步方法,你的问题就应该解决了。然后spVoice.Pause()将立即暂停。

代码语言:javascript
复制
SpVoice spVoice = new SpVoice ();
spVoice.Speak ("Testing spVoice",SpeechVoiceSpeakFlags.SVSFlagsAsync);
//......
spVoice.Pause();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37918446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档