C# Microsoft语音API(SAPI)SpVoice是一种停止功能的方法
我正在使用微软的语音平台运行时,我正在使用C# Microsoft语音API(SAPI)SpVoice是一种停止功能的方法,c#,com,text-to-speech,C#,Com,Text To Speech,我正在使用微软的语音平台运行时,我正在使用SpVoice界面使运行时说出我想要的句子 为了在句子中间停止讲话,我创建了这样的函数 public void StopSpeak() { try { Speaker.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak); } catch (COMException ex) { } } 但是,当我在语音平台说话时运行此命令时,会出现以下c
SpVoice
界面使运行时说出我想要的句子
为了在句子中间停止讲话,我创建了这样的函数
public void StopSpeak()
{
try
{
Speaker.Speak("", SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
}
catch (COMException ex)
{
}
}
但是,当我在语音平台说话时运行此命令时,会出现以下com错误:
Exception from HRESULT: 0x80045006
我通过微软查到它,这意味着wave设备正忙,我现在意识到每次语音平台忙着说一句话时,我都会遇到这个错误
使用SpVoice或speech Platform运行时附带的任何其他接口或类,是否有其他方法停止语音中间语句
谢谢。要停止讲话而不必处理异常,请使用
SpVoice
上的Skip
方法。文件
这应该有效,因为它将跳过int.MaxValue
句子:
public void StopSpeak()
{
Speaker.Skip("Sentence", int.MaxValue);
}
首先,您必须将SpeechVoiceSpeakFlags设置为Asynchronous 1。这样你就可以减少说话的句点或标点。通过暂停法 Speaker.Speak(“此处为长文本”,SpeechLib.SpeechVoiceSpeakFlags.SVSFlagsAsync) 演讲者暂停() 但它会再次完成它开始阅读的句子,然后如果有标点符号,它会停止。因此,没有削减序列 一种苛刻的做法是将其设置为空; 扬声器=空; 恢复后,您必须重新设置它,包括停止的位置和继续的位置