如何在webkitSpeechRecognition

时间:2017-06-27 13:38:06

标签: javascript speech-recognition speech-to-text google-speech-api

我正在开发一个使用webkitSpeechRecognition的JavaScript应用程序。在我的代码中,我必须将interimResult设置为true,以便用户可以看到应用程序何时找到所说的单词的匹配但我自己想要将最终结果用于其他内容并且两者都应该显示。我已经尝试了几种方法来做到这一点,但它不起作用,包括在单击按钮时调用两个函数但这只能使一个函数起作用。这是我的算法:

<script type="text/javascript">

var r = document.getElementById('result');
var btn = document.getElementById('btn');

btn.addEventListener('click', startConverting);

function startConverting() {
if ('webkitSpeechRecognition' in window) {
var speechRecognizer = new webkitSpeechRecognition();
speechRecognizer.continuous = true;
speechRecognizer.interimResults = true;
speechRecognizer.lang = "en-GB";
speechRecognizer.start();

var finalTranscripts = '';

speechRecognizer.onresult = function(event) {
  if (event.results.length) {
    r.innerHTML = event.results[0][0].transcript;

    var question = event.results[0][0].transcript;
  }
};

speechRecognizer.onerror = function(event) {

};
} else {
r.innerHTML = 'Your browser is not supported.If Google chrome,please upgrade!';
}
}

我没有包含单击按钮时调用两个不同函数的部分,这只是用interimResults转换为true的原始代码。 任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

您可以使用isFinal属性分隔临时和最终成绩单:

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

有关详细信息,请参阅docs