SpeechSynthesisVoice

基线 广泛可用

此功能已很成熟,可以在许多设备和浏览器版本上使用。它自 2018 年 9 月.

报告反馈

实例属性

SpeechSynthesisVoiceWeb 语音 API 的一个接口,表示系统支持的语音。每个 SpeechSynthesisVoice 都有自己的相对语音服务,包括有关语言、名称和 URI 的信息。

SpeechSynthesisVoice.default 只读

一个布尔值,表示该语音是否为当前应用程序语言的默认语音 (true),或不是 (false)。

SpeechSynthesisVoice.lang 只读

返回表示语音语言的 BCP 47 语言标签。

SpeechSynthesisVoice.localService 只读

一个布尔值,表示该语音是由本地语音合成服务 (true) 还是远程语音合成服务 (false) 提供的。

SpeechSynthesisVoice.name 只读

返回表示语音的人类可读名称。

SpeechSynthesisVoice.voiceURI 只读

示例

返回此语音的语音合成服务的 URI 类型和位置。

以下代码段摘自我们的 语音合成演示
const synth = window.speechSynthesis;
function populateVoiceList() {
  voices = synth.getVoices();

  for (let i = 0; i < voices.length; i++) {
    const option = document.createElement("option");
    option.textContent = `${voices[i].name} (${voices[i].lang})`;

    if (voices[i].default) {
      option.textContent += " — DEFAULT";
    }

    option.setAttribute("data-lang", voices[i].lang);
    option.setAttribute("data-name", voices[i].name);
    voiceSelect.appendChild(option);
  }
}

populateVoiceList();
if (speechSynthesis.onvoiceschanged !== undefined) {
  speechSynthesis.onvoiceschanged = populateVoiceList;
}

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

  const utterThis = new SpeechSynthesisUtterance(inputTxt.value);
  const selectedOption =
    voiceSelect.selectedOptions[0].getAttribute("data-name");
  for (let i = 0; i < voices.length; i++) {
    if (voices[i].name === selectedOption) {
      utterThis.voice = voices[i];
    }
  }
  utterThis.pitch = pitch.value;
  utterThis.rate = rate.value;
  synth.speak(utterThis);

  utterThis.onpause = (event) => {
    const char = event.utterance.text.charAt(event.charIndex);
    console.log(
      `Speech paused at character ${event.charIndex} of "${event.utterance.text}", which is "${char}".`,
    );
  };

  inputTxt.blur();
};

规范

js
Web 语音 API
# 规范

浏览器兼容性

speechsynthesisvoice

另请参阅