Я пытаюсь создать веб-приложение с поддержкой распознавания речи. Я успешно реализовал то же самое, и оно работает, как и ожидалось, на рабочем столе. Но на мобильных и планшетных устройствах onResult вызывается дважды, и второй результат - это то, что я ожидал, а не первый. Но из-за этого я не мог получить результат, как я ожидал. Кто-нибудь сталкивается с той же проблемой, дайте мне знать.
распознавание речи по результату вызывается дважды на мобильных и планшетных устройствах
Ответы (1)
Надеюсь, я понял вашу проблему, и, насколько я понимаю, у вас возникли проблемы с правильным извлечением результатов распознавания речи в Интернете на мобильных устройствах.
Встроенное распознавание речи, особенно браузеры Chrome/Android на Android, обрабатывают результаты распознавания речи немного иначе, чем их настольные версии. Результаты распознавания, где isFinal
верно, обычно представляют собой полные предложения, распознаваемые мобильными браузерами, тогда как, например, в десктопном хроме даже слова возвращаются с isFinal==true
.
Вот упрощенная версия того, что лучше всего сработало для меня.
var mobile=false;
if(/*Use preferred method to detect mobile device*/){
mobile=true;
}
Recognizer.onresult = function(event){
var interimTranscripts = '';
var finalTranscripts = '';
for(var i = event.resultIndex; i < event.results.length; i++){
var transcript = event.results[i][0].transcript;
if(event.results[i].isFinal){
if(mobile){ //if running on a mobile device
finalTranscripts = transcript;
}else{
finalTranscripts += transcript;
}
}else{
if(mobile){ //if running on a mobile device
interimTranscripts = transcript;
}else{
interimTranscripts += transcript;
}
}
}
if(finalTranscripts){
target.value = finalTranscripts; //the output
if(!mobile){
Recognition.stop();
}
}
else if(interimTranscripts){
target.value = interimTranscripts + finalTranscripts;
}
};
person
Jasraj Singh
schedule
01.11.2018