【问题标题】:webkitSpeechRecognition calling onend immediately after start()webkitSpeechRecognition 在 start() 之后立即调用 onend
【发布时间】:2020-05-31 10:12:35
【问题描述】:

只要我调用 rec.start() 它就会立即调用 onstart 然后 onend,永远不会进入 onresult。

网页允许使用麦克风,由于是https,它询问了一次 在 osx 上使用 Chrome 81.0.4044.122,它被列为支持语音识别。

我知道这在浏览器中不是一个稳定的功能,但运行 annyang 演示可以检测我的声音,我相信这是使用相同的语音识别工具包。 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;
}

【问题讨论】:

    标签: webkitspeechrecognition


    【解决方案1】:

    对不起,这是浏览器问题。

    Chrome 说已经更新了,但实际上还是需要重启,进入 Chrome Preferences 后才能看到。

    我现在在台式机和 Android 平板电脑上都有 83.0.4103.83,它似乎工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多