Алина Леонова
06.11.2019
939

Интеграция Asterisk и Festival

Festival – это многоязычная система синтеза речи. По умолчанию поставляется с поддержкой английского, валлийского и испанского языков. Также по дефолту присутствует в некоторых дистрибутивах Linux-систем. Установка Festival Установку Festival можно произвести несколькими способами: собрать из исходников или же воспользоваться менеджером пакетов yum. Для более корректной установки воспользуемся менеджером пакетов. Чтобы установить Festival, введём в консоли […]

Festival – это многоязычная система синтеза речи. По умолчанию поставляется с поддержкой английского, валлийского и испанского языков. Также по дефолту присутствует в некоторых дистрибутивах Linux-систем.

Для данной системы создано множество голосовых пакетов. Их нужно устанавливать вручную.

Установка Festival

В статье рассматривается установка Festival на операционную систему CentOS 6.9.

Установку Festival можно произвести несколькими способами: собрать из исходников или же воспользоваться менеджером пакетов yum. Для более корректной установки воспользуемся менеджером пакетов. Чтобы установить Festival, введём в консоли команду:

  yum -y install festival 
Установка Festival
Установка Festival

Проверить его наличие и работоспособность в системе можно с помощью команды:

  festival

Должны перейти в консоль Festival.

При сборке из исходников не забываем указать путь к бинарным файлам. Иначе вызов Festival придётся осуществлять, прописывая полный путь к нему.

Русификация Festival

Для начала создаём папку, где впоследствии будут храниться распакованные языковые файлы.

  mkdir /usr/share/festival/lib/voices/russian

Затем скачиваем русскоязычный пакет, распаковываем его и переместим в ранее созданную директорию.

  wget http://sourceforge.net/projects/festlang.berlios/files/msu_ru_nsh_clunits-0.5.tar.bz2
  tar xjfv msu_ru_nsh_clunits-0.5.tar.bz2
  mv /usr/share/msu_ru_nsh_clunits /usr/share/festival/lib/voices/russian/
Скачивание и распаковка
Скачивание и распаковка

Далее необходимо внести некоторые дополнения в конфигурационные файлы Festival. Это нужно сделать для того, чтобы русский язык стал доступен.

Сначала внесём правки в файл languages.scm (/usr/share/festival/lib/languages.scm). В самое начало файла допишем:

(define (language_russian)
 "(language_russian)
  Set up language parametrs for Russian"
  (set! male1 voice_msu_ru_nsh_clunits)
  (male1)
  (Parametr.set 'Language 'russian)
)

Находим в этом же файле (define (select_language language) и дописываем в него следующие строки:

((equal? language 'russian)
    (language_russian))

Для определения языка по умолчанию создадим фапйл ~/.festivalrc, в котором пропишем:

(set! voice_default 'voice_msu_ru_nsh_clunits)

После этого шага можем проверить голосовые пакеты, которые установлены в Festival. Для этого переходим в консоль системы синтеза речи и вводим команду:

  (voice.list)
Доступные голосовые пакеты Festival
Доступные голосовые пакеты Festival

Из скриншота выше видно, что в Festival доступно 2 голосовых пакета: nitech_us_slt_arctic_hts и msu_ru_nsh_clunits .

Для выхода из Festival используем команду (quit) или сочетание клавиш Ctrl+D.

Интеграция Asterisk и Festival

Создаём конфигурационный файл festival.conf (/etc/asterisk/festival.conf). В него прописываем следующее:

[general]
host=localhost
port=1314
usecache=yes
cachedir=/var/lib/asterisk/festivalcache/
festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n

Также создаём директорию для кэша.

Стоит обратить внимание: директорию для кэша нужно очищать самостоятельно.
mkdir /var/lib/asterisk/festivalcache
chown -R asterisk. /var/lib/asterisk/festivalcache

Переходим в консоль Asterisk и подгружаем модуль festival:

Загрузка модуля Festival в Asterisk
Загрузка модуля Festival в Asterisk

После загрузки модуля в Asterisk появится новая команда – Festival.

Подключение Asterisk к Festival происходит по порту 1314.

Для запуска демона Festival воспользуемся командой:

/usr/bin/festival --server

Пример работы Festival

Подробно рассмотрим, как работает интеграция Asterisk и Festival.

В качестве примера будем использовать номер 0099. Для начала пропишем в диалплане, чтобы при звонке на номер 0099 вызывался Festival. Делаем это в файле extensions_custom.conf (/etc/asterisk/extensions_custom.conf):

Текст, передаваемый в Festival, должен быть в кавычках. При использовании запятых происходит обрыв  вызова.
exten => 0099,1,Answer()
same  => n,NoOp(“Test Festival”)
same  => n,Festival(‘Приветствуем дорогой клиент.’)
same  => n,Hangup()

Сохраняем правки конфигурационного файла и перезаписываем диалплан командой dialplan reload. Теперь проверим работу, позвонив на номер 0099.

Проверка интеграции
Проверка интеграции

Как видим из скриншота, при звонке на номер 0099 вызвался Festival. В трубке слышно, что проигрывается фраза, которую мы указали (Приветствуем дорогой клиент).

На этом интеграция Asterisk и Festival завершена.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices