📜  HTML DOM 窗口语音合成属性(1)

📅  最后修改于: 2023-12-03 15:15:33.888000             🧑  作者: Mango

HTML DOM 窗口语音合成属性

HTML DOM(文档对象模型)提供了一组窗口语音合成属性,使您可以通过 JavaScript 与浏览器语音合成引擎进行交互。

window.speechSynthesis

window.speechSynthesis 属性返回一个 SpeechSynthesis 对象,该对象表示浏览器的语音合成引擎。

语音合成对象的属性

SpeechSynthesis 对象有许多属性,可以帮助您控制和设置语音合成的属性。下面是其中一些属性:

  • onvoiceschanged: 访问 Web Speech API 时,当发现语音合成引擎的可用声音列表发生更改时,调用此事件处理程序。
  • paused:读取或设置语音合成是否已暂停。
  • pending:读取或设置是否正在等待语音合成。如果正在等待合成,则 pendingtrue;否则为 false
  • speaking:读取或设置语音合成是否正在进行中。如果正在合成中,则值为 true;否则为 false
SpeechSynthesisUtterance

SpeechSynthesisUtterance 是一个全局构造函数,创建包含有关语音合成播放的信息的对象。

例如,以下代码创建一个包含要播放的字符串内容的 SpeechSynthesisUtterance 对象:

var msg = new SpeechSynthesisUtterance("Hello everyone!");
SpeechSynthesisUtterance 属性

SpeechSynthesisUtterance 对象有许多属性,可以帮助您控制和设置语音合成的属性。下面是其中一些属性:

  • text:要合成的文本内容。
  • lang:语音合成使用的语言。如果未指定,则使用默认设备语言。
  • pitch:用于语音合成的default语调。
  • rate:表示语音音调的默认语速。
  • volume:表示语音合成的音量大小。
播放合成语音

有两种方法可以通过 JavaScript 播放合成语音。

1. window.speechSynthesis.speak()

您可以通过识别要播放的 SpeechSynthesisUtterance 对象并将其作为参数传递给 window.speechSynthesis.speak() 方法,使语音合成引擎在运行时播放语音。

例如,以下代码段将会播放字符串 "Hello everyone!":

var msg = new SpeechSynthesisUtterance("Hello everyone!");
window.speechSynthesis.speak(msg);

2. SpeechSynthesisUtterance的事件

SpeechSynthesisUtterance对象还有多个事件可以让您控制语音合成的播放。以下是其中一些事件:

  • onstart:在语音合成开始播放之前触发。
  • onend:语音合成播放完成后触发。
  • onpause:在语音合成暂停时触发。
  • onresume:在语音合成恢复时触发。
  • onerror:在语音合成遇到错误时触发。

例如,以下代码段将音量设置为 0.5,然后在语音合成结束时,输出 "Speech complete!":

var msg = new SpeechSynthesisUtterance("Hello everyone!");
msg.volume = 0.5;
msg.onend = function(e) {
  console.log('Speech complete!');
};

window.speechSynthesis.speak(msg);
结论

HTML DOM 提供了与浏览器的语音合成引擎进行交互的接口。通过使用 SpeechSynthesisSpeechSynthesisUtterance 对象,您可以控制和设置语音合成的属性,包括语言,音调,音量和播放等。