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

首頁 > 編程 > HTML > 正文

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

2024-08-26 00:21:28
字體:
來源:轉載
供稿:網友

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

請先戴上耳機,然后將下面的代碼復制到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

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

HTML5,語音合成

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 事件

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

HTML5,語音合成

回到最初的起點

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

如果這個網站前端采用了 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"    9</div>

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

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

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

閑話

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

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

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

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

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

總結

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


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www日韩中文字幕在线看| 亚洲成人在线视频播放| 欧美成人三级视频网站| 久久这里只有精品视频首页| 久久99热精品| 亚洲电影免费观看高清| 日韩电影免费在线观看| 日韩中文字幕在线精品| 亚洲在线观看视频| 久久精品99国产精品酒店日本| 国产成人av在线| 少妇av一区二区三区| 色av吧综合网| 精品无码久久久久久国产| 91国偷自产一区二区三区的观看方式| 欧美成人免费小视频| 国产精品日日做人人爱| 日韩在线精品一区| 国产精品激情av电影在线观看| 亚洲www永久成人夜色| 7m精品福利视频导航| 欧美国产第一页| 亚洲欧洲激情在线| 92国产精品久久久久首页| 国产精品女人网站| 国产精品一区二区av影院萌芽| 欧美区二区三区| 欧美日韩国产中文精品字幕自在自线| 久久久中精品2020中文| 欧美一区二区三区精品电影| 国产精品视频99| 欧美视频专区一二在线观看| 最新亚洲国产精品| 91成人国产在线观看| 日韩欧美国产视频| 精品无人区乱码1区2区3区在线| 亚洲福利视频免费观看| 国产精品视频免费在线| 一区二区三区亚洲| 欧美在线免费视频| 欧美精品一区在线播放| 高潮白浆女日韩av免费看| 午夜精品久久久久久久白皮肤| 久久成年人免费电影| 欧美国产日韩视频| 尤物九九久久国产精品的分类| 日本乱人伦a精品| 九九热99久久久国产盗摄| 欧美日韩在线视频首页| 亚洲视频电影图片偷拍一区| 成人免费黄色网| 国产一区二区三区在线视频| 国产91热爆ts人妖在线| 欧美成人精品一区| 久久成人综合视频| 成人精品福利视频| www国产精品com| 亚洲高清久久网| 日韩av在线看| 欧美区二区三区| 久久精品在线播放| 亚洲美女又黄又爽在线观看| 久久久久久久91| 亚洲黄页视频免费观看| 国产小视频国产精品| 亚洲国产精品久久精品怡红院| 最近2019免费中文字幕视频三| 国自在线精品视频| 精品中文视频在线| 亚洲日本中文字幕| 久热精品视频在线观看一区| 国产偷国产偷亚洲清高网站| 国外成人在线直播| 欧美大片大片在线播放| 久久男人的天堂| 成人国产精品日本在线| 欧美日韩xxx| 尤物九九久久国产精品的分类| 欧美激情一二三| 国产精品久久久久久久av电影| 亚洲丁香久久久| 国内久久久精品| 欧美另类69精品久久久久9999| 久久伊人免费视频| 91亚洲精品一区二区| 久久久久久亚洲精品中文字幕| 久久久久久久久久婷婷| 亚洲精品av在线| 在线观看精品国产视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲第一区在线观看| 亚洲欧洲偷拍精品| 性欧美长视频免费观看不卡| 久久全国免费视频| 欧美理论在线观看| 国产视频久久久| 热草久综合在线| 国产一区二区在线免费| 日韩欧美综合在线视频| 国产精品视频中文字幕91| 欧美大尺度激情区在线播放| 国产成人av网| 日韩美女视频在线观看| 亚洲激情视频在线| 国产丝袜一区二区三区免费视频| 日韩av三级在线观看| 久久九九全国免费精品观看| 亚洲欧美日本伦理| 日韩视频―中文字幕| 国产精品视频最多的网站| 国产精品久久久久久一区二区| 亚洲精品久久久久久久久久久久| 国产在线98福利播放视频| 久久精品亚洲94久久精品| 亚洲精品国产拍免费91在线| 8050国产精品久久久久久| 久久久久久噜噜噜久久久精品| 日本19禁啪啪免费观看www| 国产精品观看在线亚洲人成网| 欧美一区二区三区免费观看| 久久资源免费视频| 国产精品嫩草影院久久久| 久久综合色影院| 国产精品免费观看在线| 久久99国产综合精品女同| 一区二区三区天堂av| 亚洲在线免费观看| 亚洲欧美国产精品va在线观看| 国产精品久久久久久av下载红粉| 国产精品三级在线| 日韩精品在线第一页| 中文字幕免费精品一区高清| 高清欧美性猛交xxxx黑人猛交| 97人洗澡人人免费公开视频碰碰碰| 欧美日韩免费在线| 亚洲激情在线观看视频免费| 欧美成人激情视频免费观看| 亚洲天堂av在线免费| 日韩av免费在线| 国产精品视频网址| 日本久久久久久久久| 欧洲午夜精品久久久| 91久久久久久久| 国产成人小视频在线观看| 琪琪第一精品导航| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美一区二三区| 欧美日韩第一页| 成人午夜一级二级三级| 国产成人综合久久| 久久久亚洲福利精品午夜| 亚洲国产精品久久久久秋霞不卡| x99av成人免费| 久久免费国产视频| 国产日韩专区在线| 国产一区二区日韩精品欧美精品| 91久久在线观看| 热re91久久精品国99热蜜臀| www国产亚洲精品久久网站| 国产精品视频播放| 亚洲第一精品夜夜躁人人躁| 亚洲成人a级网| 欧美精品中文字幕一区| 亚洲精品视频二区|