亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

鮮為人知的HTML5語音合成功能

2024-09-05 07:19:34
字體:
來源:轉載
供稿:網友

聽一下就會發現,播放出來的聲音并不是預先錄制好的音頻資料,而是通過文字識別后合成的語音

請先戴上耳機,然后將下面的代碼復制到chrome控制臺中體驗~

let msg = new SpeechSynthesisUtterance("歡迎你閱讀我的博客");window.speechSynthesis.speak(msg);

看,前端實現語音合成并不難

今天的主角 Speech Synthesis API

通過上面的例子我們可以猜測到上面調用的兩個方法的功能

SpeechSyntehesisUtterancwindow.speechSynthesis.speak

當然了,語音合成不僅僅包含這兩個API,but我們先從這兩點入手

SpeechSyntehesisUtteranc

參考:developer.mozilla.org/en-US/docs/… SpeechSyntehesisUtteranc 對象包含了語音服務要讀取的內容和一些參數,比如語言,音高和音量

SpeechSyntehesisUtteranc()SpeechSynthesisUtterance.langSpeechSynthesisUtterance.pitchSpeechSynthesisUtterance.rateSpeechSynthesisUtterance.voiceSpeechSynthesisUtterance.volume

注意:以上屬性都是 可讀寫 的! 可以把下面這段代碼copy下來嘗試一下,注釋中會有說明

let msg = new SpeechSynthesisUtterance();msg.text = "how are you" // 要合成的文本msg.lang = "en-US" // 美式英語發音(默認自動選擇)msg.rate = 2  // 二倍速(默認為 1,范圍 0.1~10)msg.pitch = 2 // 高音調(數字越大越尖銳,默認為 1,范圍 0~2 )msg.volume = 0.5 // 音量 0.5 倍(默認為1,范圍 0~1)window.speechSynthesis.speak(msg);

同時這個對象還可以響應一系列事件,可能會用到的:

  • start
  • end
  • boundary
  • pause
  • resume

借助這些事件我們可以完成一些簡單的功能,比如英文句子的單詞數量統計:

let count = 0; // 詞語數量let msg = new SpeechSynthesisUtterance();let synth = window.speechSynthesis;msg.addEventListener('start',()=>{    // 開始閱讀    console.log(`文本內容: ${msg.text}`);    console.log("start");});msg.addEventListener('end',()=>{    // 閱讀結束    console.log("end");    console.log(`文本單詞(詞語)數量:${count}`);    count = 0;});msg.addEventListener('boundary',()=>{    // 統計單詞    count++;});

經過嘗試,由于中文沒有用空格將每個詞語分開,所以會進行自動的識別,比如 歡迎讀者 會被識別為 歡迎 和 讀者 兩個詞語

SpeechSynthesis

參考: developer.mozilla.org/en-US/docs/…

說完了 SpeechSyntehesisUtteranc 我們再來看看 SpeechSynthesis

SpeechSynthesis 的主要作用是對語音進行一系列的控制,比如開始或者暫停

它有三個只讀屬性,表明了語音的狀態:

SpeechSynthesis.pausedSpeechSynthesis.pending

同時還有一系列方法用來操作語音:

•SpeechSynthesis.speak() 開始讀語音,同時觸發 start 事件
•SpeechSynthesis.pause() 暫停,同時觸發 pause 事件
•SpeechSynthesis.resume() 繼續,同時觸發 resume 事件
•SpeechSynthesis.cancel() 取消閱讀,同時觸發 end 事件

基于這些操作方法,我們可以進一步增強我們的文字閱讀器:

回到最初的起點

讓我們回到最初的起點,我們可以基于上面的內容猜測一下有些網站中,文章的自動閱讀是怎么實現的

如果這個網站前端采用了 MVVM 框架(以 Vue 為例),那么文章內容是也許存儲在 data 中,可以用來構造我們需要的語音合成

當然,也有可能文章是通過 ajax 請求得到的,解析請求的數據,構造語音合成對象

如果文章是直接在 html 中寫死的,這個時候就需要對 DOM 進行解析,經過測試,即便是下面這樣的混亂的結構

<div id="test">    <p>1</p>    <p>2</p>    <ul>        <li>3</li>        <li>4</li>    </ul>    <table>        <tr>            <td>5</td>            <td>6</td>        </tr>        <tr>            <td>7</td>            <td>8</td>        </tr>    </table>    <img src="https://www.baidu.com/img/bd_logo1.png" alt="">    9</div>

直接通過 innerText 讀取其中的文本,然后構造語音合成對象,也能按照期望順序閱讀(圖片會被忽略)

當然如果我們想要忽略一些特殊的結構,比如表格,我們可以花一些精力在解析上,把我們不想要的數據或者 DOM 元素篩掉

不管怎樣,我們都能找到合適的解決方案~

閑話

這個特性,是一個還在草案中的特性,沒有被廣泛支持

再次強調,這個 API 暫時還不能應用到生產環境中

目前比較通用的做法是在后端構造將文本合成成語音文件的 API(也許是第三方 API),然后在前端作為媒體播放

曾經在我迷茫的時候,我去閱讀一些大牛的文章,讀到一些前輩對前端開發的思考。其中有一點令我印象深刻:

前端是最貼近用戶的,一切要從用戶的的角度考慮,無障礙使用也是一個很重要的課題。雖然做這樣的功能帶來的收益遠遠小于其他業務,但是為了讓產品更好的服務用戶,多付出一些勞動也是值得的,這也是前端開發的一種精神
 

總結

