SpeechSynthesis: voiceschanged event

Experimental

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

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

Bubbles No
Cancelable No
Interface Event
Event handler property onvoiceschanged

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:

var synth = window.speechSynthesis;

synth.addEventListener('voiceschanged', function() {
  var voices = synth.getVoices();
  for(i = 0; i < voices.length ; i++) {
    var 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);
  }
});

Or use the onvoiceschanged event handler property:

var synth = window.speechSynthesis;
synth.onvoiceschanged = function() {
  var voices = synth.getVoices();
  for(i = 0; i < voices.length ; i++) {
    var 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);
  }
}

Specifications

Specification Status Comment
Web Speech API
The definition of 'speech synthesis events' in that specification.
Draft

Browser compatibility

BCD tables only load in the browser

See also