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