成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在Javascript應(yīng)用程序中執(zhí)行語音識別

開發(fā) 前端
語音識別是計(jì)算機(jī)科學(xué)和計(jì)算語言學(xué)的一個(gè)跨學(xué)科子領(lǐng)域。它可以識別口語并將其翻譯成文本,它也被稱為自動(dòng)語音識別(ASR),計(jì)算機(jī)語音識別或語音轉(zhuǎn)文本(STT)。

[[397377]]

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

機(jī)器學(xué)習(xí)(ML)是人工智能(AI)的一種應(yīng)用,它使系統(tǒng)能夠自動(dòng)學(xué)習(xí)并從經(jīng)驗(yàn)中進(jìn)行改進(jìn),而無需進(jìn)行明確的編程。機(jī)器學(xué)習(xí)在本世紀(jì)提供了大多數(shù)語音識別方面的突破。如今,語音識別技術(shù)無處不在,例如Apple Siri,Amazon Echo和Google Nest。

語音識別以及語音響應(yīng)(也稱為語音合成或文本到語音(TTS))由Web speech API提供支持。

在本文中,我們重點(diǎn)介紹JavaScript應(yīng)用程序中的語音識別。另一篇文章介紹了語音合成。

語音識別接口

SpeechRecognition 是識別服務(wù)的控制器接口,在Chrome中稱為 webkitSpeechRecognition。SpeechRecognition 處理從識別服務(wù)發(fā)送的 SpeechRecognitionEvent。SpeechRecognitionEvent.results 返回一個(gè)SpeechRecognitionResultList 對象,該對象表示當(dāng)前會(huì)話的所有語音識別結(jié)果。

可以使用以下幾行代碼來初始化 SpeechRecognition:

  1. // 創(chuàng)建一個(gè)SpeechRecognition對象 
  2. const recognition = new webkitSpeechRecognition(); 
  3.  
  4. // 配置設(shè)置以使每次識別都返回連續(xù)結(jié)果 
  5. recognition.continuous = true
  6.  
  7. // 配置應(yīng)返回臨時(shí)結(jié)果的設(shè)置 
  8. recognition.interimResults = true
  9.  
  10. // 正確識別單詞或短語時(shí)的事件處理程序 
  11. recognition.onresult = function (event) { 
  12.   console.log(event.results); 
  13. }; 

ognition.start() 開始語音識別,而 ognition.stop() 停止語音識別,它也可以中止( recognition.abort)。

當(dāng)頁面正在訪問您的麥克風(fēng)時(shí),地址欄中將顯示一個(gè)麥克風(fēng)圖標(biāo),以顯示該麥克風(fēng)已打開并且正在運(yùn)行。

我們用句子對頁面說。“hello comma I'm talking period.” onresult 在我們說話時(shí)顯示所有臨時(shí)結(jié)果。

這是此示例的HTML代碼:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3.   <head> 
  4.     <meta charset="UTF-8" /> 
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
  6.     <title>Speech Recognition</title> 
  7.     <script> 
  8.       window.onload = () => { 
  9.         const button = document.getElementById('button'); 
  10.         button.addEventListener('click', () => { 
  11.           if (button.style['animation-name'] === 'flash') { 
  12.             recognition.stop(); 
  13.             button.style['animation-name'] = 'none'
  14.             button.innerText = 'Press to Start'
  15.             content.innerText = ''
  16.           } else { 
  17.             button.style['animation-name'] = 'flash'
  18.             button.innerText = 'Press to Stop'
  19.             recognition.start(); 
  20.           } 
  21.         }); 
  22.  
  23.         const content = document.getElementById('content'); 
  24.  
  25.         const recognition = new webkitSpeechRecognition(); 
  26.         recognition.continuous = true
  27.         recognition.interimResults = true
  28.         recognition.onresult = function (event) { 
  29.           let result = ''
  30.           for (let i = event.resultIndex; i < event.results.length; i++) { 
  31.             result += event.results[i][0].transcript; 
  32.           } 
  33.           content.innerText = result; 
  34.         }; 
  35.       }; 
  36.     </script> 
  37.     <style> 
  38.       button { 
  39.         background: yellow; 
  40.         animation-name: none; 
  41.         animation-duration: 3s; 
  42.         animation-iteration-count: infinite; 
  43.       } 
  44.       @keyframes flash { 
  45.         0% { 
  46.           background: red; 
  47.         } 
  48.         50% { 
  49.           background: green; 
  50.         } 
  51.       } 
  52.     </style> 
  53.   </head> 
  54.   <body> 
  55.     <button id="button">Press to Start</button> 
  56.     <div id="content"></div> 
  57.   </body> 
  58. </html> 

