Experimental
This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The onvoiceschanged
property of the
SpeechSynthesis
interface represents an event handler that will run when
the list of SpeechSynthesisVoice
objects that would be returned by the
SpeechSynthesis.getVoices()
method has changed (when the voiceschanged event
fires.)
This may occur when speech synthesis is being done on the server-side and the voices list is being determined asynchronously, or when client-side voices are installed/uninstalled while a speech synthesis application is running.
Syntax
speechSynthesisInstance.onvoiceschanged = function() { ... };
Examples
This could be used to populate a list of voices that the user can choose between when
the event fires (see our Speak
easy synthesis demo.) Note that Firefox doesn't support it at present, and will
just return a list of voices when SpeechSynthesis.getVoices()
is fired.
With Chrome however, you have to wait for the event to fire before populating the list,
hence the bottom if statement seen below.
var voices = [];
function populateVoiceList() {
voices = synth.getVoices();
for(i = 0; i < voices.length ; i++) {
var 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;
}
Specifications
Specification | Status | Comment |
---|---|---|
Web Speech API The definition of 'onvoiceschanged' in that specification. |
Draft |
Browser compatibility
BCD tables only load in the browser