2016-01-10 63 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