第25行創(chuàng)建了 SpeechRecognition 對象,第26和27行配置了 SpeechRecognition 對象。

當(dāng)一個(gè)單詞或短語被正確識別時(shí),第28-34行設(shè)置一個(gè)事件處理程序。

第19行開始語音識別,第12行停止語音識別。

在第12行,單擊該按鈕后,它可能仍會(huì)打印出一些消息。這是因?yàn)?Recognition.stop() 嘗試返回到目前為止捕獲的SpeechRecognitionResult。如果您希望它完全停止,請改用 ognition.abort()。

您會(huì)看到動(dòng)畫按鈕的代碼(第38-51行)比語音識別代碼長。這是該示例的視頻剪輯:https://youtu.be/5V3bb5YOnj0

以下是瀏覽器兼容性表:

網(wǎng)絡(luò)語音識別依賴于瀏覽器自己的語音識別引擎。在Chrome中,此引擎在云中執(zhí)行識別。因此,它僅可在線運(yùn)行。

語音識別庫

有一些開源語音識別庫,以下是基于npm趨勢的這些庫的列表:

1. Annyang

Annyang是一個(gè)JavaScript語音識別庫,用于通過語音命令控制網(wǎng)站。它建立在SpeechRecognition Web API之上。在下一節(jié)中,我們將舉例說明annyang的工作原理。

2. artyom.js

artyom.js是一個(gè)JavaScript語音識別和語音合成庫。它建立在Web語音API的基礎(chǔ)上,除語音命令外,它還提供語音響應(yīng)。

3. Mumble

Mumble是一個(gè)JavaScript語音識別庫,用于通過語音命令控制網(wǎng)站。它建立在SpeechRecognition Web API之上,這類似于annyang的工作方式。

4. julius.js

Julius是面向語音相關(guān)研究人員和開發(fā)人員的高性能,占用空間小的大詞匯量連續(xù)語音識別(LVCSR)解碼器軟件。它可以在從微型計(jì)算機(jī)到云服務(wù)器的各種計(jì)算機(jī)和設(shè)備上執(zhí)行實(shí)時(shí)解碼。Julis是使用C語言構(gòu)建的,而julius.js是Julius自以為是JavaScript的移植版。

5.voice-commands.js

voice-commands.js是一個(gè)JavaScript語音識別庫,用于通過語音命令控制網(wǎng)站。它建立在SpeechRecognition Web API之上,這類似于annyang的工作方式。

Annyang

Annyang初始化一個(gè) SpeechRecognition 對象,該對象定義如下:

  1. var SpeechRecognition = root.SpeechRecognition ||                                      
  2.                         root.webkitSpeechRecognition ||                           
  3.                         root.mozSpeechRecognition ||                           
  4.                         root.msSpeechRecognition ||                           
  5.                         root.oSpeechRecognition; 

