Не могу найти подходящий вариант. Помогите, если знаете.
Мне нужно озвучивать слова. То есть, когда пользователь нажимает на кнопку, то озвучивается всего одно слово.
Если кто знает как, поделитесь примером, пожалуйста
ПС: озвучка нужна на английском языке.
Пример воспроизведения звука через js:
function speak() {
let text = document.getElementById('text').value;
speechSynthesis.speak(new SpeechSynthesisUtterance(text));
}
speak();
<meta charset="utf-8">
<p>Воспроизвести звуки.
<input id="text">
<button onclick="speak();">Произнести вслух</button>
Решил вернуться к данной задаче и добавить более развёрнутое решение.
Хочу сразу отметить, что инициализация speech
с декабря 2018 года теперь производится только по активации пользователя.
var lang = "ru-RU"; // Задаём стандартный язык произношения
let main = document.querySelector('.main'); // Получаем главное меню
let sel = document.querySelector('#lang'); // Получаем селектор для наполнение
let sound = document.querySelector('#text'); // Получаем элемент input
let land = window.speechSynthesis.getVoices(); // Тестовый вызов для получения языков(Так как speech с 2018 года работает исключительно по активации.
activate.onclick = function() { // При нажатии на кнопку
let reactivate = window.speechSynthesis.getVoices(); // Реактивируем получения языков воспроизводимости
reactivate.forEach(function (c) { //Для каждого элемента
let opt = document.createElement('option'); // Создаём option
opt.value = c.lang; // В value помещяем код языка
opt.innerText = c.name; // В текст option название языка
sel.appendChild(opt); // Добавляем в селект
});
document.querySelector('#activate').style.display = 'none'; // Скрываем начальную кнопку
main.style.display = 'block'; // Показываем основной блок
};
sel.onchange = function () { // При выборе селекта
lang = this.value; // Меняем язык на выбранный
};
function speak(){ // Функция речи
var speech = window.speechSynthesis, // Объявляем переменные
voice = '',
ourvoice = []; // Сюда будем складывать доступные звуки браузера
if (0 === ourvoice.length) { // Если равно нулю, то...
var voices = speech.getVoices(); // Получаем все языки
}
for (var i = 0; i < voices.length; i++) { // Находим указанный в списке
if (lang == voices[i].lang) {
voice = voices[i]; // Ставим язык как параметр
}
}
var readme = new SpeechSynthesisUtterance(sound.value); // вводим текст
readme.voice = voice; // Задаём язык произношения
speech.speak(readme); // Произносим
}
.main{
display: none;
}
<button id="activate">Начать</button>
<div class="main">
<p>Введите текст
<input id="text">
<p>Выберите язык произношения<select id="lang">
</select>
<button onclick="speak();">Произнести вслух</button>
</div>
PS Постарался добавить больше комментариев для понимания работы кода.
Произнести на всех английских:
activate.onclick = function() { // При нажатии на кнопку
let reactivate = window.speechSynthesis.getVoices();
let text = "What do you want to know?";
reactivate.forEach(function(v) {
if (/^en-/.test(v.lang)) {
let utterance = new SpeechSynthesisUtterance(text);
utterance.onstart = function(event) { // SpeechSynthesisEvent
console.dir(event.utterance.voice.name);
}
utterance.voice = v;
window.speechSynthesis.speak(utterance);
}
});
};
<button id="activate">Нажать 2 раза</button>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я пытаюсь разобраться что натворил разработчик но я не могу понять как это блин работает
У меня есть страница с товарами, на неё сразу выводится 12 товаров, а потом когда страница проскроллилась до конца, скрипт обращается к PHP, передает...
Есть парсер, который получает 3000 строк в минутуНеобходимо записать все это в excel
Делаю игрушку на js возникла проблемаБлоки на css и они должны чередоваться, вопрос как поставить переменную в стиль чтобы генерировать блоки...