|
|||||||
Синтез русской речи для приложения под linux
Время создания: 26.04.2019 15:27
Автор: dopler47
Текстовые метки: linux, синтез, речи, речь
Раздел: Компьютер - Linux - Синтез речи
Запись: xintrea/mytetra_syncro/master/base/1556281642m7oofz6rny/text.html на raw.github.com
|
|||||||
|
|||||||
Возникла необходимость встроить в приложение, разрабатываемое под Linux "проговаривание" русских фраз в качестве реакции на некоторые события. Стоит отметить что в качестве основного средства разработки я использую язык программирования С++ и Qt 5.8. После обдумывания задачи я выбрал следующий вариант решения: с помощью синтезатора речи получить аудио файлы с нужными фразами, проигрывать эти фразы в нужный момент, используя QMediaPlayer из фреймворка Qt. Возможно следующим шагом в развитии решения данной задачи будет подключение функционала синтеза речи в мой проект, но на данном этапе это показалось мне избыточным. Итак, часть первая, синтез фраз на русском в linux (xubuntu 16.04) 1. Festival В начале я установил синтезатор речи festival: sudo apt install festival festvox-ru Послушать качество звучание можно командой: echo "Привет! Как дела?" | festival --tts --language russian По моему мнению слова произносятся разборчиво, вполне приемлимо, но голос какой то "деревянный". 2. Espeak Затем я попробовал espeak: sudo apt install espeak Послушал качество командой: espeak -vru "Русский синтезатор речи" Качество espeak оказалось отвратным, настоящий хардкор, настоящий "робоголос") 3. RHVoise При дальнейшем поиске я наткнулся на положительные отзывы о синтезаторе RHVoise и решил поставить его. Но тут не обошлось без танцев с бубном. Оказалось что нельзя так просто взять скачать с github, собрать проект на начать его использовать (ссылка на проект: https://github.com/Olga-Yakovleva/RHVoice ). То ли у меня не хватало необходимых библиотек то ли еще что то, но в синтезатор не хотел заводиться. К счастью я наткнулся на пакет с этим синтезатором (ссылка на инструкцию по установке: https://launchpad.net/~linvinus/+archive/ubuntu/rhvoice/) и установил его сделав следующее: sudo add-apt-repository ppa:linvinus/rhvoice sudo apt-get update sudo apt-get install rhvoice rhvoice-russian sudo apt-get install speech-dispatcher-rhvoice Проверил звучание командой: echo "Привет, как дела?" | RHVoice-client -s Anna+CLB | aplay Звучит разборчиво, хотя голос отдает металлом. Записать фразу в файл можно при помощи команды: echo "Необходимая фраза" | RHVoice-client -s Anna+CLB >./sound.mp3 Проверить, что все записалось "как надо" можно, проиграв файл: aplay sound.mp3 4. Речевые технологии Yandex SpeechKit Cloud После просмотра вариантов синтеза речи на своем ПК, меня посетила идея посмотреть варианты синтеза речи с использованием сервисов в интернете. В итоге я наткнулся на сервис от Яндекса - SpeechKit Cloud. Сервис позволяет получать синтезированную речь, отправляя HTTPS запросы, в запросе необходимо указать ключ разработчика (описание формата запроса: https://tech.yandex.ru/speechkit/cloud/doc/guide/concepts/tts-http-request-docpage/ ). Зарегистрировшись и войдя в "кабинет разработчика" Яндекс, я получил необходимый ключ разработчика. Использовав следующую команду, мне удалось получить синтезированную фразу: curl "https://tts.voicetech.yandex.net/generate?format=wav&lang=ru-RU&speaker=omazh&emotion=neutral&key=<ключ разработчика>" -G --data-urlencode "text=Привет, как дела? " > sound.wav В итоге я решил остановиться на использовании фраз, полученных Yandex SpeechKit Cloud, так как это звучание голоса мне показалось наиболее естественным. Часть вторая, проигрывание аудио файлов с ипользованием Qt 5.8 Тут все оказалось даже проще, чем я думал. Для проигрывания используем класс QMediaPlayer, не забывая подключить в файле проекта модуль QT += multimedia. Описание работы с классом дано на сайте с документацией Qt, но на всякий случай приведу отрывок своего кода: QMediaPlaylist *playlist = new QMediaPlaylist(); QString url_sound_ = "qrc:/qml/music/sound.wav"; playlist->addMedia(QUrl(url_sound_)); playlist->setPlaybackMode(QMediaPlaylist::Loop); m_player_ = new QMediaPlayer; m_player_->setPlaylist(playlist); m_player_->setVolume(100); /.../ m_player_->play(); /.../ m_player_->stop(); Аудио файлы с фразами добавил в ресурсы проекта. Получилось весьма разборчивое и понятное озвучивание необходимых событий в приложении. К сожалению голос не так прекрасен и мелодичен как в подобных системах в некоторых фантастических фильмах, но я надеюсь что разработчики синтезаторов речи буду стремиться к этому. Тем не менее результат весьма интересен, прогресс не стоит на месте и уже доступен синтез разборчивых фраз на русском. Надеюсь Вам пригодится мой опыт прикручивания русской речи к интерфейсу пользователя приложения. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|