Festival (Русский)
Festival - это многоязычная система синтеза речи, разработанная CSTR (Centre for Speech Technology Research).
Contents |
Установка
Festival доступен в extra репозитории:
# pacman -S festival
Вам также необходимо установить один или несколько голосов, потому что по умолчанию голоса не установлены.
American English
American English voice:
# pacman -S festival-us
British English
British English voice:
# pacman -S festival-english
Русский язык
Голос для русского языка
# yaourt -S festvox-ru
Другие голоса
Также для Festival доступны и другие голоса; некоторые из них вы можете найти в AUR.
Проверка и отладка
Для проверки festival выполните команду:
$ echo "This is an example. Arch is the best." | festival --tts
Если вы слышите то, что написано в примере, вы успешно установили TTS систему.
Если вы ничего не слышите, слышите какой-то странный звук или только начало предложения, читайте ниже.
Поддержка русского языка
В файл /usr/share/festival/languages.scm дописать вначале:
(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))
Для проверки выполните команду:
$ echo "Привет" | festival --tts --language russian
can't open /dev/dsp
Если festival возвращает следующую ошибку:
Linux: can't open /dev/dsp
В зависимости от установленной аудиосистемы (можно проверить, набрав aplay или paplay в терминале), добавьте эти строки в ваш .festivalrc, или в usr/share/festival/festival.scm (source, source):
Для ALSA:
(Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
Для PulseAudio:
(Parameter.set 'Audio_Command "paplay $FILE") (Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Required_Format 'snd)
Alsa playing @ wrong speed
Если решение выше даёт скрипучий (писклявый) голос, можно попробовать следующее:
(Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Command "aplay -Dplug:default -f S16_LE -r $SR $FILE")
Настройка и использование
Интерактивный режим (тестирование голосов и пр.)
festival имеет командную строку, которая вы можете использовать для тестов. Несколько примеров (с примерами выводов)
$ festival [...] festival>
Список доступных голосов:
festival> (voice.list) (cstr_us_awb_arctic_multisyn kal_diphone don_diphone)
Установить голос:
festival> (voice_cstr_us_awb_arctic_multisyn) #<voice 0x1545b90>
Сказать:
festival> (SayText '"test this is a test oh no a test bla test") inserting pause after: t. Inserting pause [...] id _63 ; name t ; id _65 ; name # ; #<Utterance 0x7f7c0c144810>
Помощь:
festival> help "The Festival Speech Synthesizer System: Help
Выход: ctrl+d or
festival> (quit)
Чтение текстового файла
festival --tts /path/to/letter.txt
Чтение текстового файла и сохранение в wav
cat letter.txt | text2wave -o letter.wav
Установка голоса по умолчанию
Вы можеет установить голос по умолчанию, добавив эти строки в конец вашего .festivalrc или /usr/share/festival/festival.scm
(set! default_voice 'voice_us1_mbrola)
Вы также можете установить голос по умолчанию в /usr/share/festival/voices.scm. У вас должны быть привилегии суперпользователя и добавьте их в конец файла, просто перечисляя по кругу.
Приложения, которые могут использовать festival
Одним из классических приложений, которые использует festival является ping. Используйте этот скрипт при проверка ping'а до хоста, он вернёт вам результат успешного или неудачного выполнения ping:
#!/bin/bash
while [ 1 = 1 ]; do
ping -c $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts)
done
Заметьте, что синтезатор речи не работает в реальном времени, т.к. ему нужно некоторое время перед воспроизведением.
См. также
Банк скриптов для голосового движка Festival