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 | Нет |
См. также
© 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