Web Speech使用說(shuō)明
發(fā)布日期:2023/5/28 12:26:28 瀏覽量:
Web Speech 語(yǔ)音輸入
老版本中,如果我們要部署一個(gè)帶有語(yǔ)音搜索功能的input,可用如下代碼:
- <input id="speech" type="search"
- x-webkit-speech speech />
然后通過(guò)webkitspeechchange事件來(lái)監(jiān)聽用戶輸入:
- var speech = document.getElementById(’speech’);
- speech.onwebkitspeechchange = funciton(){
- }
注意:目前只有Chrome支持這種帶語(yǔ)音的輸入框。
在新版本中,我們還可以用JavaScript操作語(yǔ)音輸入,就是通過(guò)Web Speech這個(gè)API。(也是只有Chrome支持)
主要有兩部分:
- 語(yǔ)言識(shí)別(將所說(shuō)的轉(zhuǎn)換成文本文字)
- 語(yǔ)言合成(將文本文字讀出來(lái))
1、語(yǔ)言識(shí)別
1.1 SpeechRecognition對(duì)象
這個(gè)API部署在SpeechRecognition對(duì)象之上。
1.1.1 檢測(cè)是否支持
- if (’webkitSpeechRecognition’ in window) {
- // 支持
- }
確定支持后,新建一個(gè)SpeedchRecognition的實(shí)例對(duì)象:
- if (’webkitSpeechRecognition’ in window) {
- var recognition = new webkitSpeechRecognition();
- }
1.1.2 屬性和方法
屬性
- continous:是否讓瀏覽器始終進(jìn)行語(yǔ)言識(shí)別,默認(rèn)為false,也就是說(shuō),當(dāng)用戶停止說(shuō)話時(shí),語(yǔ)音識(shí)別就停止了。這種模式適合處理短輸入的字段。
- maxAlternatives:設(shè)置返回的最大語(yǔ)音匹配結(jié)果數(shù)量,默認(rèn)為1
- lang:設(shè)置語(yǔ)言類型,默認(rèn)值就繼承自HTML文檔的根節(jié)點(diǎn)或者是祖先節(jié)點(diǎn)的語(yǔ)言設(shè)置。
方法
- start():?jiǎn)?dòng)語(yǔ)音識(shí)別
- stop():停止語(yǔ)音識(shí)別
- abort():中止語(yǔ)音識(shí)別
1.1.3 事件
瀏覽器會(huì)詢問用戶是否許可瀏覽器獲取麥克風(fēng)數(shù)據(jù)
這個(gè)API提供了11個(gè)事件。
-
audiostart:當(dāng)開始獲取音頻時(shí)觸發(fā),也就是用戶允許時(shí)。
-
audioend:當(dāng)獲取音頻結(jié)束時(shí)觸發(fā)
-
error:當(dāng)發(fā)生錯(cuò)誤時(shí)觸發(fā)
-
nomatch:當(dāng)找不到與語(yǔ)音匹配的值時(shí)觸發(fā)
-
result: 當(dāng)?shù)玫脚c語(yǔ)音匹配的值時(shí)觸發(fā),它傳入的是一個(gè)SpeechRecognitionEvent對(duì)象,它的results屬性就是語(yǔ)音匹配的結(jié)果數(shù)組,最匹配的結(jié)果排在第一位。該數(shù)組的每一個(gè)成員是SpeechRecognitionResult對(duì)象,該對(duì)象的transcript屬性就是實(shí)際匹配的文本,confidence屬性是可信度(在0到1之間)
-
soundstart
-
soundend
-
speechstart
-
speechend
-
start:當(dāng)開始識(shí)別語(yǔ)言時(shí)觸發(fā)
-
end:當(dāng)語(yǔ)音識(shí)別斷開時(shí)觸發(fā)
看個(gè)實(shí)例:
- <input id="speech" type="search"
- x-webkit-speech speech />
- var speech = document.getElementById(’speech’);
- if(’webkitSpeechRecognition’ in window) {
- var recognition = new webkitSpeechRecognition();
- recognition.onaudiostart = function(){
- speech.value = ’開始錄音’;
- };
- recognition.ononmatch = function(){
- speech.value = ’沒有匹配結(jié)果,請(qǐng)?jiān)俅螄L試’;
- };
- recognition.onerror = function(){
- speech.value =’錯(cuò)誤,請(qǐng)?jiān)俅螄L試’;
- };
- // 如果得到與語(yǔ)音匹配的值,則會(huì)觸發(fā)result事件。
- recognition.onresult = function(event){
- if(event.results.length > 0) {
- var results = event.results[0];
- var topResult = results[0];
- if(topResult.confidence > 0.5) {
- } else {
- speech.value = ’請(qǐng)?jiān)俅螄L試’;
- }
- }
- }
- }
2、語(yǔ)音合成
語(yǔ)音合成只有Chrome和Safari支持。
2.1 SpeechSynthesisUtterance對(duì)象
打開控制臺(tái),黏貼下面的函數(shù),然后調(diào)用:
- funciton speak(textToSpeak){
- var newUtterance = new SpeechSynthesisUtterance();
- newUtterance.text = textToSpeak;
- window.speechSynthsisi.speak(newUtterance);
- }
2.1 SpeechSynthesisUtteranc的實(shí)例對(duì)象的屬性
- text:識(shí)別的文本
- volume:音量(0~1)
- rate:發(fā)音速度
- pitch:音調(diào)
- voice:聲音
- lang:語(yǔ)言類型
2.2 window.speechSynthesis.getVoices()
通過(guò)API提供給用戶的聲音在很大程度上取決于操作系統(tǒng)。谷歌有自己的一套給Chrome的默認(rèn)聲音,可以在Mac OS X,Windows和Ubuntu上使用。Mac OS X的聲音也可用,所以和OSX的Safari的聲音一樣。你可以通過(guò)開發(fā)者工具的控制臺(tái)看有哪種聲音可用。
window.speechSynthesis.getVoices()用來(lái)獲取發(fā)音列表,返回一個(gè)數(shù)組,每個(gè)元素的name屬性表示聲音名稱
2.3 window.speechSynthsisi.speak()
window.speechSynthsisi.speak()方法是用于發(fā)音的。
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來(lái)的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生