Spec-Zone.ru › Web APIs

SpeechSynthesisVoice

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна во всех браузерах с сентября 2018 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Интерфейс SpeechSynthesisVoice API речи веб-приложения представляет собой голос, поддерживаемый системой. Каждый SpeechSynthesisVoice имеет свою собственную относительную службу речи, включая информацию о языке, имени и URI.

Свойства экземпляра

SpeechSynthesisVoice.default Только чтение

Булево значение, указывающее, является ли голос стандартным голосом для текущего языка приложения (true), или нет (false).

SpeechSynthesisVoice.lang Только чтение

Возвращает тег языка BCP 47, указывающий язык голоса.

SpeechSynthesisVoice.localService Только чтение

Булево значение, указывающее, предоставляется ли голос локальной службой синтеза речи (true) или удаленной службой синтеза речи (false).

SpeechSynthesisVoice.name Только чтение

Возвращает удобочитаемое имя, представляющее голос.

SpeechSynthesisVoice.voiceURI Только чтение

Возвращает тип URI и расположение службы синтеза речи для этого голоса.

Примеры

Следующий фрагмент взят из нашего Демонстрационного приложения синтеза речи.

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

Спецификации

Спецификация
API речи веб-приложения
# speechsynthesisvoice

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
SpeechSynthesisVoice 33 14
49В Firefox голоса синтеза речи не начинают загружаться до первого вызова window.speechSynthesis.getVoices(). Способ смягчить эту проблему — вызвать этот метод в начале загрузки страницы, а затем подождать несколько секунд, прежде чем снова вызвать этот метод. Голоса останутся загруженными до тех пор, пока все вкладки, которые вызвали этот метод, не будут закрыты.
21 7 33 62 Нет 7 3.0 Нет
default 33 14 49 21 7 33 62 Нет 7 3.0 Нет
lang 33 14 49 21 7 33 62 Нет 7 3.0 Нет
localService 33 14 49 21 7 33 62 Нет 7 3.0 Нет
name 33 14 49 21 7 33 62 Нет 7 3.0 Нет
voiceURI 33 14 49 21 7 33 62 Нет 7 3.0 Нет

См. также

  • API речи веб-приложения

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API