我正在使用Microsoft的Speech Platform运行时,并且正在使用SpVoice
接口(interface)使运行时说出我想要的句子。
为了停止语音中句,我创建了这样的函数
public void StopSpeak()
{
try
{
Speaker.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
}
catch (COMException ex)
{
}
}
但是当我在Speech Platform讲话时运行此命令时,出现此com错误:
Exception from HRESULT: 0x80045006
我由Microsoft进行了查找,这意味着Wave设备正忙,我现在意识到,每次语音平台正忙于讲一个句子时,我都会收到此错误。
还有其他方法可以使用SpVoice或Speech Platform Runtime随附的任何其他接口(interface)或类来停止语音中句吗?
谢谢。
最佳答案
要停止语音而不用处理异常,请在Skip
上使用SpVoice
方法。文档here。
这应该起作用,因为它将跳过int.MaxValue
语句:
public void StopSpeak()
{
Speaker.Skip("Sentence", int.MaxValue);
}
关于c# - Microsoft Speech API(SAPI)SpVoice一种停止功能的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10224506/