如何激活和禁用语音识别一定次数?

时间:2019-06-06 23:04:56

标签: javascript webkitspeechrecognition

我正在尝试使用webKit语音API创建语音识别功能,该功能会记录三个不同时间的用户输入。我使用一个for循环来遍历这三遍,在我的for循环中,我console.log一些东西,开始识别,然后停止识别。但是,最终发生的情况是console.log语句立即被打印了3次,而实际上没有任何记录。我在做什么错了?

我试图使当前函数纯粹是语音识别函数,并且让另一个函数使用for循环的3次迭代将其调用3次。但是,发生的是,在for循环中的所有console.log语句都在调用记录功能之前就已经执行,并且记录发生了。

编辑:我尝试使用回调,这是我的函数外观。但是,录音功能(检查)在首次调用后什至不执行任何操作。为什么会这样?

 var word = "fat";

 function processor(i, func2, answer){
   if(word[i] == answer && i == 2){
     console.log('Done');
   }
   else if(word[i] == answer){
     console.log('Continue')
     func2(i+1, processor)
   }
   else{
     console.log('Not yet')
     func2(i, processor)
   }
 }

 function check(i, func){
   var recognizer = new webkitSpeechRecognition();

// Start producing results before the person has finished speaking
  recognizer.interimResults = false;

// Set the language of the recognizer
  recognizer.lang = 'en-US';
  recognizer.onresult = function(event) { //this is the function that is lagging
      console.log('It works')
      var res = event.results[0][0].transcript
      console.log('You said: ', res);

      func(i, check, res);

  };
  recognizer.start();
  console.log('Ready to hear the answer');


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

  setTimeout(function() { check(0, processor);}, 7000);

}

谢谢!

0 个答案:

没有答案