我正在使用webkitSpeechRecognition。但是启动识别后,它会在闲置1-2分钟后停止。结束后,我正尝试将其退回。当我执行start_transcript(language)时,它会不断产生一千个console.log(“语音识别终止”);并且不再确认。
var final_transcript = '';
var recognizing = false;
var start_timestamp;
if (!('webkitSpeechRecognition' in window)) {
upgrade();
} else {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.onstart = function() {
recognizing = true;
};
recognition.onend = function() {
console.log("voice recognition terminated");
recognition.start();
};
function start_transcript(language) {
if (recognizing) {
recognition.stop();
return;
}
final_transcript = '';
var rec_lang = 'fr-FR';
recognition.lang = rec_lang;
recognition.start();
}
任何帮助和建议将不胜感激。
谢谢
在这里和那里只是一些小小的失踪。通过填补那些遗漏的空白来更新代码,请在控制台中尝试。另外,请不要忘记拨打start_transcript
。
var final_transcript = '';
var recognizing = false;
var start_timestamp;
if (!('webkitSpeechRecognition' in window)) {
upgrade();
} else {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.onstart = function() {
recognizing = true;
};
// need to have result as well
recognition.onresult = function(e) {
console.log(e.results);
// Extracting the words from the result and printing in the console
var transcript = [...e.results]
.map(result => result[0])
.map(result => result.transcript)
.join('');
console.log(transcript);
};
recognition.onend = function() {
console.log("voice recognition terminated");
recognition.start();
};
} // I guess you forgot closing the else block as well
function start_transcript() {
if (recognizing) {
recognition.stop();
return;
}
final_transcript = '';
var rec_lang = 'fr-FR';
recognition.lang = rec_lang;
recognition.start();
}
PS:另外,我通过引用Wesbos的javascript30并将其与webpack混合,进行了类似的项目。如果您想参考它,请访问https://github.com/Mondal10/personal-voice-assistant