WebKit语音识别功能导致延迟

时间:2019-06-05 02:31:35

标签: javascript webkitspeechrecognition

我有一个功能,该功能应该取一个单词,一次突出显示单词中的一个字母,对于仍突出显示的每个突出显示的字母,请使用语音转文本/用户输入来确定是否用户可以正确地说出这封信。如果用户说出的字母正确,则会突出显示单词中的下一个字母,并对该用户进行测试,以此类推。

当前,当我运行该功能时,语音转文字会导致页面滞后。因此,即使我的突出显示动作发生在代码中的“语音转文字”之前,但实际上第一个字母从未被突出显示,但语音转文字仍然处于激活状态,并且实际上并没有记录我的回复。

  • 我的突出显示功能可以很好地工作(我已经对其进行了测试),并且语音转文本是从WebKit的文档中复制的
  • 我不确定是否可以使用setTimeout(funcname)在高亮显示和语音转文本之间创建延迟,因为这只会导致函数不断暂停并重新启动,而无需进入语音转-文本
  • 我什至不知道如何检查语音转文本的准确性,因为在运行时无法打开控制台。

总体功能:“ check”是语音转文字功能

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');
       }
   };

 }

0 个答案:

没有答案