Speech Synthesis API非常容易實(shí)現(xiàn)。事實(shí)上,只需兩行代碼即可讓您的網(wǎng)絡(luò)應(yīng)用與用戶交流。
var utterance = new SpeechSynthesisUtterance('Hello Treehouse');
window.speechSynthesis.speak(utterance);
speechSynthesis 接口
-
speak(SpeechSynthesisUtterance)- 這個(gè)方法應(yīng)該傳遞一個(gè)實(shí)例SpeechSynthesisUtterance。然后它會(huì)將此添加到需要說(shuō)出的話語(yǔ)隊(duì)列中。
-
cancel() - 此方法將從隊(duì)列中刪除所有話語(yǔ)。如果當(dāng)前正在說(shuō)話,那么它將被停止。
-
pause() - 此方法將立即暫停正在講話的任何話語(yǔ)。
-
resume() - 此方法將使瀏覽器恢復(fù)說(shuō)出先前暫停的話語(yǔ)。
-
getVoices() - 此方法返回瀏覽器支持的所有語(yǔ)音的列
speechSynthesis屬性 默認(rèn)是false
-
pending-true 如果隊(duì)列中有尚未開始說(shuō)話的話語(yǔ)。
-
speaking- true 如果當(dāng)前正在說(shuō)話。
-
paused- true 如果當(dāng)前暫停了話語(yǔ)。
SpeechSynthesisVoice 屬性
-
name - 描述語(yǔ)音的人類可讀名稱。
-
voiceURI - 指定該語(yǔ)音的語(yǔ)音合成服務(wù)的位置的URI。
-
lang - 此語(yǔ)音的語(yǔ)言代碼。
-
default- true如果這是瀏覽器使用的默認(rèn)語(yǔ)音,則設(shè)置為。
-
localService - API可以使用本地和遠(yuǎn)程服務(wù)來(lái)處理語(yǔ)音合成。如果此屬性設(shè)置為true語(yǔ)音合成,則此語(yǔ)音由本地服務(wù)處理。如果false是正在使用的遠(yuǎn)程服務(wù)。
該text屬性允許您設(shè)置您希望說(shuō)出的文本。這將覆蓋先前傳遞給SpeechSynthesisUtterance構(gòu)造函數(shù)的任何文本。
utterance.text = 'Hello Treehouse';
該lang屬性使您能夠指定文本的語(yǔ)言。這將默認(rèn)為HTML文檔的語(yǔ)言。
utterance.lang = 'en-US';
該volume屬性允許您調(diào)整語(yǔ)音的音量。應(yīng)在此處指定介于0和1之間的浮點(diǎn)值。默認(rèn)值為1。
utterance.volume = 1;
該rate屬性定義了應(yīng)該說(shuō)出文本的速度。這應(yīng)該是介于0和10之間的浮點(diǎn)值,默認(rèn)值為1。
`utterance.rate` = 1;
該pitch屬性控制文本的高低。這應(yīng)該是介于0和2之間的浮點(diǎn)值,值為1是默認(rèn)值。
utterance.pitch = 1;
注:本volume,rate和pitch屬性不被所有的聲音支持
監(jiān)聽SpeechSynthesisUtterance事件
-
onstart- start當(dāng)話語(yǔ)開始被說(shuō)出時(shí),事件被觸發(fā)。
-
onend- end一旦說(shuō)出話語(yǔ),就會(huì)觸發(fā)事件。
-
onerror- error如果發(fā)生阻止說(shuō)出話語(yǔ)的錯(cuò)誤,則觸發(fā)該事件。
-
onpause- pause如果話語(yǔ)在說(shuō)話時(shí)暫停,則會(huì)觸發(fā)事件。
-
onresume- resume如果暫停說(shuō)話暫停,則會(huì)觸發(fā)該事件。
-
onboundary- boundary只要在說(shuō)出話語(yǔ)時(shí)達(dá)到單詞或句子邊界,就會(huì)觸發(fā)事件。
-
onmark- mark在語(yǔ)音合成標(biāo)記語(yǔ)言(SSML)文件中到達(dá)“標(biāo)記”標(biāo)記時(shí)觸發(fā)事件。我們?cè)谶@篇文章中沒有涉及SSML。只要知道可以使用基于XML的SSML文檔將語(yǔ)音數(shù)據(jù)傳遞給話語(yǔ)。這樣做的主要優(yōu)點(diǎn)是,在構(gòu)建具有大量需要合成的文本的應(yīng)用程序時(shí),可以更輕松地管理語(yǔ)音內(nèi)容。
var utterance = new SpeechSynthesisUtterance('Hello Treehouse');
utterance.onstart = function(event) {
console.log('The utterance started to be spoken.')
};
window.speechSynthesis(utterance);
#檢查瀏覽器支持
if ('speechSynthesis' in window) {
// You're good to go!
} else {
// Ah man, speech synthesis isn't supported.
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。