Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 21

SpeechSynthesis смена голоса

31.10.2017, 19:33. Показов 6227. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет
Есть js скрипт:
Code
1
2
3
4
5
6
<script>
function db(mytext){
    speechSynthesis.speak(new SpeechSynthesisUtterance(mytext));
    // db.lang = 'ru-RU';
}
</script>
При произношении стоит дефолтный голос Microsoft Irina Desktop - Russian.
Что мне нужно добавить в код, чтобы изменить с дефолтной Irina на Google русский?
Много перепробовал.
И
Code
1
speechSynthesis.onvoiceschanged = 'Google русский (ru-RU)';
И
Code
1
loadVoices('Google русский (ru-RU)');
И
Code
1
2
3
4
5
6
7
8
function getVoiceFromName (name) {
  var foundVoice = null;
  
  voices.forEach(function (voice, index) {
    if (voice.name === 'Google русский (ru-RU)) {
      foundVoice = voice;
    }
  });
Все тщетно.
Большое спасибо заранее за ответ
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2017, 19:33
Ответы с готовыми решениями:

window.speechSynthesis в Linux
Здравствуйте Стоит задача: озвучить выделенный текст в браузере. Написал функцию: function speakSelectionText() { if...

Смена лицензии Битрикс, смена владельца сайта
Всем привет! Вопрос не тривиальный, но, возможно, кто-нибудь сталкивался. Ситуация такова, что когда-то сайт создавался силами...

Громкость голоса
Здравствуйте. Подскажите пожалуйста, как реализовать в Visual C# микрофонтестер. Что то вроде программы теста микрофона в Windows.Когда...

11
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
31.10.2017, 21:26
Для начала попробуйте так:
JavaScript
1
2
3
4
var synth = window.speechSynthesis;
var utterThis = new SpeechSynthesisUtterance("привет, мир");
utterThis.voice = synth.getVoices()[16]; // тут задаём Google русский (ru-RU)
synth.speak(utterThis);
Если что-то пойдёт не так, скажу, что дальше делать.
0
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 21
31.10.2017, 21:34  [ТС]
Опан,
Code
1
2
3
4
5
6
 // speechSynthesis.speak(new SpeechSynthesisUtterance(mytext));
    var synth = window.speechSynthesis;
var utterThis = new SpeechSynthesisUtterance(mytext);
utterThis.voice = synth.getVoices()[16]; // тут задаём Google русский (ru-RU)
synth.speak(utterThis);
}
Говорит все так же Ирина )
Веселая женщина на самом деле оказывается
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
31.10.2017, 22:43
Загрузите пример из этой темы. После 29 строки JS-кода вставьте console.log(i); Должно показать порядковый номер в списке голоса, который был выбран из списка. У меня выходит, что Google русский (ru-RU) - 16-й. Может оказаться, что у Вас будет под другим номером. Вдруг это зависит от браузера, системы, и т.д., и т.п.. В общем, если число в консоли будет другим - задайте его вместо числа 16.
0
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 21
31.10.2017, 23:18  [ТС]
Опан, Консоль показала 17. Поменял 16 на 17 и все равно Ирина не отпускает меня
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
31.10.2017, 23:36
Но русский текст читает?
0
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 21
01.11.2017, 08:16  [ТС]
Опан, Да,конечно.

Добавлено через 10 минут
Опан, Интересный факт: Гугл русский начинает читать через секунд 10 поле дефолтного голоса, почему то сам код проговаривает ( и то на половину).

