Windows речь перестает слушать через некоторое время - PullRequest
0 голосов
/ 06 августа 2020

Вот функция, которая настраивает ввод звука и грамматики et c для распознавателя речи.

private void Form1_Load(object sender, EventArgs e)
    {
         
         theTime.Start();
            SpeechRecognitionEngine speechRec = new SpeechRecognitionEngine();
       
            list.Add(File.ReadAllLines(@"H:\Alyssa Reborn\Alyssa Reborn\grammar\commands.txt"));
            Grammar gr = new Grammar(new GrammarBuilder(list));


            speechRec.LoadGrammar(gr);
            speechRec.SpeechRecognized += speechRec_SpeechRecognized;
            speechRec.SetInputToDefaultAudioDevice();
            speechRec.RecognizeAsync(RecognizeMode.Multiple);
            s.SelectVoiceByHints(VoiceGender.Female);

            s.SelectVoice("CereVoice Jess - English (England)");
       
         
         say(GreetingsFunction());
         using (SpeechSynthesizer synth = new SpeechSynthesizer())
         {

             // Output information about all of the installed voices. 
             Console.WriteLine("Installed voices -");
             foreach (InstalledVoice voice in synth.GetInstalledVoices())
             {
                 VoiceInfo info = voice.VoiceInfo;
                 Console.WriteLine(" Voice Name: " + info.Name);
             }
         }
        versionLabel.Text = "Version: " + versionReference.Version();
    }

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

Вещи, которые я пытался исправить эту проблему:

  1. После многочисленных неудачных попыток я решил посмотреть, исправит ли эта проблема каждую секунду обновление распознавателя речи, из-за этого программа СУПЕР зависала, давала сбой и принимала одну команду как две, а go - полностью бешеный. Я ожидал этого, но это была попытка сусла.

  2. Поскольку не указано c количество времени, необходимое для его остановки (обычно от 5 до 15 минут, иногда даже дольше) Я просто поставил случайный таймер на 130 секунд, чтобы он обновил sh распознаватель речи, но, поскольку неизвестно время его выхода из строя, иногда он перезагружал речь, и снова принимал 1 команду как две с момента загрузки дважды ...

У меня совершенно нет идей и я буду признателен за любую помощь, которую я могу получить :)

...