RecognizeAsyn c () не работает, а Recognize () работает, почему? - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь заставить мою windows программу форм постоянно слушать мой микрофон, чтобы обнаруживать речь, а затем отображать эту информацию на gui. Вот мой класс SpeechListener:

{
    public class SpeechListener
    {

        GUI gui;

        public SpeechListener(GUI gui) { this.gui = gui; }

        public void StartListening() {

            gui.setLabel("speech activated");

            // Create an in-process speech recognizer for the en-US locale.  
            using (
            SpeechRecognitionEngine recognizer =
              new SpeechRecognitionEngine(
                new System.Globalization.CultureInfo("en-US")))
            {

                // Create and load a dictation grammar.  
                recognizer.LoadGrammar(new DictationGrammar());

                // Add a handler for the speech recognized event.  
                recognizer.SpeechRecognized +=
                  new EventHandler<SpeechRecognizedEventArgs>(Recognizer_SpeechRecognized);

                // Configure input to the speech recognizer.  
                recognizer.SetInputToDefaultAudioDevice();

                // Start asynchronous, continuous speech recognition.  
                recognizer.RecognizeAsync(RecognizeMode.Multiple);

            }


        }

        // Handle the SpeechRecognized event.  
        public void Recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
           //this is where i want to get
            gui.setLabel("Recognized text: " + e.Result.Text);
        }

    }
}

Этот класс создается, а StartListening () вызывается из класса формы (мой gui). Я так и не добрался до метода, обрабатывающего событие SpeechRecognized. Однако, когда я меняю

распознаватель.RecognizeAsyn c (RecognizeMode.Multiple);

на

распознаватель.Recognize ();

распознавание речи работает (но только один раз, и у меня зависает gui). Почему не работает метод asyn c? Я использовал этот же код в консольной программе, и он отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...