Festival (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Festival. Дата последней синхронизации: 20 июня 2014. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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

Установка

Установите festival из официальных репозиториев. Кроме того, необходимо установить один или несколько голосовых пакетов festival-english, festival-us. Также для Festival доступны и другие голоса; некоторые из них вы можете найти в AUR.

Для проверки выполните команду:

$ echo "This is an example. Arch is the best." | festival --tts

Если вы слышите то, что написано в примере, вы успешно установили TTS-систему. Если вы ничего не слышите, слышите какой-то странный звук или только начало предложения, смотрите раздел #Решение проблем.

Настройка

Глобального файла конфигурации в /etc нет, но можно создать пользовательский файл ~/.festivalrc, или редактировать непосредственно /usr/share/festival/festival.scm.

Использование со звуковым сервером

Для PulseAudio, добавить эти строки в конец файла ~/.festivalrc или /usr/share/festival/festival.scm:

(Parameter.set 'Audio_Required_Format 'aiff)
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "paplay $FILE --client-name=Festival --stream-name=Speech")

Для ALSA, использовать эти строки вместо (source):

(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")

Голоса

Чтобы узнать, какие голоса в настоящее время установлены и какой из них используется по умолчанию, перейдите в оболочку фестиваля (представляющую схему REPL):

   $ festival
   
   Festival Speech Synthesis System 2.1:release November 2010
   Copyright (C) University of Edinburgh, 1996-2010. All rights reserved.
   
   clunits: Copyright (C) University of Edinburgh and CMU 1997-2010
   clustergen_engine: Copyright (C) CMU 2005-2010
   hts_engine: 
   The HMM-based speech synthesis system (HTS)
   hts_engine API version 1.04 (http://hts-engine.sourceforge.net/)
   Copyright (C) 2001-2010  Nagoya Institute of Technology
                 2001-2008  Tokyo Institute of Technology
   All rights reserved.
   For details type `(festival_warranty)'
   festival> voice_default 
   voice_cmu_us_slt_arctic_hts          ;;<-- THIS IS THE VOICE FESTIVAL SPEAKS WITH
   festival> default-voice-priority-list 
   (kal_diphone                         ;;<-- THIS IS THE HARD-CODED LIST OF VOICES FESTIVAL CAME PRE-AWARE OF
    cmu_us_bdl_arctic_hts
    cmu_us_jmk_arctic_hts
    cmu_us_slt_arctic_hts
    cmu_us_awb_arctic_hts
    ked_diphone
    don_diphone
    rab_diphone
    en1_mbrola
    us1_mbrola
    us2_mbrola
    us3_mbrola
    gsw_diphone
    el_diphone)
   
   festival> (voice_                    ;;<-- PRESS TAB HERE TO SEE WHAT VOICES FESTIVAL HAS AVAILABLE
   voice_cmu_us_slt_arctic_hts     voice_kal_diphone               voice_nitech_us_slt_arctic_hts  voice_reset
   voice_default                   voice_nitech_us_clb_arctic_hts  voice_rab_diphone
   festival> (voice_cmu_us_slt_arctic_hts) 
   cmu_us_slt_arctic_hts
   festival> (SayText "Arch makes me happy")
   #<Utterance 0x7fb5b8c423b0>
   festival>

Установка голоса по умолчанию

Чтобы установить голос по умолчанию, добавьте следующую строку в конец вашего ~/.festivalrc

(set! voice_default voice_msu_ru_nsh_clunits)

You cannot set the voice with festival.scm; to set voices globally, set order of searched voices in /usr/share/festival/voices.scm.

Ручная установка голосов

Вы также можете получить голоса прямо из festvox.org. Файлы для загрузки различных голосов имеют вид "festvox_*.tgz". Чтобы их задействовать, необходимо распакованный архив переместить в каталог, содержащий голос. На данный момент для Arch подходящей директорией является /usr/share/festival/voices/ с соответствующей подкаталогом для голоса из 'festvox'.

Поддержка русского языка

В файл /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

Использование

Интерактивный режим (тестирование голосов и пр.)

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 или набрать:

festival> (quit)

Чтение текстового файла

festival --tts /path/to/letter.txt

Чтение текстового файла и сохранение в wav

cat letter.txt | text2wave -o letter.wav

Пример скрипта для festival

Одним из классических приложений, для которых удобно использовать festival, является ping. Используйте этот скрипт при пинге хоста, который будет возвращать успешный или неудачный результат:

#!/bin/bash
while [ 1 = 1 ]; do
     ping -c 1 $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts)
done

Заметьте, что синтезатор речи работает не в реальном времени, т.к. ему нужно некоторое время перед воспроизведением.

Решение проблем

Cannot open /dev/dsp

Если festival возвращает следующую ошибку:

Linux: cannot 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 скрипты

Говорящий пингвин. Учим Linux говорить и слушать[устаревшая ссылка 2021-11-10]