
主題目標
初始文檔index-start.html提供了一個閱讀器,您需要完成如下編程任務:
1.使用相應的WebAPI接口獲取瀏覽器支持的語言種類列表,並填充到頁面的拖放菜單中,選擇中文;
2.在文本域中輸入對應語言的文字,點擊speak按鈕後瀏覽器會閱讀輸入的文字;
3.在瀏覽器閱讀時,點擊stop按鈕,瀏覽器會停止閱讀;
4.可以rate和pitch滑塊可改變閱讀速度和音高。
本次編程任務使用相應接口的最基本功能即可實現,編程中根據挑戰任務中的說明逐步實現即可
作品網址:
處理步驟
步驟 1.
設定合成語音 API 物件,並取得畫面文字為語音內容
msg.text = document.querySelector('[name="text"]').value;步驟 2.
合成語音的下拉選單填充,並設定選單變更事
- 先填充選單內容
//填充選單內容
function populateVoices(){
voices = this.getVoices();
voicesDropdown.innerHTML = voices
.filter(voice=>voice.lang.includes('')).map(voice =>`<option value="${voice.name}">${voice.name} (${voice.lang}) </option>`).join('');
};- 選單變更事件
// 設定語音
function setVoice() {
msg.voice = voices.find(voice => voice.name === this.value);
};
//當語音進行 填充選單內容
speechSynthesis.addEventListener('voiceschanged', populateVoices);
// 語音下拉選單變更
voicesDropdown.addEventListener('change', setVoice);步驟 3.
設定播放速度、文字與聲道
// 設定播放速度、文字、聲道
function setOption(){
console.log(this.name,this.value);
msg[this.name] =this.value;
}步驟4.
設定播放與停止按鍵功能
// 播放與停止
function toggle(startOver = true){
speechSynthesis.cancel();
if(startOver){
speechSynthesis.speak(msg);
}
}
// 播放
speakButton.addEventListener('click',toggle);
// 停止播放
stopButton.addEventListener('click',() => toggle(startOver=false));
//每個選項只要被選擇後就進行設定撥放速度文字
options.forEach(option => option.addEventListener('change', setOption));特別技術、函式
<HTML>
<CSS>
<JavaScript>
SpeechSynthesisUtterance
在SpeechSynthesisUtterance該界面的Web Speech API的代表發言請求。它包含語音服務應閱讀的內容以及有關如何閱讀的信息(例如語言,音調和音量)。
SpeechSynthesis
在SpeechSynthesis該界面的Web語音API是語音業務的控制器接口; 它可用於檢索有關設備上可用的合成語音,開始和暫停語音以及其他命令的信息。
語音 API 的服務介面;此次範例使用的屬性說明
- pitch 獲取並設置說話時的音調。
- text 獲取並設置在說出語音時將要合成的文本。
- rate 獲取並設置發聲的速度。
參考資料:
JS30紀錄 23-Speech Synthesis:https://shunnien.github.io/2018/01/17/Javascript30days-23/
Js 30 day 中文指南:https://github.com/soyaine/JavaScript30
