【问题标题】:webkitSpeechRecognition automatically stopswebkitSpeechRecognition 自动停止
【发布时间】:2020-03-19 16:20:54
【问题描述】:

我正在使用 webkitSpeechRecognition。但是当启动识别时,它会在 1-2 分钟不活动后停止。我试图在它结束后将其击退。当我执行 start_transcript(language) 时,它不断产生一千个 console.log("voice recognition terminate");而且它不再识别了。

var final_transcript = '';
var recognizing = false;
var start_timestamp;
if (!('webkitSpeechRecognition' in window)) {
  upgrade();
} else {
  var recognition = new webkitSpeechRecognition();
  recognition.continuous = true;
  recognition.interimResults = true;
  recognition.onstart = function() {
    recognizing = true;
  };

  recognition.onend = function() {
    console.log("voice recognition terminated");
    recognition.start();
  };

function start_transcript(language) {
  if (recognizing) {
    recognition.stop();
    return;
  }
  final_transcript = '';
  var rec_lang = 'fr-FR';
    recognition.lang = rec_lang;
  recognition.start();
}

非常感谢任何帮助和建议。

谢谢

【问题讨论】:

    标签: javascript google-chrome webkit speech-recognition


    【解决方案1】:

    这里和那里只是一些微小的缺失。更新您的代码以填补那些缺失的空白,在您的控制台中尝试此操作。也不要忘记致电start_transcript

    var final_transcript = '';
    var recognizing = false;
    var start_timestamp;
    if (!('webkitSpeechRecognition' in window)) {
      upgrade();
    } else {
      var recognition = new webkitSpeechRecognition();
      recognition.continuous = true;
      recognition.interimResults = true;
      recognition.onstart = function() {
        recognizing = true;
      };
    
      // need to have result as well 
      recognition.onresult = function(e) {
        console.log(e.results);
    
        // Extracting the words from the result and printing in the console 
        var transcript = [...e.results]
          .map(result => result[0])
          .map(result => result.transcript)
          .join('');
        console.log(transcript);
      };
    
      recognition.onend = function() {
        console.log("voice recognition terminated");
        recognition.start();
      };
    } // I guess you forgot closing the else block as well
    
    function start_transcript() {
      if (recognizing) {
        recognition.stop();
        return;
      }
      final_transcript = '';
      var rec_lang = 'fr-FR';
      recognition.lang = rec_lang;
      recognition.start();
    }

    PS:我也参考了 Wesbos 的 javascript30 做了一个类似的项目,并将它与 webpack 混合。如果您想参考,请访问https://github.com/Mondal10/personal-voice-assistant

    【讨论】:

    • 您好,感谢您的帮助。我试过你的代码,但它在无数的“语音识别终止”控制台日志中刺穿了我的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多