我正在使用语音课在ASP.NET网站上播放文本到语音 成功播放文本后,页面加载永不停止。它会无限期地继续加载。所以我不能点击下一个说下一个工作
sp.SpeakAsyncCancelAll();
sp.Volume = 100;
sp.SpeakAsync(rword.partofspeech);
答案 0 :(得分:0)
如果您构建一个首先播放音频文件的提示(或提供SSML)(即使用音频SSML标记),然后在此之后发出一些文本,则SpeechSynthesiser在启动后不会遵循您的取消请求说文本(虽然如果它还在播放音频文件,它会很高兴地取消)。 如果你把文本放在第一位(音频文件之前),一切都按预期工作(你可以取消说出文字或播放下面的音频文件)。 建立一个只有文字发言的提示可以毫无问题地取消。
<强>变通:强>
不是使用音频文件后跟文本说话来构建提示,而是构建两个提示,第一个只包含音频文件,第二个只包含要发言的文本。
然后在两个提示中按正确的顺序调用SpeakAsync。
现在,当您调用SpeakAsyncCancelAll时,它将取消正在播放的任何提示(无论是音频文件提示还是语音提示)。对于每个被取消的提示,都会按预期调用SpeakCompleted处理程序。
您也可以使用SpeakAsyncCancel(提示),但您需要为您创建的每个提示调用它。
当你构建一个包含第一个音频文件,然后是要发言的文字的提示时,我不确定它为什么不能正常工作。