Установка и использование синтезатора речи Festival
Настройка синтеза речи в Ubuntu
Установка и использование синтезатора речи Festival в Ubuntu:
Устанавливаем festival и сопутствующие утилиты:
sudo apt-get install festival speech-tools
Cтавим пакет с голосом, которые занимает 186 Мб.
В репозитории universe Ubuntu 9.10 уже есть готовый пакет festvox-ru:
sudo apt-get install festvox-ru
Если используется Ubuntu 9.04 в /etc/apt/sources.list добавляем:
deb http://ppa.launchpad.net/sergey-udaltsov/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/sergey-udaltsov/ppa/ubuntu jaunty main
Ставим:
sudo apt-get install festvox-ru
В остальных дистрибутива можно установить/распаковать deb-пакет с голосом из Ubuntu 9.10:
sudo wget http://ubuntu.mirrors.tds.net/ubuntu/pool/universe/f/festvox-ru/festvox-ru_0.5-1_all.deb
sudo dpkg --install festvox-ru_0.5-1_all.deb
Проверяем (русский текст воспринимается только в кодировке UTF-8):
festival
>(SayText "Hello!")
Активируем русский голос
>(voice_msu_ru_nsh_clunits)
Активируем русский голос
>(voice_msu_ru_nsh_clunits)
Произносим русский текст:
>(SayText "Привет!")
>(exit)
Читаем содержимое файла:
festival -b '(begin (voice_msu_ru_nsh_clunits) (tts_file "./file.txt"))'
Сохранить результат в файл:
text2wave -eval '(voice_msu_ru_nsh_clunits)' ./file.txt -o ./file.wav
Чтобы заработало:
cat file.txt | festival --tts --language russian
или
festival --tts --language russian file.txt
Нужно в файл /usr/share/festival/languages.scm перед строкой "(define (select_language language)" добавить (по аналогии с другими языками):
(define (language_russian)
"(language_russian)
Set up language parameters for Russian"
(set! male1 voice_msu_ru_nsh_clunits)
(male1)
(Parameter.set `Language `russian)
)
В блок "(define (select_language language)" добавляем:
((equal? language `russian)
(language_russian))
Нужно в файл /usr/share/festival/languages.scm
На будущее:
В deb пакетах предусмотрен замечательный скрипт preinst, специально для того, чтобы пользователи не правили руками конфиги и т.д. , а изменения вносились автоматом.
#!/bin/sh
#preinst
temp='tempfile'
config="/usr/share/festival/languages.scm"
cat $config | sed -e s/'(define (select_language language)'/' (define (language_russian) \n "(language_russian)\n Set up language paremetrs for Russian"\n (set! male1 voice_msu_ru_nsh_clunits)\n(male1)\n(Paremeter.set \'Language\' russian)\n)\n(select_language language)'/ > $temp
cat $temp > $config