【问题标题】:webkitSpeechRecognition on Android ChromeAndroid Chrome 上的 webkitSpeechRecognition
【发布时间】:2025-12-04 13:30:01
【问题描述】:

我正在使用带有webkitSpeechRecognition 的简单语音到文本检测。 此代码在 Windows 桌面上运行良好。 但是 - 在 Android Chrome 浏览器 - 开始检测时,Android 状态栏上的麦克风仅显示 1 或 2 秒。如果没有语音活动 - 它会关闭并且语音识别会停止。如果我在单击“开始”后确实说得很快,它会一直亮着。 任何想法如何让 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));

          };

      }

【问题讨论】:

    标签: javascript android google-chrome webkitspeechrecognition


    【解决方案1】:

    尝试设置:

    recognition.continuous = false
    

    不能保证,但这对我在 Galaxy S7 上的 Chrome 上运行很有用

    【讨论】:

      【解决方案2】:

      当我尝试与 WebVR 建立免提交互时,我自己也在寻找解决方案。

      https://codepen.io/bryik/pen/mErOOR?editors=0010 至少只发出一次哔声,但经过一些测试后我注意到,每次点击/点击时都会再次触发识别“哔声”。

      一个较旧的资源给了我很好的希望,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 进行编辑,他们不知何故设法获得了持续识别,但我在他们的源代码中找不到任何东西......

      【讨论】: