2016-01-10 27 views
0

我正在用HTML5语音识别功能进行游戏。HTML5语音识别,请等待直到用户回答

目前我有这样的功能:

doSomething() { 
    listen("name"); 
    console.log("done"); 
} 

的“监听”功能可以运行目前是这样的:

recognition = new webkitSpeechRecognition(); 
recognition.lang = "de-DE"; 
recognition.continuous = false; 
//recognition.interimResults = true; 
recognition.onresult = function(event) { 
    result = event.results[event.resultIndex]; 

    confidence = result[0].confidence; 
    result = result[0].transcript.trim(); 
}; 

//TODO: remove old results, work with results 

recognition.start(); 

正在发生的事情是,Chrome的询问麦克风接入,直接做console.log。 我想要的是console.log等到语音识别完成。就像这样:

  1. 铬询问麦克风接入
  2. 用户说了什么
  3. 东西是与该用户说
  4. 随后将执行的执行console.log和完成这一切。

我该怎么做? 谢谢!

回答

0

Javascript编程是event-driven。代码不是要执行的语句序列,而只是要处理的事件的描述和对它们的反应。

如果要执行对识别的语音部分的动作,你需要把它变成,甚至处理,你的情况:

recognition.onresult = function(event) { 
    result = event.results[event.resultIndex]; 

    confidence = result[0].confidence; 
    result = result[0].transcript.trim(); 
    console.log("done") 
}; 

您可以访问处理函数里面的变量,做更复杂的事情。

Web上有很多关于事件驱动编程的解释,但最完整的是第17章处理事件JavaScript: The Definitive Guide, 6th Edition