Festival (Русский)

From ArchWiki
Jump to: navigation, search

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

Учим компьютер говорить по-русски / Festival скрипты

Говорящий пингвин. Учим Linux говорить и слушать