Настройка синтеза речи в Ubuntu

Опубликовано admin в Пнд, 26/07/2010 - 12:27
Простой рецепт по установке и использованию синтезатора речи 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 (_http://ppa.launchpad.net/sergey-udaltsov/ppa/ubuntu) jaunty main 
   deb-src http://ppa.launchpad.net/sergey-udaltsov/ppa/ubuntu (_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 (_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)
 
Произносим русский текст:
 
   >(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))


Статья взята с http://www.opennet.ru (_http://www.opennet.ru/tips/info/2216.shtml)

( categories: )