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
говорящий метод.