Форум русскоязычного сообщества Ubuntu


Автор Тема: Синтезирование речи на основе Yandex TTS  (Прочитано 5769 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн rad-li

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Синтезирование речи на основе Yandex TTS
« : 22 Сентябрь 2015, 13:57:55 »
Скрипт синтезирует написанный текст голосом с помощью технологий Яндекса. Должен быть установлен mplayer. (При желании можно воспроизводить другим консольным плеером. Для этого измените в скрипте слово mplayer на название вашей программы.)

Как использовать: скопируйте текст скрипта в файл с любым названием, например yatts, дайте права на исполнение (chmod +x filename).

Запуск в терминале: ./yatts 'текст для произношения'

#!/bin/bash
# Синтезатор речи на основе технологий Яндекса.
# В качестве параметра скрипту передается текст для воспроизведения в 'кавычках'.
# Пример запроса: ./yatts 'Привет Ubuntu'
# Произношение отличается в зависимости от наличия знаков препинания.
#
# В ссылке запроса можно изменить следующие параметры:
# format - mp3 или wav
# quality - lo или hi

a="$1" && eval "mplayer 'http://tts.voicetech.yandex.net/tts?format=mp3&quality=hi&lang=ru_RU&text=$a'"

Оффлайн TheExt4

  • Любитель
  • *
  • Сообщений: 78
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #1 : 23 Январь 2016, 21:27:12 »
Текст с пробелами не произносит, вместо них нужно ставить %20
Nvidia Geforce GTX 760/Intel Core i5 4670/16 Гб ОЗУ

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #2 : 23 Январь 2016, 22:27:11 »
А так же нельзя давать большой кусок текста
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #3 : 24 Январь 2016, 23:18:55 »
Цитировать
Текст с пробелами не произносит
у меня произносит. проверил.

Цитировать
А так же нельзя давать большой кусок текста
Можно узнать лимит символов или слов, потом в скрипте разбивать большой текст на части,
получить их озвучку в mp3 файлы, склеить все mp3 файлы в один, и воспроизвести или сохранить.

А качество самой озвучки вообще отличное, можно хоть аудиокниги писать.

(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 25 Январь 2016, 00:19:12:
Нашел опытным путем (в wget), что максимальная длина запроса с текстом (http://...) должна быть меньше 1590 символов.
Посчитать символы:
echo 'http://...+текст' | wc -m
Сохранить в mp3 файл озвученный текст:
wget -O "Speech.mp3" "http://tts.voicetech.yandex.net/tts?format=mp3&quality=hi&lang=ru_RU&text=Здесь текст."
« Последнее редактирование: 25 Январь 2016, 00:19:12 от Cxms »

Punko

  • Гость
Re: Синтезирование речи на основе Yandex TTS
« Ответ #4 : 25 Январь 2016, 00:36:16 »
Отличная штука!
Еще можно как в моём велосипеде для перевода - озвучка выделенного куска текста, можно будет забиндить на хоткей скрипт и не писать ручками.
Для чего? Например, что б узнать произношение слова на иностранном языке, яндекс вроде поддерживает несколько ТТС-языков.

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #5 : 25 Январь 2016, 05:25:13 »
Цитировать
яндекс вроде поддерживает несколько ТТС-языков.
Писал en_EN в ссылке +англ. текст, но не принимает ???
Сделал пока только для русского:
Код: Bash
  1. #!/bin/bash
  2. # Озвучивание русского текста из буфера обмена
  3. # Максимальное колличество озвучиваемых символов - 1515
  4. # Сохранять mp3 файлы озвученных текстов y/n?
  5. SAVE_FILE=y
  6.  
  7. SCRIPT_PATH="$(readlink -en "${0}")"
  8. lsof -t -p ^$$ "$SCRIPT_PATH" | xargs kill -9
  9. cd "$(dirname "$SCRIPT_PATH")"
  10. {
  11. # Удаляем все пробелы в начале и в конце строк и заменяем два и более пробелов на один
  12. TEXT="$(xclip -o)"
  13. TEXT="$(echo -n "$TEXT" | sed 's/^ *//;s/[ ^]*$//;s/  */ /g')"
  14.  
  15. # Максимальная длина SEND_IRI - 1590 символов, длина SEND_IRI без текста = 75 символов
  16. # Максимальная длина текста = 1590 - 75 = 1515 символов
  17. CNT_TEXT=$(echo "$TEXT" | wc -m)
  18. [ $CNT_TEXT -ge 1515 ] && { echo "Превышено максимальное колличество символов - 1515"; exit; }
  19. echo "$TEXT"
  20.  
  21. ping -c 3 ya.ru &>/dev/null || { echo "Интернет недоступен."; exit; }
  22.  
  23. echo -en "\nЗагрузка аудио..."
  24. AUDIO_FILE="$(date +"%s.mp3")"
  25. wget -q -O "$AUDIO_FILE" "http://tts.voicetech.yandex.net/tts?format=mp3&quality=hi&lang=ru_RU&text=${TEXT}" || {
  26. echo "ошибка при загрузке аудио."; exit; }
  27. echo "ОК."
  28. mplayer "$AUDIO_FILE" &>/dev/null
  29. [ "$SAVE_FILE" = n ] && rm "$AUDIO_FILE"
  30. } | zenity --text-info --width=550 --height=450 --title="Озвучивание текста"
  31.  
  32.  
« Последнее редактирование: 25 Январь 2016, 05:30:04 от Cxms »

Оффлайн TheExt4

  • Любитель
  • *
  • Сообщений: 78
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #6 : 31 Январь 2016, 15:34:54 »
Сделал что-то вроде gui https://paste.ubuntu.com/14800448/
Nvidia Geforce GTX 760/Intel Core i5 4670/16 Гб ОЗУ

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #7 : 31 Январь 2016, 16:59:02 »
TheExt4, гуи на баше это сурово...
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн TheExt4

  • Любитель
  • *
  • Сообщений: 78
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #8 : 31 Январь 2016, 17:23:31 »
TheExt4, гуи на баше это сурово...
только баш, только хардкор
Nvidia Geforce GTX 760/Intel Core i5 4670/16 Гб ОЗУ

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1967
    • Просмотр профиля
Re: Синтезирование речи на основе Yandex TTS
« Ответ #9 : 27 Сентябрь 2016, 20:25:23 »
Сейчас чтобы работало нужно немного подправить запрос и указывать свой api-ключ, который можно получить в кабинете разработчика:
https://developer.tech.yandex.ru/

Док:
https://tech.yandex.ru/speechkit/cloud/doc/dg/concepts/speechkit-dg-tts-docpage/

Пример:
wget -qO - 'https://tts.voicetech.yandex.net/generate?&text=Программирование, разработка, локализация, сборка пакетов&format=mp3&lang=ru-RU&key=XXXX-XXXX-XXXX-XXXX&speed=0.1&emotion=good' | mplayer -В &key=XXXX-XXXX-XXXX-XXXX подставить свой api-ключ.

Также работает распознавание русской/английской речи:
Док:
https://tech.yandex.ru/speechkit/cloud/doc/dg/concepts/speechkit-dg-recogn-quick-start-docpage/

Пример:
curl -X POST -H "Content-Type: audio/x-wav" --data-binary "@monologue1.wav" "https://asr.yandex.net/asr_xml?uuid=$(uuidgen -r | tr -d '-')&key=XXXX-XXXX-XXXX-XXXX&topic=queries"Распознается файл monologue1.wav (из мода HL Paranoia).
monologue1.wav:
https://yadi.sk/d/yReVjEhnvokvh
« Последнее редактирование: 28 Сентябрь 2016, 20:29:45 от renzrv »

 

Страница сгенерирована за 0.067 секунд. Запросов: 24.