Функция распознавания речи WebKit, вызывающая задержку - PullRequest
0 голосов
/ 05 июня 2019

У меня есть функция, которая должна принимать слово, выделять по одной букве в слове за раз, и для каждой выделенной буквы, пока она еще подсвечивается, использовать ввод речи в текст / пользователя, чтобы определить,пользователь может сказать это письмо правильно.Если пользователь произносит букву правильно, следующая буква в слове подсвечивается, и пользователь проверяется на эту букву и т. Д.

В настоящее время, когда я запускаю функцию, речь переводится в текст, вызывая страницуотставатьТаким образом, даже несмотря на то, что мое действие выделения происходит до преобразования текста в мой код, первая буква на самом деле никогда не выделяется, хотя функция преобразования текста в текст все равно активируется, и она фактически не регистрирует мои ответы.

  • Моя функция подсветки работает отлично (я проверял это), и речь в текст копируется из документации WebKit
  • Я не уверен, что смогу создать задержку, используяsetTimeout (funcname) между выделением и речью к тексту, так как это просто заставило бы функцию приостанавливать и перезапускать, даже не доходя до речи к тексту
  • Я понятия не имею, как дажепроверьте правильность моего преобразования текста в текст, поскольку я не могу открыть консоль, когда она работает.

Общая функция: «проверка» - это функция преобразования речи в текст

function begin(){
   responsiveVoice.speak("Welcome to Bitread. When you see a letter being highlighted, please say that letter");
   document.getElementById("new").innerHTML = word;


   function delay(){
     for(i = 0; i < word.length; i++){
       console.log(word[i]);
       highlight(word[i]);
       var res = check(word[i]);
       while(res != true){
         res = check(word[i]);
       }
     }
     // highlight(word);
     // var end = check(word[i]);
     // if(end == true){
     //   responsiveVoice.speak("Well done");
     // }
     // else{
     //   responsiveVoice.speak("Better luck next time");
     // }

   }
   setTimeout(delay, 2000);


 }

Вот моя функция проверки

function check(item){
   var recognition = new webkitSpeechRecognition(); //get new instance
   recognition.start(); //start it
   // recognition.onend = function() { //a function to restart it when it stops
   //   recognition.start();
   // }

   recognition.onresult = function(event) {
       var whatWasHeard = event.results[0][0].transcript; //get what was heard
       console.log(whatWasHeard);
       if(whatWasHeard.toLowerCase() === word.toLowerCase()){
         responsiveVoice.speak('Awesome!');
         console.log(whatWasHeard);
         return true;
       }
       else{
         responsiveVoice.speak('Try again');
       }
   };

 }

...