在Chrome中使用javascript将语音转换为文本';我什么都不认识

在Chrome中使用javascript将语音转换为文本';我什么都不认识,javascript,html,google-chrome,speech-recognition,Javascript,Html,Google Chrome,Speech Recognition,我正在尝试用JAVASCRIPT编写一个代码,它使用语音接收输入并将其转换为文本,然后将该文本转换为textarea(HTML)。我的代码如下所示。这个按钮看起来有点奇怪(比平时小),当你点击它时,它就不能正常工作了。请帮忙 我的代码如下: <textarea id="textarea" rows=10 cols=80></textarea> <button id="button" onclick="toggleStartStop()"></button

我正在尝试用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";
  }
}

var识别;
var recognition=新的SpeechRecognition();
识别。连续=正确;
重置();
recognition.onend=reset();
recognition.onresult=函数(事件){
对于(var i=resultIndex;i

看起来您使用的是W3站点中一些过时的示例代码:

你在用谷歌浏览器吗?打开JavaScript控制台,应该会发现以下问题:

未捕获引用错误:未定义SpeechRecognition

以下是一个有效的示例页面:

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

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

  • SpeechRecognition
    替换为
    webkitSpeechRecognition
  • resultIndex
    替换为
    event.resultIndex
  • event.results.final
    替换为
    event.results[i]。isFinal
结果代码:

<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>

var识别;
var recognition=new-webkitSpeechRecognition();
识别。连续=正确;
重置();
recognition.onend=reset();
recognition.onresult=函数(事件){
对于(var i=event.resultIndex;i
“未按预期工作”不是一个很好的描述。你必须说得更具体些。@Biffen当我点击奇怪的按钮并开始在麦克风上讲话时,它应该会将我的声音转换成文本,但它不会……我的意思是什么都不会发生。你测试的是哪个浏览器?@mskimm我使用的是谷歌chromeThanks。但是他们也使用了javascript,我的代码非常类似给他们的!:(@user3510165:除了谷歌的代码有效,而你的代码无效。你使用class
SpeechRecognition
,谷歌使用class
webkitSpeechRecognition
;显然这是一个相关的区别。哦,我没有意识到。谢谢。但是现在我用--allow file access from files方法更改了它并打开了chrome唯一的区别是,按钮正常显示,当我点击它时,我被要求使用麦克风。一旦我允许它并开始说话……文本框中就什么也没有出现!!@user3510165:W3的代码示例中有更多的怪癖;请参阅我上面的编辑以获得完整的修复列表。就我个人而言,我会放弃该代码,转而使用谷歌是的。当有人送你一辆免费的梅赛德斯时,你就开它;你不会用它来为你的坏了的日产汽车收集备件。我使用的是用于android设备的var recognition=new SpeechRecognition();但它不起作用。会有什么问题?