Festival (Русский)
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]