很想尝试Web Speech API。我完全从文章中复制了代码,我遇到了你说话的问题,但是在你再次说话之前什么都没有发生。
[小提琴:http: //jsfiddle.net/w75v2tm5/ ]
JS:
if (!('webkitSpeechRecognition' in window)) {
//handle error stuff here...
} else {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = false;
recognition.start();
var final_transcript = '';
recognition.onresult = function (event) {
var interim_transcript = '';
if (typeof (event.results) == 'undefined') {
recognition.onend = null;
recognition.stop();
upgrade();
return;
}
for (var i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
final_transcript += event.results[i][0].transcript;
} else {
interim_transcript += event.results[i][0].transcript;
}
}
document.getElementsByTagName('div')[0].innerText = final_transcript;
};
}
例如,如果我说“Hello world”,我设置的显示结果的 <div> 不会显示“Hello world”,直到我说其他话或发出声音。但是,如果我说其他话,直到我再次说其他话时才会显示。
变量“final_transcript”保存的是 PREVIOUS 结果,而不是我刚才所说的。只差1点。
为了给你一个更好的主意...
我:“你好世界”
final_transcript = '';
[等待...]
我:“测试”
final_transcript = '你好世界'
这只是继续。代码无法按照我所说的那样转录我所说的内容。很奇怪。
关于为什么会这样的任何想法?