使用 SpeechSynthesizer 说话后 Webform 永远不会停止加载
Webform never stops loading after speak using SpeechSynthesizer
我在 ASP.NET 网站上使用语音 class 播放文本到语音
成功播放文本后,页面加载永远不会停止。它会无限期地加载。所以我不能点击下一步讲下一部作品
sp.SpeakAsyncCancelAll();
sp.Volume = 100;
sp.SpeakAsync(rword.partofspeech);
如果您构建一个提示(或提供 SSML)首先播放音频文件(即使用音频 SSML 标签),然后有一些文本要说,SpeechSynthesiser 不会接受您的取消请求,一旦它已经开始朗读文本(尽管如果它仍在播放音频文件,它会很高兴地取消)。
如果你把文本放在第一位(在音频文件之前),一切都会按预期进行(你可以取消文本的朗读或后面音频文件的播放)。
可以毫无问题地取消仅使用文本说话的提示。
work-around:
您可以构建两个提示,第一个仅使用音频文件,第二个仅使用要朗读的文本,而不是同时使用音频文件和要朗读的文本构建提示。
然后您在两个提示上调用 SpeakAsync(以正确的顺序)。
现在,当您调用 SpeakAsyncCancelAll 时,它会取消正在播放的任何提示(无论是音频文件提示还是语音提示)。对于每个被取消的提示,都会按预期调用 SpeakCompleted 处理程序。
您也可以使用 SpeakAsyncCancel(提示),尽管您需要为您创建的每个提示调用它。
注意,当您构建一个首先包含音频文件,然后是要朗读的文本的提示时,我不确定为什么它实际上无法正常工作。
我在 ASP.NET 网站上使用语音 class 播放文本到语音 成功播放文本后,页面加载永远不会停止。它会无限期地加载。所以我不能点击下一步讲下一部作品
sp.SpeakAsyncCancelAll();
sp.Volume = 100;
sp.SpeakAsync(rword.partofspeech);
如果您构建一个提示(或提供 SSML)首先播放音频文件(即使用音频 SSML 标签),然后有一些文本要说,SpeechSynthesiser 不会接受您的取消请求,一旦它已经开始朗读文本(尽管如果它仍在播放音频文件,它会很高兴地取消)。 如果你把文本放在第一位(在音频文件之前),一切都会按预期进行(你可以取消文本的朗读或后面音频文件的播放)。 可以毫无问题地取消仅使用文本说话的提示。
work-around:
您可以构建两个提示,第一个仅使用音频文件,第二个仅使用要朗读的文本,而不是同时使用音频文件和要朗读的文本构建提示。
然后您在两个提示上调用 SpeakAsync(以正确的顺序)。
现在,当您调用 SpeakAsyncCancelAll 时,它会取消正在播放的任何提示(无论是音频文件提示还是语音提示)。对于每个被取消的提示,都会按预期调用 SpeakCompleted 处理程序。
您也可以使用 SpeakAsyncCancel(提示),尽管您需要为您创建的每个提示调用它。
注意,当您构建一个首先包含音频文件,然后是要朗读的文本的提示时,我不确定为什么它实际上无法正常工作。