瀏覽器的語音識別功能


你能用這兒的代碼片段輕鬆地為個人網站添加語音識別功能,而且僅用原生的javascript就可實現。

上周四我有幸在西雅圖的Code Fellows大會上就瀏覽器中的語音識別發了言。

當時許多人驚訝於用原生javascript為個人網站添加語音識別功能竟如此簡單。因此我覺得可以在這裡分享一些代碼片段,目前這些代碼只在Chrome下工作。

識別語音

你可以將語音轉化為文字:

var sr = new webkitSpeechRecognition();sr.onresult = function (evt) { console.log(evt.results[0][0].transcript);}sr.start();

你也同樣可以得到結果的置信水平(置信水平指特定個體對特定命題真實性相信的程度):

var sr = new webkitSpeechRecognition();sr.onresult = function (evt) { console.log(evt.results[0][0].transcript, evt.results[0][0].confidence);}sr.start();

你可以得到中間結果:

sr.interimResults = true;// false by defaultsr.onresult = function(evt) {for (var i = 0; i < evt.results.length; ++i) {console.log(evt.results[i][0].transcript);};};

或是已識別語音的幾種不同選擇結果:

sr.maxAlternatives = 10;// default = 1sr.onresult = function(evt) {for (var i = 0; i < evt.results[0].length; ++i) {console.log(evt.results[0][i].transcript);}}

你可以設定一種語言,以便改進:

sr.lang = pl-PL

以上所有將在你講話停止時停止識別。為避免識別中途停止,你需要設置 continuous 標誌位為true。

另外,這樣會導致每段語音都被當作中間結果,因此你同樣需要更新onresult回調函數:

sr.continuous = true;// false by defaultsr.onresult = function(evt) {console.log(evt.results[evt.results.length-1][0].transcript);};

JS中的語音識別對象除了onresult,還有以下可用的回調函數:

sr.onstart = function() { console.log("onstart"); }sr.onend = function() { console.log("onend"); }sr.onspeechstart = function() { console.info("speech start"); }sr.onspeechend = function() { console.info("speech end"); }

輸出語音:

var msg = new SpeechSynthesisUtterance(Hi, Im Jakub!);speechSynthesis.speak(msg);

你也可以改變輸出的發音:

var voices = window.speechSynthesis.getVoices();msg.voice = voices[10]; // Note: some voices dont support altering params

下面是其他可以設置的選項:

msg.volume = 1; // 0 to 1msg.pitch = 2; //0 to 2msg.text = Hello World;msg.lang = en-US;msg.onend = function(e) {console.log(Finished in + event.elapsedTime + seconds.);};

總結

語音識別在瀏覽器中的應用已不可能逆轉,問題是大多數網站會在何時增加對語音的支持。

下面的三個有關語音識別介面的鏈接或許對你有幫助:

原作者Github?

github.com圖標原作者網站?

jj09.net圖標demo?

bookslib.azurewebsites.net

註:文章為本人翻譯,僅供交流參考。歡迎轉載,煩請加上原鏈接及出處:)

原文鏈接?

dzones.com


推薦閱讀:

如何評價 Spartan 瀏覽器?
Chrome for Android 的優點是什麼?
為什麼Chrome PDF Viewer無法禁用?
請問現在幾大瀏覽器到底哪個好用?
使用 Firefox 時如何讓某一網站固定使用 HTTPS 打開?

TAG:前端開發 | 語音識別 | GoogleChrome |