Web Speech API開發(fā)者指南:它是什么以及如何工作
譯文?譯者 | 李睿
審校 | 孫淑娟
Web Speech API是一種Web技術(shù),允許用戶將語(yǔ)音數(shù)據(jù)合并到應(yīng)用程序中。它可以通過(guò)瀏覽器將語(yǔ)音轉(zhuǎn)換為文本,反之亦然。
Web Speech API于2012年由W3C社區(qū)引入。而在十年之后,這個(gè)API仍在開發(fā)中,這是因?yàn)闉g覽器兼容性有限。
該API既支持短時(shí)輸入片段,例如一個(gè)口頭命令,也支持長(zhǎng)時(shí)連續(xù)的輸入。廣泛的聽寫能力使它非常適合與Applause應(yīng)用程序集成,而簡(jiǎn)短的輸入很適合語(yǔ)言翻譯。
語(yǔ)音識(shí)別對(duì)可訪問性產(chǎn)生了巨大的影響。殘疾用戶可以使用語(yǔ)音更輕松地瀏覽網(wǎng)絡(luò)。因此,這個(gè)API可能成為使網(wǎng)絡(luò)更友好、更高效的關(guān)鍵。
文本到語(yǔ)音和語(yǔ)音到文本的功能由兩個(gè)界面處理:語(yǔ)音合成和語(yǔ)音識(shí)別。
一、語(yǔ)音識(shí)別
在語(yǔ)音識(shí)別界面中,用戶對(duì)著麥克風(fēng)說(shuō)話,然后語(yǔ)音識(shí)別服務(wù)就會(huì)根據(jù)它自己的語(yǔ)法來(lái)檢查他所說(shuō)的話。
API通過(guò)首先請(qǐng)求允許通過(guò)麥克風(fēng)訪問用戶的語(yǔ)音來(lái)保護(hù)他的隱私。如果使用API的頁(yè)面使用HTTPS協(xié)議,則只請(qǐng)求一次權(quán)限。否則,API將在每個(gè)實(shí)例中詢問。
用戶的設(shè)備可能已經(jīng)包含了語(yǔ)音識(shí)別系統(tǒng),例如iOS或Android語(yǔ)音的Siri。使用語(yǔ)音識(shí)別界面時(shí),將會(huì)使用默認(rèn)系統(tǒng)。在語(yǔ)音被識(shí)別之后,它將被轉(zhuǎn)換并作為文本字符串返回。
在“one-shot”語(yǔ)音識(shí)別中,只要用戶停止說(shuō)話,識(shí)別就會(huì)結(jié)束。這對(duì)于簡(jiǎn)短的命令很有用,例如如在網(wǎng)頁(yè)上搜索應(yīng)用程序測(cè)試網(wǎng)站或者打電話。在“continuous”識(shí)別中,用戶必須使用“停止”按鈕人工結(jié)束識(shí)別。
目前,Web Speech API的語(yǔ)音識(shí)別只得到了兩種瀏覽器正式支持:Chrome for Desktop和Android。Chrome需要使用前綴界面。
然而,Web Speech API仍處于實(shí)驗(yàn)階段,規(guī)范可能會(huì)發(fā)生變化??梢酝ㄟ^(guò)搜索webkitSpeechRecognition對(duì)象來(lái)檢查當(dāng)前瀏覽器是否支持該API。
二、語(yǔ)音識(shí)別屬性
以下學(xué)習(xí)一個(gè)新函數(shù):語(yǔ)音識(shí)別()。
現(xiàn)在檢查一下某些事件的回調(diào):
(1)onStart:當(dāng)語(yǔ)音識(shí)別器開始收聽和識(shí)別語(yǔ)音時(shí),會(huì)觸發(fā)onStart??梢燥@示消息以通知用戶的設(shè)備正在收聽。
(2)onEnd:onEnd生成一個(gè)事件,每次用戶結(jié)束語(yǔ)音識(shí)別時(shí)都會(huì)觸發(fā)該事件。
(3)onError:每當(dāng)發(fā)生語(yǔ)音識(shí)別錯(cuò)誤時(shí),都會(huì)使用SpeechRecognitionError界面觸發(fā)此事件。
(4)onResult:當(dāng)語(yǔ)音識(shí)別對(duì)象獲得結(jié)果時(shí),觸發(fā)此事件。它返回臨時(shí)結(jié)果和最終結(jié)果。onResult必須使用SpeechRecognitionEvent界面。
SpeechRecognitionEvent對(duì)象包含以下數(shù)據(jù):
(1)results[i]:語(yǔ)音識(shí)別結(jié)果對(duì)象的數(shù)組,每個(gè)元素代表一個(gè)已識(shí)別的單詞。
(2)resultindex:當(dāng)前識(shí)別索引。
(3)results[i][j]:識(shí)別單詞的第j個(gè)替代詞;第一個(gè)出現(xiàn)的單詞是最可能出現(xiàn)的單詞。
(4)results[i].isFinal:一個(gè)布爾值,顯示結(jié)果是臨時(shí)的還是最終的。
(5)results[i][j].transcript:?jiǎn)卧~的文本表示。
(6)results[i][j].confidence:結(jié)果正確的概率(取值范圍從0到1) 。
那么,應(yīng)該在語(yǔ)音識(shí)別對(duì)象上配置什么屬性?以下來(lái)看看。
(1)Continuous vs One-Shot
用戶確定是否需要語(yǔ)音識(shí)別對(duì)象在關(guān)閉之前一直聽他說(shuō)話,或者是否只需要它來(lái)識(shí)別一個(gè)簡(jiǎn)短的短語(yǔ)。其默認(rèn)設(shè)置為“false”。
假設(shè)正在使用該技術(shù)做筆記,以便與庫(kù)存跟蹤模板集成。需要能夠長(zhǎng)時(shí)間說(shuō)話,并有足夠的時(shí)間暫停,而不需要將應(yīng)用程序送回睡眠狀態(tài)??梢詫ontinuous設(shè)置為true,如下所示:
(2)語(yǔ)言
希望對(duì)象識(shí)別什么語(yǔ)言?如果瀏覽器默認(rèn)設(shè)置為英文,它將自動(dòng)選擇英文。但是,也可以使用地區(qū)代碼。
此外,可以允許用戶從菜單中選擇語(yǔ)言:
(3)中期結(jié)果
中期結(jié)果是指尚未完成或最終的結(jié)果。通過(guò)將此屬性設(shè)置為true,可以使對(duì)象將臨時(shí)結(jié)果顯示為對(duì)用戶的反饋:
(4)啟動(dòng)和停止
如果已經(jīng)將語(yǔ)音識(shí)別對(duì)象配置為“continuous”, 則需要設(shè)置開始和停止按鈕的onClick屬性,如下所示:
JavaScript
這將允許用戶控制使用的瀏覽器何時(shí)開始“監(jiān)聽”,何時(shí)停止。
因此,在深入了解了語(yǔ)音識(shí)別界面、方法和屬性之后。現(xiàn)在探索Web Speech API的另一面。
三、語(yǔ)音合成
語(yǔ)音合成也被稱為文本到語(yǔ)音(TTS)。語(yǔ)音合成是指從應(yīng)用程序中獲取文本,將其轉(zhuǎn)換成語(yǔ)音,然后從設(shè)備的揚(yáng)聲器中播放。
可以使用語(yǔ)音合成做任何事情,從駕駛指南到為在線課程朗讀課堂筆記,再到視覺障礙用戶的屏幕閱讀。
在瀏覽器支持方面,從Gecko42+版本開始,Web Speech API的語(yǔ)音合成可以在Firefox桌面和移動(dòng)端使用。但是,必須首先啟用權(quán)限。Firefox OS2.5+默認(rèn)支持語(yǔ)音合成;不需要權(quán)限。Chrome和Android 33+也支持語(yǔ)音合成。
那么,如何讓瀏覽器說(shuō)話呢?語(yǔ)音合成的主要控制器界面是SpeechSynthesis,但需要一些相關(guān)的界面,例如用于輸出的聲音。大多數(shù)操作系統(tǒng)都有默認(rèn)的語(yǔ)音合成系統(tǒng)。
簡(jiǎn)單地說(shuō),用戶需要首先創(chuàng)建一個(gè)SpeechSynthesisUtterance界面的實(shí)例。其界面包含服務(wù)將讀取的文本,以及語(yǔ)言、音量、音高和速率等信息。指定這些之后,將實(shí)例放入一個(gè)隊(duì)列中,該隊(duì)列告訴瀏覽器應(yīng)該說(shuō)什么以及什么時(shí)候說(shuō)。
將需要說(shuō)話的文本指定給其“文本”屬性,如下所示:
除非使用.lang屬性另有指定,否則語(yǔ)言將默認(rèn)為應(yīng)用程序或?yàn)g覽器的語(yǔ)言。
在網(wǎng)站加載后,語(yǔ)音更改事件可以被觸發(fā)。要改變?yōu)g覽器的默認(rèn)語(yǔ)音,可以使用語(yǔ)音合成中的getvoices()方法。這將顯示所有可用的語(yǔ)音。
聲音的種類取決于操作系統(tǒng)。谷歌和MacOSx一樣有自己的默認(rèn)聲音集。最后,用戶使用Array.find()方法選擇喜歡的聲音。
根據(jù)需要定制SpeechSynthesisUtterance。可以啟動(dòng)、停止和暫停隊(duì)列,或更改通話速度(“速率”)。
四、Web Speech API的優(yōu)點(diǎn)和缺點(diǎn)
什么時(shí)候應(yīng)該使用Web Speech API?這種技術(shù)使用起來(lái)很有趣,但仍在發(fā)展中。盡管如此,還是有很多潛在的用例。集成API可以幫助實(shí)現(xiàn)IT基礎(chǔ)設(shè)施的現(xiàn)代化,而用戶可以了解Web Speech API哪些方面已經(jīng)成熟可以改進(jìn)。
1.提高生產(chǎn)力
對(duì)著麥克風(fēng)說(shuō)話比打字更快捷、更有效。在當(dāng)今快節(jié)奏的工作生活中,人們可能需要能夠在旅途中訪問網(wǎng)頁(yè)。
它還可以很好地減少管理工作量。語(yǔ)音到文本技術(shù)的改進(jìn)有可能顯著減少數(shù)據(jù)輸入任務(wù)的時(shí)間。語(yǔ)音到文本技術(shù)可以集成到音頻視頻會(huì)議中,以加快會(huì)議的記錄速度。
2.可訪問性
如上所述,語(yǔ)音到文本(STT)和文本語(yǔ)音(TTS)對(duì)于有殘疾或支持需求的用戶來(lái)說(shuō)都是很好的工具。此外,由于任何原因而在寫作或拼寫方面有困難的用戶可以通過(guò)語(yǔ)音識(shí)別更好地表達(dá)自己。
這樣,語(yǔ)音識(shí)別技術(shù)就可以成為互聯(lián)網(wǎng)上一個(gè)很好的均衡器。鼓勵(lì)在辦公室使用這些工具也能促進(jìn)工作場(chǎng)所的可訪問性。
3.翻譯
Web Speech API可以成為一種強(qiáng)大的語(yǔ)言翻譯工具,因?yàn)樗瑫r(shí)支持語(yǔ)音到文本(STT)和文本語(yǔ)音(TTS)。目前,并不是每一種語(yǔ)言都可用。這是Web Speech API尚未充分發(fā)揮其潛力的一個(gè)領(lǐng)域。
4.離線功能
一個(gè)缺點(diǎn)是API必須要有互聯(lián)網(wǎng)連接才能正常工作。此時(shí),瀏覽器將輸入發(fā)送到它的服務(wù)器,然后服務(wù)器返回結(jié)果。這限制了Web Speech API可以使用的環(huán)境。
5.精確度
在提高語(yǔ)音識(shí)別器的準(zhǔn)確性方面已經(jīng)取得了令人難以置信的進(jìn)展。用戶可能偶爾還會(huì)遇到一些困難,例如技術(shù)術(shù)語(yǔ)和其他專業(yè)詞匯或者方言。然而,到2022年,語(yǔ)音識(shí)別軟件的精確度已經(jīng)達(dá)到了人類的水平。
五、結(jié)語(yǔ)
雖然Web Speech API還處于實(shí)驗(yàn)階段,但它可以成為網(wǎng)站或應(yīng)用程序的一個(gè)驚人的補(bǔ)充。從科技公司到市場(chǎng)營(yíng)銷商,所有的工作場(chǎng)所都可以使用這個(gè)API來(lái)提高效率。只需幾行簡(jiǎn)單的JavaScript代碼,就可以打開一個(gè)全新的可訪問性世界。
語(yǔ)音識(shí)別可以使用戶更容易更有效地瀏覽網(wǎng)頁(yè),人們期待看到這項(xiàng)技術(shù)快速成長(zhǎng)和發(fā)展!
原文鏈接:https://dzone.com/articles/the-developers-guide-to-web-speech-api-what-is-it