Webkit 之间的语音到文本中断

Speech to text breaking in between Webkit

我创建了一个表格,其中会自动填充问题并通过语音获取答案。我尝试使用 JS webkit 库,但它无法正常工作并且无法识别语音。它拾取以前的语音文本并继续添加到新生成的字符串中,但有时它工作正常。如果有人正在捕获语音并将其转换为文本,请告诉我。任何帮助将不胜感激。

代码如下-

var recognition = new webkitSpeechRecognition();
recognition.lang = "en-IN";
// recognition.lang = "hi-IN";
function startTextToSpeech(){
var recognizing = false;
var ignore_onend;
var start_timestamp;
recognition.continuous = true;
recognition.interimResults = true;
var interim_text = document.getElementById('Mytext')
var final_text = document.getElementById('final_span')
var textExtracted = "";
var final_transcript = '';
recognition.onstart = function() {
    recognizing = true;
  };


recognition.onerror = function(event) {
  console.log("some error ouccured");
  console.log(event)
  recognition.stop();
  try{
      recognition.start();
    }catch(ex){
      console.log(ex)
    }
   if (event.error == 'no-speech') {   
      ignore_onend = true;
    }
    if (event.error == 'audio-capture') {
      ignore_onend = true;
    }
    if (event.error == 'not-allowed') {
      ignore_onend = true;
    }
  };

   recognition.onend = function() {
    console.log("ended")
    // recognizing = false;
    // recognition.start();
    // //switchApi();
    // if (ignore_onend) {
    //   $("#toggleStart").text("Start");
    //   $("#listenStatus").text("Speak something to convert it to text");     
    //   //clearInterval(StartAnalyzing);

    //   return;
    // }
    recognition.stop();
    try{
      recognition.start();
    }catch(ex){
      console.log(ex)
    }

    // if (window.getSelection) {
    //  recognition.start();
    //  switchApi();
    //   window.getSelection().removeAllRanges();
    //   var range = document.createRange();
    //   range.selectNode(document.getElementById('final_span'));
    //   window.getSelection().addRange(range);
    // }
  };

recognition.onresult = function(event) { 

  var interim_transcript = '';
    if (typeof(event.results) == 'undefined') {
      recognition.onend = null;
      //recognition.stop();
      return;
    }

    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_text.innerHTML = final_transcript;
    interim_text.innerHTML = interim_transcript;
    textExtracted = final_transcript+interim_transcript;
}
recognition.start();
}

您的代码没有错误,它应该可以在最新版本的 chrome 或 opera 中运行,但不确定 Firefox、IE 和 Safari,请尝试更新您的浏览器以确保您在做什么。