# Festival (Русский)

Festival - это многоязычная система синтеза речи, разработанная CSTR (Centre for Speech Technology Research).

## Установка

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 говорить и слушать

Category:

- Русский