繁体   English   中英

Chrome中使用javascript语音转换文字无法识别任何内容

[英]Speech-to-text with javascript in Chrome doesn't recognize anything

我正在尝试在JAVASCRIPT中编写一个代码,它使用语音输入并将其转换为文本并将此文本放入textarea(HTML)。 我的代码如下所示。 按钮看起来有点奇怪(比平时小),当你点击它时,它根本无法正常工作。 请帮忙。

我的代码如下:

<textarea id="textarea" rows=10 cols=80></textarea>
<button id="button" onclick="toggleStartStop()"></button>

<script type="text/javascript">
var recognizing;
var recognition = new SpeechRecognition();
recognition.continuous = true;
reset();
recognition.onend = reset();

recognition.onresult = function (event) {
  for (var i = resultIndex; i < event.results.length; ++i) {
    if (event.results.final) {
      textarea.value += event.results[i][0].transcript;
    }
  }
}

function reset() {
  recognizing = false;
  button.innerHTML = "Click to Speak";
}

function toggleStartStop() {
  if (recognizing) {
    recognition.stop();
    reset();
  } else {
    recognition.start();
    recognizing = true;
    button.innerHTML = "Click to Stop";
  }
}

看起来您正在使用W3站点中的一些过时的示例代码: http//lists.w3.org/Archives/Public/public-speech-api/2012Oct/0032.html

您使用的是Google Chrome吗? 打开JavaScript控制台,它应该揭示这个问题:

未捕获的ReferenceError:未定义SpeechRecognition

以下是一个可行的示例页面: https//www.google.com/intl/en/chrome/demos/speech.html

它全部是HTML5,因此您可以查看整个源代码并从中学习。 玩得开心!

编辑:使OP的代码示例在Google Chrome上运行所需的最小更改:

  • 取代SpeechRecognition通过webkitSpeechRecognition
  • event.resultIndex替换resultIndex
  • event.results[i].isFinal替换event.results.final

结果代码:

<textarea id="textarea" rows=10 cols=80></textarea>
<button id="button" onclick="toggleStartStop()"></button>

<script type="text/javascript">
var recognizing;
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
reset();
recognition.onend = reset();

recognition.onresult = function (event) {
  for (var i = event.resultIndex; i < event.results.length; ++i) {
    if (event.results[i].isFinal) {
      textarea.value += event.results[i][0].transcript;
    }
  }
}

function reset() {
  recognizing = false;
  button.innerHTML = "Click to Speak";
}

function toggleStartStop() {
  if (recognizing) {
    recognition.stop();
    reset();
  } else {
    recognition.start();
    recognizing = true;
    button.innerHTML = "Click to Stop";
  }
}
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM