【问题标题】:How to get both interim Transcript and final transcript in webkitSpeechRecognition如何在 webkitSpeechRecognition 中同时获取临时成绩单和最终成绩单
【发布时间】:2017-06-27 23:23:01
【问题描述】:

我正在开发一个使用 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 进行转换的原始代码。 任何帮助将不胜感激。 谢谢

【问题讨论】:

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


    【解决方案1】:

    您可以使用 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

    【讨论】:

    • 我之前在发布问题之前尝试过,但没有成功,或者我可能会在谷歌开发者网站上再次检查。
    猜你喜欢
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多