我有一个使用微软的应用程序。TTS演讲。我的TTS有问题,如果流在完成之前被d/c'ed。
public void SpeakTest()
{
PromptBuilder prompt = new PromptBuilder();
prompt.AppendText("This is a test prompt...");
_speechSynthersizer.Speak(prompt);
prompt.ClearContent();
}
这个TTS对象可以在会话结束之前被处理,这会导致System. io . endofstreamexception和System. io . endfstreamexception。在说话时不能改变合成器的输出。例外。
如何取消发言,这样当我的对象被处置时,它将取消发言并正确处置对象??
我建议使用异步版本的Speak方法,即SpeakAsync并尝试取消异步说话操作,在处置TTS对象之前,通过使用以下方法之一: speakasynccancelel 或SpeakAsyncCancelAll。下面是一个示例:
您也可以将此粘贴在Try
/Catch
块中,并在catch
中运行SpeakAyncCancelAll
。