有一些API可以啟動(dòng)或停止annyang:

  • annyang.start:使用選項(xiàng)(自動(dòng)重啟,連續(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:開始收聽時(shí)不帶任何選項(xiàng)。

這是此示例的HTML代碼:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3.   <head> 
  4.     <meta charset="UTF-8" /> 
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
  6.     <title>Annyang</title> 
  7.     <script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.6.1/annyang.min.js"></script> 
  8.     <script> 
  9.       window.onload = () => { 
  10.         const button = document.getElementById('button'); 
  11.         button.addEventListener('click', () => { 
  12.           if (button.style['animation-name'] === 'flash') { 
  13.             annyang.pause(); 
  14.             button.style['animation-name'] = 'none'
  15.             button.innerText = 'Press to Start'
  16.             content.innerText = ''
  17.           } else { 
  18.             button.style['animation-name'] = 'flash'
  19.             button.innerText = 'Press to Stop'
  20.             annyang.start(); 
  21.           } 
  22.         }); 
  23.  
  24.         const content = document.getElementById('content'); 
  25.  
  26.         const commands = { 
  27.           hello: () => { 
  28.             content.innerText = 'You said hello.'
  29.           }, 
  30.           'hi *splats': (name) => { 
  31.             content.innerText = `You greeted to ${name}.`; 
  32.           }, 
  33.           'Today is :day': (day) => { 
  34.             content.innerText = `You said ${day}.`; 
  35.           }, 
  36.           '(red) (green) (blue)': () => { 
  37.             content.innerText = 'You said a primary color name.'
  38.           }, 
  39.         }; 
  40.  
  41.         annyang.addCommands(commands); 
  42.       }; 
  43.     </script> 
  44.     <style> 
  45.       button { 
  46.         background: yellow; 
  47.         animation-name: none; 
  48.         animation-duration: 3s; 
  49.         animation-iteration-count: infinite; 
  50.       } 
  51.       @keyframes flash { 
  52.         0% { 
  53.           background: red; 
  54.         } 
  55.         50% { 
  56.           background: green; 
  57.         } 
  58.       } 
  59.     </style> 
  60.   </head> 
  61.   <body> 
  62.     <button id="button">Press to Start</button> 
  63.     <div id="content"></div> 
  64.   </body> 
  65. </html> 

第7行添加了annyang源代碼。

第20行啟動(dòng)annyang,第13行暫停annyang。

Annyang提供語音命令來控制網(wǎng)頁(第26-42行)。

第27行是一個(gè)簡單的命令。如果用戶打招呼,頁面將回復(fù)“您說‘你好’。”

第30行是帶有 splats 的命令,該命令會(huì)貪婪地捕獲命令末尾的多詞文本。如果您說“hi,愛麗絲e”,它的回答是“您向愛麗絲致意。”如果您說“嗨,愛麗絲和約翰”,它的回答是“您向愛麗絲和約翰打招呼。”

第33行是一個(gè)帶有命名變量的命令。一周的日期被捕獲為 day,在響應(yīng)中被呼出。

第36行是帶有可選單詞的命令。如果您說“黃色”,則將其忽略。如果您提到任何一種原色,則會(huì)以“您說的是原色名稱”作為響應(yīng)。

從第26行到第39行定義的所有命令都在第41行添加到annyang中。

... ..

結(jié)束

我們已經(jīng)了解了JavaScript應(yīng)用程序中的語音識別,Chrome對Web語音API提供了最好的支持。我們所有的示例都是在Chrome瀏覽器上實(shí)現(xiàn)和測試的。

在探索Web語音API時(shí),這里有一些提示:如果您不想在日常生活中傾聽,請記住關(guān)閉語音識別應(yīng)用程序。

原文:https://betterprogramming.pub/perform-speech-recognition-in-your-javascript-applications-91367b0d0

作者:Jennifer Fu

 

責(zé)任編輯:武曉燕 來源: 前端全棧開發(fā)者
相關(guān)推薦

2017-10-27 16:19:23

語音識別CNN

2022-04-27 19:05:46

.NETJavaScript接口

2010-11-25 10:05:22

Visual StudSilverlightWCF

2011-02-22 10:23:43

2010-06-12 16:41:10

BlackBerry開

2009-07-17 13:45:16

WinCE開始菜單

2023-12-07 08:22:58

Android應(yīng)用

2012-01-13 10:31:25

ibmdw

2011-12-23 10:01:29

2024-04-16 09:11:27

2012-03-30 15:47:50

ibmdw

2023-11-06 08:22:34

AIDLAndroid通信

2020-10-13 07:00:15

Vue Vite應(yīng)用程序開發(fā)

2021-02-20 09:57:02

人工智能移動(dòng)應(yīng)用

2009-09-22 12:17:59

ibmdwLotus

2011-10-12 11:24:44

AndroidPC

2009-02-17 23:47:18

Linux應(yīng)用程序登錄

2010-01-25 16:41:08

C++應(yīng)用程序

2009-04-01 14:33:33

2018-01-24 20:42:06

數(shù)據(jù)庫NoSQL驅(qū)動(dòng)力
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久精品亚洲一区二区三区浴池 | 99热播精品| 国产在线对白 | 免费在线观看成年人视频 | 中文字幕一区二区三区在线乱码 | 91人人爽| 特级生活片 | 亚洲精品女优 | 亚洲精品在线视频 | 成人国产精品视频 | 欧美一区二区二区 | 91在线视频免费观看 | 欧美视频福利 | 99爱免费 | 日本成人中文字幕 | 在线亚洲欧美 | 男人天堂网址 | www.天天操.com | 婷婷五月色综合香五月 | 国产成都精品91一区二区三 | 亚州激情 | 成人精品视频在线观看 | 欧美一区中文字幕 | 四虎永久在线精品免费一区二 | 免费久久精品视频 | 亚洲成人免费在线观看 | 羞羞的视频免费观看 | 精品欧美一区二区中文字幕视频 | 国外成人在线视频网站 | 中文久久| 91精品免费视频 | 九九九久久国产免费 | 五月婷婷在线视频 | 免费国产视频 | 毛片一级网站 | 成人免费在线观看 | 成人免费精品视频 | 亚洲欧洲色视频 | 男女啪啪网址 | 亚洲精品久久久蜜桃网站 | 日韩激情在线 |