webkitSpeechRecognition «отстает» при сборе результатов
Имел зуд попробоватьAPI веб-речи, Я скопировал код именно из статьи, и у меня возникла проблема, когда вы говорите, но ничего не происходит, пока вы говорите СНОВА.
[Fiddle: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" содержит ПРЕДЫДУЩИЙ результат, а не то, что я только что сказал. Это только на 1.
Чтобы дать вам лучшую идею ...
Я: "Привет, мир"
final_transcript = '';
[Подождите...]
Я: «Тест»
final_transcript = 'Привет, мир'
И это только продолжается. Код не может расшифровать то, что я говорю, поскольку я говорю это. Очень странно.
Есть мысли о том, почему это может быть?