vb.net System.Speech.Recognition.SpeechRecognitionEngine, чтобы различать пользовательский ввод и System.Speech.Synthesis.SpeechSynthesizer

Я работаю над речевым приложением, которое слушает пользователя, обрабатывает ввод и выполняет любые действия, если это необходимо, а затем предоставляет вывод пользователю.

Я использую System.Speech.Recognition.SpeechRecognitionEngine для прослушивания пользователя и System.Speech.Synthesis.SpeechSynthesizer устно выводить пользователю.

У меня постоянно прослушивается SPR, поскольку я хочу позволить пользователю прерывать TTS, если TTS занят, говоря, но, очевидно, SPR прослушивает TTS всякий раз, когда TTS говорит, вызывая процесс, чтобы выяснить, что было сказано, и пытаясь выполнить какие-либо действия.

Я ищу некоторые идеи о том, как заставить SPR определять, слышит ли он пользователя или TTS, когда пользователь говорит, в то время как TTS также говорит.

ОБНОВЛЕНИЕ Я, возможно, нашел решение.

Я могу использовать публичный логический TtsSpeaking что TTS может установить true когда он начинает говорить, затем установите его false когда это завершится.

В течение SpeechHypothesized событие SPR, он может проверить, если TtsSpeaking является true затем проверьте гипотетический текст, чтобы увидеть, содержит ли он такие слова, как:

  • stop а также talking
  • pause а также talking

затем вызывает метод, который "сообщает" TTS, чтобы он остановил или приостановил свою речь.

Попробую и обновлю снова. Tnx

ОБНОВЛЕНИЕ 2

Решение, упомянутое выше, работает. Я также добавил "гарантию", чтобы предотвратить SPR SpeechHypothesized событие от вызова stop/pause talking методы, если он находит вышеупомянутое словосочетание в предполагаемом тексте, если пользователь не произнес эти слова, но TTS сделал:

TTS раскрывает то, что он собирается сказать, поэтому, опять же, TTS устанавливает публичную переменную с тем, что собирается сказать, SpeechHypothesized Событие может проверить, произнес ли TTS комбинированное квалифицирующее слово, и, если нет, предполагает, что пользователь произнес их, а затем вызвать stop/pause говорящий метод.

0 ответов

Другие вопросы по тегам