Festival (Русский)
Festival - это многоязычная система синтеза речи, разработанная CSTR (Centre for Speech Technology Research).
Установка
Установите festival из официальных репозиториев. Кроме того, необходимо установить один или несколько голосовых пакетов festival-english, festival-us, festival-ru[broken link: package not found]. Также для 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
или /usr/share/festival/festival.scm
(set! voice_default voice_msu_ru_nsh_clunits)
Вы также можете установить голос по умолчанию в /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 or
festival> (quit)
Чтение текстового файла
festival --tts /path/to/letter.txt
Чтение текстового файла и сохранение в wav
cat letter.txt | text2wave -o letter.wav
Пример скрипта для festival
Одним из классических приложений, которые использует festival является ping. Используйте этот скрипт при проверка ping'а до хоста, он вернёт вам результат успешного или неудачного выполнения ping:
#!/bin/bash while [ 1 = 1 ]; do ping -c $1 && (echo "Ping" | festival --tts) || (echo "Fail" | festival --tts) done
Заметьте, что синтезатор речи не работает в реальном времени, т.к. ему нужно некоторое время перед воспроизведением.
Решение проблем
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