2017-05-28 85 views
4

我正在制作一个机器人来聆听我的声音。
所以我做:如何知道webkitSpeechRecognition是否启动?

this.recognition = new webkitSpeechRecognition(); 

我能做到这一点,开始听:

this.recognition.start(); 

而这种停止听:

this.recognition.stop(); 

但你知道,这将返回一个函数如果this.recognition已启动,我是否为true,如果它已停止,则为false?像"isStarted()"

谢谢。

回答

3

您可以通过在onstartonend事件提高一个标志变量做到这一点:

var recognition = new webkitSpeechRecognition(); 
var recognizing = false; 

recognition.onstart = function() { 
    recognizing = true; 
}; 

recognition.onend = function() { 
    recognizing = false; 
}; 

recognition.onerror = function (event) { 
    recognizing = false; 
}; 

if (recognizing) { 
    // Do stuff 
} 
+0

谢谢您的回答,我已经tryed它。我的代码有点复杂,所以有时候会因为这个错误而崩溃:------>未捕获的DOMException:未能在'SpeechRecognition'上执行'start':识别已经开始。我可以错过任何地方的布尔值更新,但webkitSpeechRecognition函数是一个更好的解决方案:P – TomSkat

+0

@TomSkat目前没有布尔值,所以您必须实现一个像我写的。请添加像我在我的答案中编辑过的'onerror'事件,并用'catch'包装你的代码,这应该解决你提到的情况。 –

+0

这似乎是好的:p,因为我不把布尔编辑的事件;) – TomSkat

相关问题