將文字轉語音(可變更速率及音調)
目標
- 將文字轉語音(可變更速率及音調)。
實踐步驟
- 取得 相關DOM元素 並設定 SpeechSynthesisUtterance(語音設定)
- 監聽 SpeechSynthesis(語音播放) 的 voiceschanged 事件,取得 語系 相關資料
- 設定 發音語系
- 監聽 語系是否變更,更新語音設定,並播放語音
- 監聽 速率、音調、文字區塊 是否變更,更新語音設定,並播放語音
- 監聽 buttom 的 click事件,播放或取消語音
成品
JS學習紀錄
一、取得 相關DOM元素 並設定 SpeechSynthesisUtterance(語音設定)
1 | // 設定語音服務應讀取的文字內容及播放的細節(語言、音調、聲音、速率...等屬性) |
二、監聽 SpeechSynthesis(語音播放) 的 voiceschanged 事件,取得 語系 相關資料
1 | // 取得 語系 相關資料 |
三、設定 發音語系
1 | // 設定 發音語系 |
四、監聽 語系是否變更,更新語音設定,並播放語音
1 | // 設定 發音語系 |
五、監聽 速率、音調、文字區塊 是否變更,更新語音設定,並播放語音
透過 DOM元素的命名方式,將 name命名 與 SpeechSynthesisUtterance物件屬性 取一樣名稱,
在二邊的配合下,這樣就可以更精簡程式碼。
1 | // 設定速率跟音準 |
六、監聽 buttom 的 click事件,播放或取消語音
1 | // 觸發 播放語音 |
觀念補充
在使用 addEventListener
時,若遇到需傳入參數的話,不可直接用下列此方式,會導致功能不正常。
1 | // 不能直接寫 function並加上參數 |
可透過下列二種方式,傳入參數值。
1 | // 寫法1 |