1

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;
}
4

1 に答える 1