Хочу написать синтез речи. Опыт работы с С# WinFoms. Подскажите, пожалуйста, как быстро и с помощью чего это сделать? Если есть готовое решение - круто. Предложите хоть какие-то варианты.
-
2когда-то использовал festival на linux для синтеза речи. можно рассмотреть как вариант, так как шарпы теперь крассплатформенные – Senior Pomidor Dec 28 '16 at 12:37
-
5Посмотрите по теме TTS (TextToSpeech) – Kromster Dec 28 '16 at 12:38
-
Синтез речи работает, правда с женским голосом, но работает. – Александр Пузанов Aug 15 '17 at 05:59
-
Вот тут https://www.youtube.com/watch?v=y6pv7PjyExk&t=3s – DmitryBoyko Sep 06 '17 at 13:09
-
Мне нужно, чтобы читал корректно русский текст. – Александр Пузанов Sep 07 '17 at 08:49
4 Answers
Для синтеза используйте класс SpeechSynthesizer. Для поддержки русского языка вызовите метод SelectVoice() и укажите голос, который поддерживает русский язык. Список доступных голосов возвращает метод GetInstalledVoices(). Новые голоса можно доустановить в систему. Один из примеров голосов - Катерина (ScanSoft Katerina Full 22kHz) взять можно, например здесь
А вот большая подборка голосов http://forum.ru-board.com/topic.cgi?forum=5&topic=21094
- 33,121
-
-
-
1Установил голос Катерины - все круто. Прошел по ссылке голосов, что-то не догоняю как качать... Хотелось бы мужской голос – Александр Пузанов Dec 29 '16 at 06:04
-
@АлександрПузанов Четыре ссылки там приведены. Остальные вбиваете названия в гугл и ищете. – Anton Shchyrov Dec 29 '16 at 12:42
-
В .NET есть стандартный класс SpeechSynthesizer.
Пример его использования:
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.SetOutputToDefaultAudioDevice();
synth.Speak("This example demonstrates a basic use of Speech Synthesizer");
Для того, чтобы узнать какие русские голоса установлены выполните код
var voices = synth.GetInstalledVoices(new CultureInfo("ru-RU"));
Если на русском голосов нет, то можно устанавливать голоса. Для установки русских голосов, качайте те, которые содержат в названии ru-RU.
Если устанавливаемые голоса не работают, вам может помочь руководство.
Затем для установки следует использовать метод SelectVoice.
Допустим у нас установлен голос на русском, тогда можно это сделать так:
// если известно имя
synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (ru-RU, Elena)");
// установить первый попавшийся
synth.SelectVoice(voices[0].VoiceInfo.Name);
или воспользоваться методом SelectVoiceByHints.
- 9,634
-
-
-
-
-
@АлександрПузанов исправил ошибку. Я имел ввиду
SelectVoice. – Vadim Ovchinnikov Dec 29 '16 at 05:55 -
Прошел по ссылке для установки голосов, скачал, запустил для устанвоки, но голос не добавился. – Александр Пузанов Dec 29 '16 at 06:02
-
1
-
-
Тоже интересовался этой темой, и на тот момент нашел довольно интересное решение от gunthercox на Github: https://github.com/gunthercox/SpeakForMe
Его суть заключалась в синтезе речи на основе Google Speech API посредством разложения на фонемы. Это один из способов - лично я его использовал для создания чат-бота, который говорил моим голосом :)
P.S. также в C# есть встроенный класс для работы с синтезом речи: SpeechSynthesizer.
- 1,368
- 5
- 19
- 45
-
Да хоть как робот... Моему другу и так сойдет на первое время. – Александр Пузанов Dec 28 '16 at 13:00
-
-
Насколько погуглил, таки можно подключить. Например: https://social.msdn.microsoft.com/Forums/ru-RU/679b3ef5-8939-4857-8fa0-f5a2e1ab9f20/-speechsynthesis-?forum=fordesktopru – Timur Musharapov Dec 28 '16 at 13:04
-
админы подредактировали вопрос и суть немного потерялась. Человек, которому нужен синтез речи ходит и в руках будет планшет. Это, скорее всего андроид. ВСе доп. приложения я смогу пооставить? (голоса..) – Александр Пузанов Dec 28 '16 at 13:12
-
1Как вариант, можно использовать просто сайт, и уже заходить на него с планшета - так будет проще в данном случае. – Timur Musharapov Dec 28 '16 at 13:25
-
Что приведенная моя ссылка (там Python-проект), что встроенные в С#-средства позволяют сделать это на web-стороне, просто на левом сайте. – Timur Musharapov Dec 28 '16 at 13:26
-
Как вариант не плохой. Но 1. не удобно. 2 С сетью проблема, т.е. будет сильно дорого. – Александр Пузанов Dec 29 '16 at 07:10
простейший блокнот с кнопкой speak: Добавляем на форму textBoxText, и buttonSpeak. В коде подключаем System.Speech.Synthesis, и в форме создаём объект
SpeechSynthesizer ss = new SpeechSynthesizer();
вешаем на кнопку обработчик, в нем код чтения фразы:
ss.Volume = 100;// от 0 до 100
ss.Rate = 0;//от -10 до 10
ss.SpeakAsync(textBoxText.Text);
- 812