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ì)列中有尚未開(kāi)始說(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)聽(tīng)SpeechSynthesisUtterance事件
-
onstart
- start
當(dāng)話語(yǔ)開(kāi)始被說(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è)谶@篇文章中沒(méi)有涉及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.
}