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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн rad-li

  • Автор темы
  • Любитель
  • *
  • Сообщений: 90
    • Просмотр профиля
Синтезирование речи на основе 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

  • Гость
Re: Синтезирование речи на основе Yandex TTS
« Ответ #1 : 23 Января 2016, 21:27:12 »
Текст с пробелами не произносит, вместо них нужно ставить %20

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • 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) [Выделить]
#!/bin/bash
# Озвучивание русского текста из буфера обмена
# Максимальное колличество озвучиваемых символов - 1515
# Сохранять mp3 файлы озвученных текстов y/n?
SAVE_FILE=y

SCRIPT_PATH="$(readlink -en "${0}")"
lsof -t -p ^$$ "$SCRIPT_PATH" | xargs kill -9
cd "$(dirname "$SCRIPT_PATH")"
{
# Удаляем все пробелы в начале и в конце строк и заменяем два и более пробелов на один
TEXT="$(xclip -o)"
TEXT="$(echo -n "$TEXT" | sed 's/^ *//;s/[ ^]*$//;s/  */ /g')"

# Максимальная длина SEND_IRI - 1590 символов, длина SEND_IRI без текста = 75 символов
# Максимальная длина текста = 1590 - 75 = 1515 символов
CNT_TEXT=$(echo "$TEXT" | wc -m)
[ $CNT_TEXT -ge 1515 ] && { echo "Превышено максимальное колличество символов - 1515"; exit; }
echo "$TEXT"

ping -c 3 ya.ru &>/dev/null || { echo "Интернет недоступен."; exit; }

echo -en "\nЗагрузка аудио..."
AUDIO_FILE="$(date +"%s.mp3")"
wget -q -O "$AUDIO_FILE" "http://tts.voicetech.yandex.net/tts?format=mp3&quality=hi&lang=ru_RU&text=${TEXT}" || {
echo "ошибка при загрузке аудио."; exit; }
echo "ОК."
mplayer "$AUDIO_FILE" &>/dev/null
[ "$SAVE_FILE" = n ] && rm "$AUDIO_FILE"
} | zenity --text-info --width=550 --height=450 --title="Озвучивание текста"

« Последнее редактирование: 25 Января 2016, 05:30:04 от Cxms »

TheExt4

  • Гость
Re: Синтезирование речи на основе Yandex TTS
« Ответ #6 : 31 Января 2016, 15:34:54 »
Сделал что-то вроде gui https://paste.ubuntu.com/14800448/

Оффлайн alsoijw

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

TheExt4

  • Гость
Re: Синтезирование речи на основе Yandex TTS
« Ответ #8 : 31 Января 2016, 17:23:31 »
TheExt4, гуи на баше это сурово...
только баш, только хардкор

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
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.05 секунд. Запросов: 23.