使用Microsoft.Speech取消.Speak

grm*_*hel 2 c# microsoft-speech-platform

我有一个使用Microsoft.Speech for TTS的应用程序.我的TTS有问题,如果流在完成之前就已经开始了.

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

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

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

Mic*_*ski 5

我建议使用Speak方法的异步版本,即SpeakAsync, 并在使用以下方法之一尝试取消异步发言操作之前:SpeakAsyncCancelSpeakAsyncCancelAll.在这里你可以找到一个例子.