以上所述是小編給大家介紹的鮮為人知的HTML5語音合成功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久综合伊人77777尤物| 色午夜这里只有精品| 黄色成人av网| 51精品在线观看| 久久久精品2019中文字幕神马| 欧美性猛交xxxx久久久| 国产精品老女人视频| 色妞一区二区三区| 色av中文字幕一区| 欧美精品中文字幕一区| 国产精品久久不能| 激情久久av一区av二区av三区| 久精品免费视频| 精品国产一区二区三区久久狼黑人| 尤物yw午夜国产精品视频明星| 最近2019年手机中文字幕| 2020国产精品视频| 91精品久久久久久久久中文字幕| 91精品国产电影| 亚洲欧美激情四射在线日| 在线日韩欧美视频| 日韩亚洲欧美中文高清在线| 丝袜亚洲另类欧美重口| 自拍亚洲一区欧美另类| 欧美午夜片在线免费观看| 97成人精品视频在线观看| 国产一区二区香蕉| 国产成人一区二区在线| 国产精品黄视频| 一本大道香蕉久在线播放29| 色综合亚洲精品激情狠狠| 日韩成人av网址| 久久精品99无色码中文字幕| 亚洲精品国产综合区久久久久久久| 精品国产乱码久久久久久虫虫漫画| 久久久免费在线观看| 亚洲精品国产拍免费91在线| 亚洲精品综合久久中文字幕| 日韩国产一区三区| 久久夜色精品亚洲噜噜国产mv| 久久理论片午夜琪琪电影网| 亚洲精品中文字幕女同| 久久久亚洲国产天美传媒修理工| 亚洲美女在线看| 国产欧美日韩免费| 欧美野外猛男的大粗鳮| 欧洲亚洲在线视频| 中文字幕亚洲无线码在线一区| 91免费综合在线| 日韩一中文字幕| 动漫精品一区二区| 永久免费毛片在线播放不卡| 国产主播在线一区| 福利视频第一区| 精品久久久久久久久国产字幕| 97精品一区二区视频在线观看| 热久久99这里有精品| 欧美成人精品一区二区三区| 国产精品羞羞答答| 国产欧美日韩精品在线观看| 欧美精品九九久久| 国内精品久久久| 国产日产欧美精品| 国产一区二区色| 国产精品吊钟奶在线| 成人网在线观看| xvideos成人免费中文版| 91成品人片a无限观看| 欧美日韩亚洲91| 精品久久久国产精品999| 久久91亚洲人成电影网站| 97精品国产97久久久久久| 欧美午夜激情小视频| 国产精品永久在线| 亚洲欧美中文日韩v在线观看| 欧美综合国产精品久久丁香| 欧美高清激情视频| 久久久久免费视频| 日韩网站免费观看高清| 欧美激情性做爰免费视频| 欧美极品少妇xxxxⅹ喷水| 国产精品久久久久久久久久久新郎| 欧美高清videos高潮hd| 亚洲国产欧美一区二区丝袜黑人| 俺也去精品视频在线观看| 欧美性少妇18aaaa视频| 精品性高朝久久久久久久| 国产精品久久国产精品99gif| 91国产精品视频在线| 欧美另类老肥妇| 91中文字幕一区| 欧美综合一区第一页| 午夜精品www| 日韩电影第一页| 亚洲片国产一区一级在线观看| 欧美超级免费视 在线| 精品中文字幕在线观看| 亚洲精品免费一区二区三区| 久久久国产精品免费| 久久韩剧网电视剧| 国产精品爱久久久久久久| 亚洲欧洲自拍偷拍| 欧美国产精品人人做人人爱| 欧美日韩第一页| 亚洲国产毛片完整版| 欧美日韩中文字幕综合视频| 欧美极品少妇与黑人| 国产精品99导航| 亚洲精品久久久久久久久久久久| 国产精品免费一区豆花| 久久五月天色综合| 日韩激情av在线免费观看| 国产欧美日韩精品专区| 亚洲欧美国产精品va在线观看| 一本色道久久88亚洲综合88| 国产精品私拍pans大尺度在线| 精品国产乱码久久久久久婷婷| 国产精品永久免费观看| 在线精品高清中文字幕| 久久久精品网站| 伊人久久免费视频| 亚洲精品中文字幕女同| 红桃视频成人在线观看| 欧美午夜久久久| 日韩精品视频免费在线观看| 欧美激情精品久久久久久黑人| 久久久亚洲天堂| 久久深夜福利免费观看| 成人情趣片在线观看免费| 色爱av美腿丝袜综合粉嫩av| 一区二区三区亚洲| 亚洲第一精品久久忘忧草社区| 国产免费一区二区三区在线观看| 日韩在线观看视频免费| 国产久一一精品| 成人黄色av网| 欧美成aaa人片免费看| 裸体女人亚洲精品一区| 欧美夫妻性生活xx| 亚洲精品国产精品乱码不99按摩| 亚洲二区在线播放视频| 国产91精品黑色丝袜高跟鞋| 日韩精品免费在线视频观看| 久久免费高清视频| 国产999在线观看| 亚洲国产91色在线| 精品日韩视频在线观看| 欧美日韩国产中字| 亚洲aaa激情| 亚洲精品国产拍免费91在线| 国产一级揄自揄精品视频| 国产精品都在这里| 欧美激情国产高清| 久久久久久久久亚洲| 亚洲福利视频久久| 精品无码久久久久久国产| 国产精品无av码在线观看| www.亚洲一区| 欧美在线免费视频| 欧美洲成人男女午夜视频| 成人在线播放av| 国产成人啪精品视频免费网| 中文字幕亚洲一区| 成人日韩在线电影|