2

我有一个将 Microsoft.Speech 用于 TTS 的应用程序。如果流在完成之前得到 d/c'ed,我的 TTS 有问题。

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: Cannot change synthesizer's output while speak。例外。

我怎样才能取消说话,所以当我的对象被处理时,它会取消说话并正确处理对象?

4

2 回答 2

6

我建议使用Speak方法的异步版本,即SpeakAsync 并尝试在处理 TTS 对象之前取消异步说话操作,方法是使用以下方法之一:SpeakAsyncCancelSpeakAsyncCancelAll在这里你可以找到一个例子。

于 2014-08-25T14:00:25.317 回答
0

你也可以把它放在Try/Catch块和catchrun 中SpeakAyncCancelAll

于 2016-11-10T19:25:22.170 回答