SpeechSynthesisUtterance

Baseline 广泛可用 *

此功能已成熟,并可在多种设备和浏览器版本上使用。自 2018 年 9 月以来,它已在各种浏览器中推出。

* 此特性的某些部分可能存在不同级别的支持。

SpeechSynthesisUtterance 接口是 Web Speech API 的一部分,用于表示一个语音请求。它包含了语音服务应读取的内容以及如何读取的信息(例如,语言、音高和音量)。

EventTarget SpeechSynthesisUtterance

构造函数

SpeechSynthesisUtterance()

返回一个新的 SpeechSynthesisUtterance 对象实例。

实例属性

SpeechSynthesisUtterance 还继承了其父接口 EventTarget 的属性。

SpeechSynthesisUtterance.lang

获取和设置语音的语言。

SpeechSynthesisUtterance.pitch

获取和设置语音的音高。

SpeechSynthesisUtterance.rate

获取和设置语音的语速。

SpeechSynthesisUtterance.text

获取和设置语音合成时将要朗读的文本。

SpeechSynthesisUtterance.voice

获取和设置用于朗读语音的语音。

SpeechSynthesisUtterance.volume

获取和设置语音的音量。

事件

使用 addEventListener() 或将事件监听器分配给此接口的 oneventname 属性来监听这些事件。

boundary

当朗读的语音到达单词或句子边界时触发。也可通过 onboundary 属性访问。

end

当语音朗读完毕时触发。也可通过 onend 属性访问。

error

当发生错误导致语音无法成功朗读时触发。也可通过 onerror 属性访问。

mark

当朗读的语音到达 SSML 的命名 "mark" 标签时触发。也可通过 onmark 属性访问。

pause

当语音朗读到一半时暂停时触发。也可通过 onpause 属性访问。

resume

当暂停的语音恢复时触发。也可通过 onresume 属性访问。

start

当语音开始朗读时触发。也可通过 onstart 属性访问。

示例

在我们提供的基本 语音合成器演示中,我们首先使用 window.speechSynthesis 获取 SpeechSynthesis 控制器的引用。在定义了一些必要的变量后,我们使用 SpeechSynthesis.getVoices() 获取可用语音列表,并用它们填充一个 select 菜单,以便用户可以选择他们想要的语音。

inputForm.onsubmit 处理程序中,我们使用 preventDefault() 阻止表单提交,使用 constructor 创建一个新的语音实例,其中包含来自文本 <input> 的文本,将语音的 voice 设置为 <select> 元素中选择的语音,并通过 SpeechSynthesis.speak() 方法开始朗读语音。

js
const synth = window.speechSynthesis;

const inputForm = document.querySelector("form");
const inputTxt = document.querySelector("input");
const voiceSelect = document.querySelector("select");

let voices;

function loadVoices() {
  voices = synth.getVoices();
  for (const [i, voice] of voices.entries()) {
    const option = document.createElement("option");
    option.textContent = `${voice.name} (${voice.lang})`;
    option.value = i;
    voiceSelect.appendChild(option);
  }
}

// in Google Chrome the voices are not ready on page load
if ("onvoiceschanged" in synth) {
  synth.onvoiceschanged = loadVoices;
} else {
  loadVoices();
}

inputForm.onsubmit = (event) => {
  event.preventDefault();

  const utterThis = new SpeechSynthesisUtterance(inputTxt.value);
  utterThis.voice = voices[voiceSelect.value];
  synth.speak(utterThis);
  inputTxt.blur();
};

规范

规范
Web Speech API
# speechsynthesisutterance

浏览器兼容性

另见