语音合成:voiceschanged 事件

voiceschanged 事件是 Web 语音 API 的一个事件,当 SpeechSynthesisVoice 对象列表(由 SpeechSynthesis.getVoices() 方法返回)发生变化时触发(当 voiceschanged 事件触发时)。

语法

在像 addEventListener() 这样的方法中使用事件名称,或者设置一个事件处理程序属性。

js
addEventListener("voiceschanged", (event) => {});

onvoiceschanged = (event) => {};

事件类型

一个没有添加属性的通用 Event

示例

这可以用于在事件触发时重新填充用户可以选择的声音列表。您可以使用 addEventListener 方法使用 voiceschanged 事件

js
const synth = window.speechSynthesis;

synth.addEventListener("voiceschanged", () => {
  const voices = synth.getVoices();
  for (let i = 0; i < voices.length; i++) {
    const option = document.createElement("option");
    option.textContent = `${voices[i].name} (${voices[i].lang})`;
    option.setAttribute("data-lang", voices[i].lang);
    option.setAttribute("data-name", voices[i].name);
    voiceSelect.appendChild(option);
  }
});

或者使用 onvoiceschanged 事件处理程序属性

js
const synth = window.speechSynthesis;
synth.onvoiceschanged = () => {
  const voices = synth.getVoices();
  for (let i = 0; i < voices.length; i++) {
    const option = document.createElement("option");
    option.textContent = `${voices[i].name} (${voices[i].lang})`;
    option.setAttribute("data-lang", voices[i].lang);
    option.setAttribute("data-name", voices[i].name);
    voiceSelect.appendChild(option);
  }
};

规范

规范
Web 语音 API
# eventdef-speechsynthesis-voiceschanged
Web 语音 API
# dom-speechsynthesis-onvoiceschanged

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参见