简体   繁体   English

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

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

I am trying to write a code in JAVASCRIPT which takes an input using voice and converts it into text and puts this text into textarea(HTML). 我正在尝试在JAVASCRIPT中编写一个代码,它使用语音输入并将其转换为文本并将此文本放入textarea(HTML)。 My code is as shown below. 我的代码如下所示。 The button appears kinda strange(smaller than usual) and when you click it, it doesnt work as desired. 按钮看起来有点奇怪(比平时小),当你点击它时,它根本无法正常工作。 Please help. 请帮忙。

My code is as follows: 我的代码如下:

<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";
  }
}

Looks like you are using some outdated sample code from the W3 site: http://lists.w3.org/Archives/Public/public-speech-api/2012Oct/0032.html 看起来您正在使用W3站点中的一些过时的示例代码: http//lists.w3.org/Archives/Public/public-speech-api/2012Oct/0032.html

Are you using Google Chrome? 您使用的是Google Chrome吗? Open the JavaScript console, it should reveal this problem: 打开JavaScript控制台,它应该揭示这个问题:

Uncaught ReferenceError: SpeechRecognition is not defined 未捕获的ReferenceError:未定义SpeechRecognition

Here's a sample page that does work: https://www.google.com/intl/en/chrome/demos/speech.html 以下是一个可行的示例页面: https//www.google.com/intl/en/chrome/demos/speech.html

It's all HTML5, so you can have a look at the entire source and learn from it. 它全部是HTML5,因此您可以查看整个源代码并从中学习。 Have fun! 玩得开心!

EDIT: Minimum changes needed to make OP's code sample work on Google Chrome: 编辑:使OP的代码示例在Google Chrome上运行所需的最小更改:

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

Resulting code: 结果代码:

<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