0

我正在开发一个语音应用程序,它可以倾听用户的声音,处理输入并在需要时执行任何操作,然后向用户提供输出。

我正在使用System.Speech.Recognition.SpeechRecognitionEngine来倾听用户的声音,并使用System.Speech.Synthesis.SpeechSynthesizer来口头输出给用户。

我让 SPR 连续收听,因为我想让用户在 TTS 忙于说话时打断 TTS,但显然,每当 TTS 说话时,SPR 都在收听 TTS,从而触发进程以找出所说的内容和试图执行任何操作。

我正在寻找一些关于如何让 SPR 确定在用户说话时 TTS 也在说话时它是在听用户还是在听 TTS 的一些想法。

更新我可能已经找到了解决方案。

TtsSpeaking我可以使用TTS 可以true在开始讲话时设置的公共布尔值,然后false在完成时将其设置为。

SpeechHypothesizedSPR 事件期间,它可以检查 if TtsSpeakingistrue然后检查假设文本以查看它是否包含以下单词:

  • stop并且talking
  • pause并且talking

然后调用一个方法,该方法将“告诉” TTS 停止或暂停其讲话。

将尝试它然后再次更新。肿瘤坏死因子

更新 2

上面提到的解决方案有效。我还添加了一个“保护措施”,以防止 SPR 的SpeechHypothesized事件stop/pause talking在用户没有说出这些单词但 TTS 确实在假设文本中找到上述单词组合时调用方法:

TTS 暴露了它要说的内容,同样,让 TTS 设置一个带有要说的公共变量,SpeechHypothesized事件可以检查 TTS 是否说出了限定词组合,如果不是,则假定用户说出了它们然后调用stop/pausetalking方法。

4

0 回答 0