Festival (Русский)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Состояние перевода: На этой странице представлен перевод статьи 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]