譯者| 李睿
審校| 孫淑娟
#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 };
这将允许用户控制使用的浏览器何时开始“监听”,何时停止。
因此,在深入了解了语音识别界面、方法和属性之后。现在探索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?这种技术使用起来很有趣,但仍在发展中。尽管如此,还是有很多潜在的用例。集成API可以帮助实现IT基础设施的现代化,而用户可以了解Web Speech API哪些方面已经成熟可以改进。
对着麦克风说话比打字更快捷、更有效。在当今快节奏的工作生活中,人们可能需要能够在旅途中访问网页。
它还可以很好地减少管理工作量。语音到文本技术的改进有可能显著减少数据输入任务的时间。语音到文本技术可以集成到音频视频会议中,以加快会议的记录速度。
如上所述,语音到文本(STT)和文本语音(TTS)对于有残疾或支持需求的用户来说都是很好的工具。此外,由于任何原因而在写作或拼写方面有困难的用户可以通过语音识别更好地表达自己。
这样,语音识别技术就可以成为互联网上一个很好的均衡器。鼓励在办公室使用这些工具也能促进工作场所的可访问性。
Web Speech API可以成为一种强大的语言翻译工具,因为它同时支持语音到文本(STT)和文本语音(TTS)。目前,并不是每一种语言都可用。这是Web Speech API尚未充分发挥其潜力的一个领域。
一个缺点是API必须要有互联网连接才能正常工作。此时,浏览器将输入发送到它的服务器,然后服务器返回结果。这限制了Web Speech API可以使用的环境。
在提高语音识别器的准确性方面已经取得了令人难以置信的进展。用户可能偶尔还会遇到一些困难,例如技术术语和其他专业词汇或者方言。然而,到2022年,语音识别软件的精确度已经达到了人类的水平。
虽然Web Speech API还处于实验阶段,但它可以成为网站或应用程序的一个惊人的补充。从科技公司到市场营销商,所有的工作场所都可以使用这个API来提高效率。只需几行简单的JavaScript代码,就可以打开一个全新的可访问性世界。
语音识别可以使用户更容易更有效地浏览网页,人们期待看到这项技术快速成长和发展!
原文链接:https://dzone.com/articles/the-developers-guide-to-web-speech-api-what-is-it
以上是Web Speech API開發者指南:它是什麼以及如何運作的詳細內容。更多資訊請關注PHP中文網其他相關文章!