Microsoft Speech API (SAPI) SpVoice 一种停止功能的方法

Pat*_*ick 6 c# com text-to-speech

我正在使用 Microsoft 的语音平台运行时,我正在使用该SpVoice界面使运行时说出我想要的句子。

为了停止演讲中间的句子,我创建了这样的函数

public void StopSpeak()
{
    try
    {
      Speaker.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
    }
    catch (COMException ex)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我在语音平台说话时运行它时,我收到了这个 com 错误:

Exception from HRESULT: 0x80045006
Run Code Online (Sandbox Code Playgroud)

我查了微软,这意味着波形设备正忙,我现在意识到每次语音平台忙说一句话时我都会收到这个错误。

是否有其他方法可以使用 SpVoice 或 Speech Platform Runtime 附带的任何其他界面或类来停止语音中间句子?

谢谢。

dav*_*soa 5

要停止 Speech 而不必处理异常,请使用Skipon 方法SpVoice。文档在这里

这应该有效,因为它会跳过int.MaxValue句子:

public void StopSpeak()
{
    Speaker.Skip("Sentence", int.MaxValue);
}
Run Code Online (Sandbox Code Playgroud)