使用Microsoft.Speech取消.Speak

时间:2014-08-25 13:41:29

标签: c# microsoft-speech-platform

我有一个使用Microsoft.Speech for TTS的应用程序。 我的TTS出现问题,如果该流在完成之前已进行了d / c修改。

public void SpeakTest()
{
  PromptBuilder prompt = new PromptBuilder();
  prompt.AppendText("This is a test prompt...");
  _speechSynthersizer.Speak(prompt);
  prompt.ClearContent();
}

这个TTS对象可以在讲话结束之前处理,这导致System.IO.EndOfStreamException和System.InvalidOperationException:说话时不能改变合成器的输出。异常。

如何取消发言,所以当我的对象被处理时,它会取消说话并正确处理对象?

2 个答案:

答案 0 :(得分:5)

我建议使用 Speak 方法的异步版本,即 SpeakAsync ,并尝试取消异步发言操作,然后再处理TTS对象,使用以下方法之一: SpeakAsyncCancel SpeakAsyncCancelAll Here你可以找到一个例子。

答案 1 :(得分:0)

您也可以将其粘贴到Try / Catch块和catch运行SpeakAyncCancelAll中。