新聞中心
語音識別是計算機科學(xué)和計算語言學(xué)的一個跨學(xué)科子領(lǐng)域。它可以識別口語并將其翻譯成文本,它也被稱為自動語音識別(ASR),計算機語音識別或語音轉(zhuǎn)文本(STT)。

創(chuàng)新互聯(lián)為企業(yè)提供:成都品牌網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、小程序設(shè)計、營銷型網(wǎng)站建設(shè)和網(wǎng)站運營托管,一站式網(wǎng)絡(luò)營銷整體服務(wù)。實現(xiàn)不斷獲取潛在客戶之核心目標(biāo),建立了企業(yè)專屬的“營銷型網(wǎng)站”,就用不著再為了獲取潛在客戶而苦惱,相反,客戶會主動找您,生意就找上門來了!
機器學(xué)習(xí)(ML)是人工智能(AI)的一種應(yīng)用,它使系統(tǒng)能夠自動學(xué)習(xí)并從經(jīng)驗中進行改進,而無需進行明確的編程。機器學(xué)習(xí)在本世紀(jì)提供了大多數(shù)語音識別方面的突破。如今,語音識別技術(shù)無處不在,例如Apple Siri,Amazon Echo和Google Nest。
語音識別以及語音響應(yīng)(也稱為語音合成或文本到語音(TTS))由Web speech API提供支持。
在本文中,我們重點介紹JavaScript應(yīng)用程序中的語音識別。另一篇文章介紹了語音合成。
語音識別接口
SpeechRecognition 是識別服務(wù)的控制器接口,在Chrome中稱為 webkitSpeechRecognition。SpeechRecognition 處理從識別服務(wù)發(fā)送的 SpeechRecognitionEvent。SpeechRecognitionEvent.results 返回一個SpeechRecognitionResultList 對象,該對象表示當(dāng)前會話的所有語音識別結(jié)果。
可以使用以下幾行代碼來初始化 SpeechRecognition:
- // 創(chuàng)建一個SpeechRecognition對象
- const recognition = new webkitSpeechRecognition();
- // 配置設(shè)置以使每次識別都返回連續(xù)結(jié)果
- recognition.continuous = true;
- // 配置應(yīng)返回臨時結(jié)果的設(shè)置
- recognition.interimResults = true;
- // 正確識別單詞或短語時的事件處理程序
- recognition.onresult = function (event) {
- console.log(event.results);
- };
ognition.start() 開始語音識別,而 ognition.stop() 停止語音識別,它也可以中止( recognition.abort)。
當(dāng)頁面正在訪問您的麥克風(fēng)時,地址欄中將顯示一個麥克風(fēng)圖標(biāo),以顯示該麥克風(fēng)已打開并且正在運行。
我們用句子對頁面說?!癶ello comma I'm talking period.” onresult 在我們說話時顯示所有臨時結(jié)果。
這是此示例的HTML代碼:
Speech Recognition
第25行創(chuàng)建了 SpeechRecognition 對象,第26和27行配置了 SpeechRecognition 對象。
當(dāng)一個單詞或短語被正確識別時,第28-34行設(shè)置一個事件處理程序。
第19行開始語音識別,第12行停止語音識別。
在第12行,單擊該按鈕后,它可能仍會打印出一些消息。這是因為 Recognition.stop() 嘗試返回到目前為止捕獲的SpeechRecognitionResult。如果您希望它完全停止,請改用 ognition.abort()。
您會看到動畫按鈕的代碼(第38-51行)比語音識別代碼長。這是該示例的視頻剪輯:https://youtu.be/5V3bb5YOnj0
以下是瀏覽器兼容性表:
網(wǎng)絡(luò)語音識別依賴于瀏覽器自己的語音識別引擎。在Chrome中,此引擎在云中執(zhí)行識別。因此,它僅可在線運行。
語音識別庫
有一些開源語音識別庫,以下是基于npm趨勢的這些庫的列表:
1. Annyang
Annyang是一個JavaScript語音識別庫,用于通過語音命令控制網(wǎng)站。它建立在SpeechRecognition Web API之上。在下一節(jié)中,我們將舉例說明annyang的工作原理。
2. artyom.js
artyom.js是一個JavaScript語音識別和語音合成庫。它建立在Web語音API的基礎(chǔ)上,除語音命令外,它還提供語音響應(yīng)。
3. Mumble
Mumble是一個JavaScript語音識別庫,用于通過語音命令控制網(wǎng)站。它建立在SpeechRecognition Web API之上,這類似于annyang的工作方式。
4. julius.js
Julius是面向語音相關(guān)研究人員和開發(fā)人員的高性能,占用空間小的大詞匯量連續(xù)語音識別(LVCSR)解碼器軟件。它可以在從微型計算機到云服務(wù)器的各種計算機和設(shè)備上執(zhí)行實時解碼。Julis是使用C語言構(gòu)建的,而julius.js是Julius自以為是JavaScript的移植版。
5.voice-commands.js
voice-commands.js是一個JavaScript語音識別庫,用于通過語音命令控制網(wǎng)站。它建立在SpeechRecognition Web API之上,這類似于annyang的工作方式。
Annyang
Annyang初始化一個 SpeechRecognition 對象,該對象定義如下:
- var SpeechRecognition = root.SpeechRecognition ||
- root.webkitSpeechRecognition ||
- root.mozSpeechRecognition ||
- root.msSpeechRecognition ||
- root.oSpeechRecognition;
有一些API可以啟動或停止annyang:
- annyang.start:使用選項(自動重啟,連續(xù)或暫停)開始監(jiān)聽,例如 annyang.start({autoRestart:true,Continuous:false})。
- annyang.abort:停止收聽(停止SpeechRecognition引擎或關(guān)閉麥克風(fēng))。
- annyang.pause:停止收聽(無需停止SpeechRecognition引擎或關(guān)閉麥克風(fēng))。
- annyang.resume:開始收聽時不帶任何選項。
這是此示例的HTML代碼:
Annyang
第7行添加了annyang源代碼。
第20行啟動annyang,第13行暫停annyang。
Annyang提供語音命令來控制網(wǎng)頁(第26-42行)。
第27行是一個簡單的命令。如果用戶打招呼,頁面將回復(fù)“您說‘你好’。”
第30行是帶有 splats 的命令,該命令會貪婪地捕獲命令末尾的多詞文本。如果您說“hi,愛麗絲e”,它的回答是“您向愛麗絲致意。”如果您說“嗨,愛麗絲和約翰”,它的回答是“您向愛麗絲和約翰打招呼?!?/p>
第33行是一個帶有命名變量的命令。一周的日期被捕獲為 day,在響應(yīng)中被呼出。
第36行是帶有可選單詞的命令。如果您說“黃色”,則將其忽略。如果您提到任何一種原色,則會以“您說的是原色名稱”作為響應(yīng)。
從第26行到第39行定義的所有命令都在第41行添加到annyang中。
... ..
結(jié)束
我們已經(jīng)了解了JavaScript應(yīng)用程序中的語音識別,Chrome對Web語音API提供了最好的支持。我們所有的示例都是在Chrome瀏覽器上實現(xiàn)和測試的。
在探索Web語音API時,這里有一些提示:如果您不想在日常生活中傾聽,請記住關(guān)閉語音識別應(yīng)用程序。
原文:https://betterprogramming.pub/perform-speech-recognition-in-your-javascript-applications-91367b0d0
作者:Jennifer Fu
分享標(biāo)題:在Javascript應(yīng)用程序中執(zhí)行語音識別
本文鏈接:http://www.5511xx.com/article/coshghh.html


咨詢
建站咨詢
