ФЭНДОМ


Для начала нужно установить festival и русский голос.

Если у вас debian/ubuntu, вы можете легко установить программу из репозитория. Для этого выполните

sudo apt-get install festival festvox-ru

festvox-ru установит русский голосовой движок (весит около 250 мегабайт).

После установки можете проверить работу, выполнив из консоли


$ festival

Нас встретит приглашение на ввод. В festival встроен функциональный схемо-подобный язык.

Чтобы подать команду разговора напишите


festival> (SayText "Hello")

Вы должны услышать Hello из динамиков вашего компьютера.

Чтобы выйти из программы, напишите (quit). Сразу сделаю оговорку, что я никогда не посылаю текст напрямую на разговор, так как бывает, что вылезают баги и фестиваль говорит что-то ужасное. Если же использовать утилиту text2wave и генерировать wave-файлы, а потом их воспроизводить, то никаких проблем не возникает.

Теперь давайте создадим отдельную папку для разных скриптов, например


$ mkdir -p ~/scripts/festival/data/

Папка data понадобится нам для хранения различной временной и не очень информации.

Теперь вы можете складывать в ~/scripts/festival/ все скрипты, которые вы напишете.

Напишем небольшой скрипт, который поможет нам в будущем упростить вывод текста на festival.

#!/bin/bash
# http://ru.festivalspeaker.wikia.com

echo "$1" | text2wave -o /home/username/scripts/festival/data/saytext_ru.wav -eval "(voice_msu_ru_nsh_clunits)"
aplay /home/username/scripts/festival/data/saytext_ru.wav > /dev/null 2>&1

Конечно, замените username на свой логин. Использовать тильду (~) в качестве домашней папки в скриптах не хорошо, так как если вы захотите запустить его даже от рута (хотя лучше этого не делать - как никак скрипты в домашней папке хранятся, мало ли что), то оболочка просто не найдет указанного адреса.

Сохраните с именем saytext_ru.sh и дайте ему прав выполнения


$ chmod u+x saytext_ru.sh

Параметр -eval "(voice_msu_ru_nsh_clunits)" указывает программе использовать русский голос (именно так он и называется - msu_ru_nsh_clunits).

Аналогично создайте saytext_en.sh, просто убрав параметр -eval "(voice_msu_ru_nsh_clunits)" у text2wave.

Проверьте работоспособность скриптов выполнив

$ ./saytext_ru.sh "Привет мир"
$ ./saytext_en.sh "Hello world"