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