モバイルで音声認識をしようとしています。ここにいくつかのコードがあります..
var recognition = new webkitSpeechRecognition();
recognition.onresult = function (e) {
//This is called every time the Speech Recognition hears you speak.
//You may say "How's it going today", the recognition will try to
//interpret what you're saying while you're speaking. For example, while
//you're speaking it may go.. "house" "how's it going" "how's it going today"
//as it interprets it returns an object that contains properties, one of
//which is "e.results[i].isFinal" where "i" is an array of returned objects.
//In this case the object with a transcript of "house" would have a
//"e.results[i].isFinal" value of false. Where as the object with a transcript
//of "how's it going today" would have a "e.results[i].isFinal" value of
//true.. Because this is the FINAL INTERPRETATION of this particular transcript.
//HOWEVER.. The problem I'm having is that when using a mobile device, the "e.results[i].isFinal" always
//has a value of true, even when it's not the final interpretation. It works correctly on desktop however. Both are using Chrome.
if(e.results[e.results.length-1].isFinal){
var finalTranscript = '';
for(i=0;i<e.results.length;i++){
finalTranscript += e.results[i][0].transcript;
}
console.log(finalTranscript);
document.getElementById('output').innerHTML = finalTranscript;
}
}
他の誰かがこの問題を抱えているかどうか、またこの問題を回避する方法についての洞察があるかどうか疑問に思っています。私のウェブサイトに例があります。
https://jaymartmedia.com/example/speech.html
ページにデバッグ情報を追加しました (モバイルでコンソールを「見る」ことができるようにするためです。デスクトップでは、「2: Final: false」と「2: Final: true」に気付く場合があります。これは、 "e.results[i].isFinal". モバイルでは、常に (または、少なくとも自分の電話で試したときは常に) "2: Final: true" になります。
それは大きな問題を引き起こしています。どんな洞察も大歓迎です。