vb.net System.Speech.Recognition.SpeechRecognitionEngine区分用户输入和System.Speech.Synthesis.SpeechSynthesizer

时间:2014-10-03 11:52:16

标签: vb.net speech-recognition speechsynthesizer

我正在处理一个会听取用户,处理输入并根据需要执行任何操作的语音应用,然后向用户提供输出。

我使用System.Speech.Recognition.SpeechRecognitionEngine收听用户,System.Speech.Synthesis.SpeechSynthesizer以口头方式输出给用户。

我有连续的SPR监听,因为我想让用户在TTS忙碌的时候中断TTS,但很明显,只要TTS说话,SPR就会收听TTS,触发过程找出什么有人说,并试图采取任何行动。

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

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

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

在SPR的SpeechHypothesized事件期间,它可以检查TtsSpeaking是否为true,然后检查假设的文本以查看它是否包含以下字词:

  • stop andalso talking
  • pause andalso talking

然后调用一个方法,它会告诉" TTS要么停止要么停止说话。

将尝试然后再次更新。 TNX

更新2

上述解决方案有效。我还添加了一个" safeguard"防止SPR SpeechHypothesized事件调用stop/pause talking方法如果在假设文本中找到上述单词组合,如果用户没有说出这些单词,但是TTS确实如此:

TTS暴露了它将要说的内容,同样,让TTS设置一个公共变量,而{I-}}事件可以检查TTS是否说出合格词组合,如果不,假设用户说出了它们,然后调用SpeechHypothesized通话方法。

0 个答案:

没有答案