Spec-Zone.ru › Web APIs

SpeechSynthesis

Baseline Широко доступно *

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

* Некоторые части этой функции могут иметь различный уровень поддержки.

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

Интерфейс SpeechSynthesis API речи веб-страниц — это интерфейс-контроллер для службы речи; он может использоваться для получения информации о доступных на устройстве голосах синтеза, запуска и приостановки речи и других команд.

EventTarget SpeechSynthesis

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

SpeechSynthesis также наследует свойства от своего родительского интерфейса, EventTarget.

SpeechSynthesis.paused Только для чтения

Булево значение, которое возвращает true , если объект SpeechSynthesis находится в приостановленном состоянии.

SpeechSynthesis.pending Только для чтения

Булево значение, которое возвращает true , если очередь произнесений содержит ещё не произнесённые произнесения.

SpeechSynthesis.speaking Только для чтения

Булево значение, которое возвращает true , если произнесение в настоящее время находится в процессе произнесения — даже если SpeechSynthesis находится в приостановленном состоянии.

Методы экземпляра

SpeechSynthesis также наследует методы от своего родительского интерфейса, EventTarget.

SpeechSynthesis.cancel()

Удаляет все произнесения из очереди произнесений.

SpeechSynthesis.getVoices()

Возвращает список объектов SpeechSynthesisVoice, представляющих все доступные голоса на текущем устройстве.

SpeechSynthesis.pause()

Переводит объект SpeechSynthesis в состояние паузы.

SpeechSynthesis.resume()

Переводит объект SpeechSynthesis в состояние без паузы: возобновляет его, если он уже был приостановлен.

SpeechSynthesis.speak()

Добавляет utterance в очередь произнесений; он будет произнесён, когда все другие произнесения, стоящие в очереди перед ним, будут произнесены.

События

Прослушивайте это событие, используя addEventListener() или назначив обработчик событий свойству oneventname этого интерфейса.

voiceschanged

Вызывается, когда изменился список объектов SpeechSynthesisVoice, которые будут возвращены методом SpeechSynthesis.getVoices(). Также доступно через свойство onvoiceschanged.

Примеры

Сначала пример:

let utterance = new SpeechSynthesisUtterance("Hello world!");
speechSynthesis.speak(utterance);

Теперь рассмотрим более полный пример. В нашей демо-версии синтезатора речи мы сначала получаем ссылку на контроллер SpeechSynthesis с помощью window.speechSynthesis. После определения необходимых переменных мы получаем список доступных голосов с помощью SpeechSynthesis.getVoices() и заполняем им выпадающий список, чтобы пользователь мог выбрать нужный голос.

Внутри обработчика inputForm.onsubmit мы останавливаем отправку формы с помощью preventDefault(), создаём новый экземпляр SpeechSynthesisUtterance, содержащий текст из текстового <input>, устанавливаем голос произнесения на голос, выбранный в элементе <select>, и запускаем произнесение с помощью метода SpeechSynthesis.speak().

const synth = window.speechSynthesis;

const inputForm = document.querySelector("form");
const inputTxt = document.querySelector(".txt");
const voiceSelect = document.querySelector("select");
const pitch = document.querySelector("#pitch");
const pitchValue = document.querySelector(".pitch-value");
const rate = document.querySelector("#rate");
const rateValue = document.querySelector(".rate-value");

let voices = [];

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

  inputTxt.blur();
};

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

Спецификация
Web Speech API
# tts-section

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

Рабочий стол Мобильное устройство
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
SpeechSynthesis 33 14 49 21 7 33 62 Нет 7 3.0 Нет
cancel 33 14 49 21 7 33 62 Нет 7 3.0 Нет
getVoices 33 14 49 21 7 33 62 Нет 7 3.0 Нет
pause 33 14 49 21 7
33В Android, pause() завершает текущее произнесение. pause() ведёт себя так же, как cancel().
62В Android, pause() завершает текущее произнесение. pause() ведёт себя так же, как cancel().
Нет 7
3.0В Android, pause() завершает текущее произнесение. pause() ведёт себя так же, как cancel().
Нет
paused 33 14 49 21 7 33 62 Нет 7 3.0 Нет
pending 33 14 49 21 7 33 62 Нет 7 3.0 Нет
resume 33 14 49 21 7 33 62 Нет 7 3.0 Нет
speak 33 14 49 21 7 33 62 Нет 7 3.0 Нет
speaking 33 14 49 21 7 33 62 Нет 7 3.0 Нет
voiceschanged_event 33 14 49 21 16 33 62 Нет 16 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/SpeechSynthesis

Spec-Zone.ru

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