rec.start() を呼び出すとすぐに onstart が呼び出され、次に onend がすぐに呼び出され、onresult にはなりません。
マイクは Web ページで許可されていますが、speechRecognition をサポートするものとしてリストされている osx で https を使用しているため、一度尋ねられました。
これはブラウザー内で安定した機能ではないことは承知していますが、annyang のデモを実行すると私の声が検出され、同じ speechRecognition キットを使用していると思います。 https://www.talater.com/annyang/
何か案は?
これが私のコードです
if (!window.webkitSpeechRecognition) {
// not called, so assume browser supports webkitSpeechRecognition
alert('Your browser doesn\'t support speech to text.\nTry Chrome 33+ :)');
} else {
const promise = new Promise((resolve, reject) => {
const recognition = new webkitSpeechRecognition();
recognition.lang = lang;
recognition.continuous = true; // tried true and false
recognition.onstart = (e) => {
// called immediately after .start() as expected
console.log("onstart");
}
recognition.onend = () => {
// called immediately after onstart, not as expected
console.log("onend");
}
recognition.onresult = function(event) {
// never called, because it ended as soon as it started
console.log("onresult");
};
// also tried the following formats
// recognition.onresult = (event) => {};
// recognition.addEventListener('onresult', (event) => {};
// original example written like the following
// recognition.addEventListener('result', (event) => {};
recognition.start();
});
return await promise;
}