【问题标题】:speech recognition onresult called twice on mobile and tablet deveices语音识别 onresult 在移动设备和平板设备上调用了两次
【发布时间】:2018-10-26 05:22:01
【问题描述】:

我正在尝试创建支持语音识别的 Web 应用程序。我已经成功地实现了相同的功能,并且在桌面上按预期工作。但是在移动和平板设备上,onResult 调用了两次,第二个结果是我所期望的,而不是第一个。但正因为如此,我无法得到预期的结果。有没有遇到同样问题的朋友告诉我。

【问题讨论】:

    标签: javascript speech-recognition voice-recognition webspeech-api


    【解决方案1】:

    我希望我已理解您的问题,并且根据我的理解,您似乎在移动设备上正确提取网络语音识别结果时遇到了问题。

    原生语音识别,尤其是 Android 上的 chrome/android 浏览器,处理语音识别结果的方式与其桌面版本略有不同。 isFinal 为真的识别结果通常是完整的句子,可以被移动浏览器识别,例如在桌面 chrome 上,即使是单词也会返回 isFinal==true。

    这是最适合我的简化版本。

    var mobile=false;
    if(/*Use preferred method to detect mobile device*/){
       mobile=true;
    }
    Recognizer.onresult = function(event){
      var interimTranscripts = '';
      var finalTranscripts = '';
      for(var i = event.resultIndex; i < event.results.length; i++){
        var transcript = event.results[i][0].transcript;
        if(event.results[i].isFinal){
          if(mobile){  //if running on a mobile device
            finalTranscripts = transcript;
          }else{
            finalTranscripts += transcript;
          }
        }else{
          if(mobile){  //if running on a mobile device
            interimTranscripts = transcript;
          }else{
            interimTranscripts += transcript;
          }
        }
      }
      if(finalTranscripts){
        target.value = finalTranscripts; //the output
        if(!mobile){
          Recognition.stop();
        }
      }
      else if(interimTranscripts){
        target.value = interimTranscripts + finalTranscripts;
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多