Добавлено через 3 минуты
Опан, И после " Гугл русский " он вообще перестает читать, даже при нажатии кнопки
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
01.11.2017, 11:03
Цитата Сообщение от LemOnIZe Посмотреть сообщение
Гугл русский начинает читать через секунд 10 поле дефолтного голоса
Тогда попрбуйте весь скрипт воспроизведения разделить на две части: первая должна быть по ходу загрузки страницы, и там же заблаговременно объявлен массив со всеми голосами:
JavaScript
1
2
var synth = window.speechSynthesis;
var voices = synth.getVoices();
а вторая часть пусть выполняется только после нажатия на кнопку:
JavaScript
1
2
3
4
5
function myspeak(e){
    var utterThis = new SpeechSynthesisUtterance(e);
    utterThis.voice = voices[17];
    synth.speak(utterThis);
}
HTML5
1
<button onclick="myspeak('Привет, мир')"> Проговорить </button>
Тогда голоса окажутся уже за раннее подгруженными.
Цитата Сообщение от LemOnIZe Посмотреть сообщение
И после " Гугл русский " он вообще перестает читать, даже при нажатии кнопки
Когда я пытаюсь воспроизвести длинный текст, он его один раз проговаривает не до конца, а потом до перезапуска браузера вообще ничего не говорит. Видимо, рассчитано только на короткие фразы.
0
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 21
01.11.2017, 11:18  [ТС]
Опан,
Создал отдельный файл:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <script type="text/javascript" defer>
        var synth = window.speechSynthesis;
var voices = synth.getVoices();
    </script>
</head>
<body>
 
<button onclick="myspeak('Привет, мир')"> Проговорить </button>
 
<script type="text/javascript">
function myspeak(e){
    var utterThis = new SpeechSynthesisUtterance(e);
    utterThis.voice = voices[17];
    synth.speak(utterThis);
}   
</script>
 
<script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" defer></script>
</body>
</html>
Он все равно проговаривает дефолтным голосом Irina Microsoft. Специально defer первого скрипта даже сделал, чтобы он выполнялся в первую очередь - тщетно. Запустил в другом браузере - Irina Microsoft.
Мб надо какое-то расширение для браузера установить для этого?
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
01.11.2017, 12:26
defer используют наоборот - чтобы не в первую очередь, а одновременно с загрузкой страницы, и он действует только, если скрипт находится в отдельном файле. Тут не важно, и так и так это в процессе загрузки страницы.
Но дело не в этом, есть там какая-то заковыка - когда я вставляю
JavaScript
1
2
console.log(voices[16].name);
console.log(voices[16].lang);
, то выдаёт Uncaught TypeError: Cannot read property 'name und lang' of undefined в то время, как в этом примере то же самое выдаёт имя и язык без ошибок.
0
0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 21
01.11.2017, 13:25  [ТС]
Опан, То есть я с Ириной так и останусь ?
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
01.11.2017, 13:29
Попробуйте так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var synth = window.speechSynthesis;
var voices = [];
if (speechSynthesis.onvoiceschanged !== undefined) {
    speechSynthesis.onvoiceschanged = function(){voices = synth.getVoices();};
}
function myspeak(e){
    console.log(voices[17].name);
    console.log(voices[17].lang);
    var utterThis = new SpeechSynthesisUtterance(e);
    utterThis.voice = voices[17];
    synth.speak(utterThis);
}
Теперь консоль показывает имя и язык голоса прежде, чем проговорить. Если опять будет голос Ирины, значит у них похожие или одинаковые голоса.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2017, 13:29
Помогаю со студенческими работами здесь

Изменение голоса
Ситуация такая, нужно записать диалог. Какой войс морфер посоветуете? Запись должна вестись в программе и в процессе записи возможность...

Распознавание голоса
Только начал заниматься этим вопрос ... взял простейший пример с хабра решил попробовать реализовать сразу на толкнулся на проблему , не...

Различить голоса М. от Ж.
Всем добрый день! Как различить голоса, к примеру мужской от женского? Есть программа написанная на DirectSound....

Синтез Голоса
Не так давно я начала заниматься Arduino, исключительно ради эмоций. Постепенно совершенствуясь, я обрела идею - немного оживить свою...

Голоса в колонках
Недавно появились голоса в колонках. Насколько я понимаю, это голоса из радио. Если вынуть штекер из компьтера, звук только усиливается....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru