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