我有一个功能,该功能应该取一个单词,一次突出显示单词中的一个字母,对于仍突出显示的每个突出显示的字母,请使用语音转文本/用户输入来确定是否用户可以正确地说出这封信。如果用户说出的字母正确,则会突出显示单词中的下一个字母,并对该用户进行测试,以此类推。
当前,当我运行该功能时,语音转文字会导致页面滞后。因此,即使我的突出显示动作发生在代码中的“语音转文字”之前,但实际上第一个字母从未被突出显示,但语音转文字仍然处于激活状态,并且实际上并没有记录我的回复。
总体功能:“ 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');
}
};
}