docs.rodeo

MDN Web Docs mirror

SpeechSynthesis: voiceschanged event

{{APIRef("Web Speech API")}} 

The voiceschanged event of the Web Speech API is fired when the list of {{domxref("SpeechSynthesisVoice")}}  objects that would be returned by the {{domxref("SpeechSynthesis.getVoices()")}}  method has changed (when the voiceschanged event fires.)

Syntax

Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}} , or set an event handler property.

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

onvoiceschanged = (event) => { }

Event type

A generic {{DOMxRef("Event")}}  with no added properties.

Examples

This could be used to repopulate a list of voices that the user can choose between when the event fires. You can use the voiceschanged event in an addEventListener method:

const synth = window.speechSynthesis;

synth.addEventListener("voiceschanged", () => {
  const voices = synth.getVoices();
  for (const voice of voices) {
    const option = document.createElement("option");
    option.textContent = `${voice.name} (${voice.lang})`;
    option.setAttribute("data-lang", voice.lang);
    option.setAttribute("data-name", voice.name);
    voiceSelect.appendChild(option);
  }
});

Or use the onvoiceschanged event handler property:

const synth = window.speechSynthesis;
synth.onvoiceschanged = () => {
  const voices = synth.getVoices();
  for (const voice of voices) {
    const option = document.createElement("option");
    option.textContent = `${voice.name} (${voice.lang})`;
    option.setAttribute("data-lang", voice.lang);
    option.setAttribute("data-name", voice.name);
    voiceSelect.appendChild(option);
  }
};

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN