我有一个使用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:说话时不能改变合成器的输出。异常。
如何取消发言,所以当我的对象被处理时,它会取消说话并正确处理对象?
答案 0 :(得分:5)
我建议使用 Speak 方法的异步版本,即 SpeakAsync ,并尝试取消异步发言操作,然后再处理TTS对象,使用以下方法之一: SpeakAsyncCancel 或 SpeakAsyncCancelAll 。 Here你可以找到一个例子。
答案 1 :(得分:0)
您也可以将其粘贴到Try
/ Catch
块和catch
运行SpeakAyncCancelAll
中。