Программирование с распознаванием речи от microsoft. Как я мог закрывать механизм распознавания речи каждый раз, когда он получал слово


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

Мой код немного похож на этот:

_trainer = new SpeechRecognitionEngine();
_trainer.LoadGrammar(new Grammar(new GrammarBuilder(word))); // load a word
_trainer.SpeechRecognized += _trainer_SpeechRecognized;
_trainer.SpeechRecognitionRejected += _trainer_SpeechRecognitionRejected;
_trainer.SetInputToDefaultAudioDevice(); // set the input to the default audio device
_trainer.RecognizeAsync(RecognizeMode.Single);

Спасибо за помощь.

Я пытался позвонить _trainer.Dispose() в конце, но двигатель не работает вообще и дает мне перерыв.

2 4

2 ответа:

Добавить RecognizeCompleted событие к SpeechRecognitionEngine

_trainer.RecognizeCompleted += _trainer_RecognizeCompleted;

Внутри _trainer_RecognizeCompleted добавить

_trainer.RecognizeAsyncStop();

Чтобы отменить SpeechRecognitionEngine вручную,

_trainer.RecognizeAsyncCancel();

Чтобы запустить SpeechRecognitionEngine снова вызовите RecognizeAsync снова.

_trainer.RecognizeAsync(RecognizeMode.Single);

См. примеры MSDN

1-) SpeechRecognitionEngine.RecognizeAsync Метод (RecognizeMode) (Система.Речь.Признание) Два-) Перечисление RecognizeMode (System.Речь.Признание)

Вы просто должны остановить распознаватель в случае speechRecognized (когда слово захвачено)

private void _trainer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
       //Do your work 
         _trainer.RecognizeAsyncStop();
    }