如何正确停止和重启web语音api?

时间:2017-03-20 04:15:31

标签: webkitspeechrecognition

每次演讲后是否需要创建SpeechRecognition的新实例?

var recognition = new SpeechRecognition();
recognition.start();

或者只是停止()并再次调用start()函数?

recognition.stop();
recognition.start();

2 个答案:

答案 0 :(得分:3)

只需一个实例即可与SpeechRecognition对象进行交互。

您可以使用start()启动监听器。 您可以使用stop()abort()停止收听者。

abort()方法与stop方法略有不同:

  

Web Speech API的abort()方法停止语音识别   听取传入音频的服务,并没有尝试   返回SpeechRecognitionResult。

以下是文档中的示例:

var recognition = new SpeechRecognition();
var speechRecognitionList = new SpeechGrammarList();
speechRecognitionList.addFromString(grammar, 1);
recognition.grammars = speechRecognitionList;

var diagnostic = document.querySelector('.output');
var bg = document.querySelector('html');

document.body.onclick = function() {
  recognition.start();
  console.log('Ready to receive a color command.');
}

abortBtn.onclick = function() {
  recognition.abort();
  console.log('Speech recognition aborted.');
}

recognition.onspeechend = function() {
  recognition.stop();
  console.log('Speech recognition has stopped.');
}

SpeechRecognition文档中了解更多信息。

答案 1 :(得分:0)

您可以使用以下方法暂停并继续当前实例:

recognition.abort(); //and then followed by:
recognition.start();

如果要重新启动新配置,例如更改语言:

recognition.lang = 'id-ID'; //example to change the language
recognition.stop(); //stop recoginition

//try to give a bit delay and then start again with the same instance
setTimeout(function(){ recognition.start(); }, 400);

我已经测试过,并且效果很好。