SpeechSynthesisVoice

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2018.

Das SpeechSynthesisVoice-Interface der Web Speech API repräsentiert eine Stimme, die das System unterstützt. Jede SpeechSynthesisVoice verfügt über ihren eigenen Sprachdienst, der Informationen über Sprache, Name und URI enthält.

Instanz-Eigenschaften

SpeechSynthesisVoice.default Schreibgeschützt

Ein boolescher Wert, der angibt, ob die Stimme die Standardstimme für die aktuelle App-Sprache ist (true), oder nicht (false).

SpeechSynthesisVoice.lang Schreibgeschützt

Gibt ein BCP 47-Sprachtag zurück, das die Sprache der Stimme angibt.

SpeechSynthesisVoice.localService Schreibgeschützt

Ein boolescher Wert, der angibt, ob die Stimme von einem lokalen Sprachsynthesizer-Dienst bereitgestellt wird (true) oder von einem entfernten Sprachsynthesizer-Dienst (false).

SpeechSynthesisVoice.name Schreibgeschützt

Gibt einen menschenlesbaren Namen zurück, der die Stimme repräsentiert.

SpeechSynthesisVoice.voiceURI Schreibgeschützt

Gibt den URI-Typ und den Ort des Sprachsynthesedienstes für diese Stimme zurück.

Beispiele

Der folgende Ausschnitt ist aus unserem Sprachsynthesizer-Demo entnommen.

js
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();
};

Spezifikationen

Specification
Web Speech API
# speechsynthesisvoice

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch