Android Chrome 上的 webkitSpeechRecognition

webkitSpeechRecognition on Android Chrome

我正在使用 webkitSpeechRecognition 进行简单的语音到文本检测。 此代码在 Windows 桌面上运行良好。 但是 - 在 Android Chrome 浏览器 - 开始检测时,Android 状态栏上的麦克风 仅显示 1 或2秒。如果没有语音activity - 它关闭并且语音识别停止。如果我在单击 "Start" 后确实说得很快,它会保持打开状态。 有什么想法可以让 Android 麦克风随时可用吗?

     if ('webkitSpeechRecognition' in window) {

          var recognition = new webkitSpeechRecognition();

            recognition.continuous = true;
            recognition.interimResults = true;

            recognition.onstart = function () {
                $("#status").html("Status: Recording...");
                recognizing = true;
            };

            recognition.onerror = function (event) {
                alert(event.error);
            };

            recognition.onend = function() {
                recognizing = false;
            };

          recognition.onresult = function(event) {
            var interim_transcript = '';
            for (var i = event.resultIndex; i < event.results.length; ++i) {
              if (event.results[i].isFinal) {
                final_transcript += event.results[i][0].transcript;
              } else {
                interim_transcript += event.results[i][0].transcript;
              }
            }
            final_transcript = capitalize(final_transcript);
            $("#final_span").html(linebreak(final_transcript));
            $("#interim_span").html(linebreak(interim_transcript));

          };

      }

我正在寻找解决方案,因为我正在尝试与 WebVR 建立免提交互。

https://codepen.io/bryik/pen/mErOOR?editors=0010 至少只发出一次哔哔声,但经过一些测试后我注意到,用于识别的 'beep' 在每个 click/tap.

时再次触发

旧资源给了我希望,annyang (https://github.com/TalAter/annyang) 可能有用:

https://github.com/cvan/webvr-holodeck/issues/22 但在这里我猜它也只调用

recognition.onend = function() {
    console.info("voice recognition ended, restarting...");
    recognition.start();
}

在 recognition.onend 回调中。所以在 android chrome 你可能会每隔一秒遇到一次识别蜂鸣声...

最后,MDN 并没有真正说明是否可以在 android chrome (https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition) 上进行连续识别,但我看过的每个例子都没有在 android 上相当提供连续模式(至少在 CyanogenMod Lollipop 上)

// 编辑如果你看一下 https://www.microsoft.com/cognitive-services/en-us/speech-api ,他们以某种方式设法获得连续识别,但我在他们的源代码中找不到任何东西......

尝试设置:

recognition.continuous = false

不能保证,但这对我 运行 在 Chrome 在 Galaxy S7

上有效