我正在使用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/

10-11 19:59