Javascript 如何在webkitSpeechRecognition中同时获得临时成绩单和最终成绩单

Javascript 如何在webkitSpeechRecognition中同时获得临时成绩单和最终成绩单,javascript,speech-recognition,speech-to-text,google-speech-api,Javascript,Speech Recognition,Speech To Text,Google Speech Api,我正在开发一个使用webkitSpeechRecognition的JavaScript应用程序。在“我的代码和必须做什么”中,我已将interimResult设置为true,以便用户可以看到应用程序何时找到与所说单词匹配的结果,但我自己希望将最终结果用于其他内容,并且应显示这两个结果。我尝试过几种方法,但都不起作用,包括单击按钮时调用两个函数,但这只能使一个函数起作用。以下是我的算法: <script type="text/javascript"> var r = document

我正在开发一个使用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!';
}
}

var r=document.getElementById('result');
var btn=document.getElementById('btn');
btn.addEventListener(“单击”,开始转换);
函数startConverting(){
if(窗口中的“webkitSpeechRecognition”){
var speechRecognizer=new-webkitSpeechRecognition();
speechRecognizer.continuous=true;
speechRecognizer.interimResults=true;
speechRecognizer.lang=“en-GB”;
speechRecognizer.start();
var finalTranscripts='';
speechRecognizer.onresult=函数(事件){
if(event.results.length){
r、 innerHTML=event.results[0][0]。转录本;
var question=event.results[0][0]。记录本;
}
};
speechRecognizer.onerror=函数(事件){
};
}否则{
r、 innerHTML='您的浏览器不受支持。如果是Google chrome,请升级!';
}
}

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

您可以使用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;
  }
}
for(var i=event.resultIndex;i

有关详细信息,请参阅。

在发布问题之前,我曾尝试过这样做,但没有成功,或者我在google开发者网站之后再次检查。