img

Русский TTS в FreePBX 13

Технология TTS (text-to-speech) служит для преобразования текстовой информации в голос. Проще говоря, вы пишите – система проговаривает. В системах телефонной связи такая технология может быть полезна, если необходимо произнести баланс клиента или для озвучивания прочих голосовых сообщений. О том, как настроить TTS в FreePBX 13 с помощью командной строки Asterisk расскажем в статье.


Встроенный TTS

В FreePBX предусмотрен встроенный движок для TTS, который носит название filte. Движок хорошо отрабатывает английскую речь, но не умеет работать с русской. Вкратце ознакомимся с его настройкой. Тут все достаточно тривиально, переходим в Applications -> Text to Speech

Настройка модуля TTS в FreePBX 13
  • Name - дайте имя для TTS механизма
  • Text - укажите произносимый системой набор слов
  • Choose an Engine - выберите движок для воспроизведения. По умолчанию, единственным доступным является filte
  • Destination - куда будет отправлен звонок, после проговаривания фразы указанной в поле Text

На этом этапе система произнесет набор слов по-английски. Писать методом транслитерации – плохая идея. Движок конечно произнесет указанные слова, но это вряд ли можно будет отправить в «продакшн». Итак, как же бесплатно настроить русскоговорящий TTS в FreePBX? Легко, с помощью системы синтеза речи festival


Русский язык FreePBX Festival

Установку будем производить на примере последней сборки FreePBX Distro на базе CentOS 6. Переходим к установке. Скачиваем исходные файлы

cd /usr/src
wget http://www.cstr.ed.ac.uk/downloads/festival/2.1/speech_tools-2.1-release.tar.gz
wget http://www.cstr.ed.ac.uk/downloads/festival/2.1/festival-2.1-release.tar.gz

Распаковываем архивы и инсталлируем необходимые файлы

tar zxvf festival-2.1-release.tar.gz
tar zxvf speech_tools-2.1-release.tar.gz
cd speech_tools
./configure
make
make install
cd ..
cd festival
./configure
 make
make install
Система может потребовать установить пакет ncurses-devel. Сделайте это с помощью команды yum install ncurses-devel

Создаем переменную PATH, которая описывает путь до исполняемых файлов в директории festival/bin/

export PATH=$PATH:/usr/src/festival/bin/

Создадим директорию для хранения русскоязычных файлов. Для этого, последовательно в директории festival/lib/ создадим папки /voices и /russian:

mkdir /usr/src/festival/lib/voices/
mkdir /usr/src/festival/lib/voices/russian/

Скачиваем русскоязычный бандл:

wget http://sourceforge.net/projects/festlang.berlios/files/msu_ru_nsh_clunits-0.5.tar.bz2

Далее, распаковываем скачанный архив в созданную директорию:

tar xjf msu_ru_nsh_clunits-0.5.tar.bz2 -C ./festival/lib/voices/russian

Открываем через редактор vim файл /usr/src/festival/lib/languages.scm

vim /usr/src/festival/lib/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)
) 

В файле находим строки указанные ниже:

(language_british_english))
  ((equal? language 'british_english)

После указанных выше строк, добавляем следующее:

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

Далее открываем файл /usr/src/festival/lib/siteinit.scm и в самый конец добавляем строку ниже:

(set! voice_default 'voice_msu_ru_nsh_clunits)

Создаем кэш – директорию. Для этого, скопируйте команду ниже:

mkdir /var/lib/asterisk/festivalcache/ && chown asterisk:asterisk /var/lib/asterisk/festivalcache/

Открываем файл /etc/asterisk/festival.conf и добавляем следующие строки:

[main]
host=localhost
port=1314
usecache=yes
cachedir=/var/lib/asterisk/festivalcache/  \созданный выше файл
festivalcommand=(tts_textasterisk "%s" 'file)(quit)

Запускаем сервер festival

festival --server

Если все успешно, то вы увидите строки ниже:

 [pbx@localhost ~]#festival --server
server    Fri Aug 12 13:00:32 2016 : Festival server started on port 1314

Приступаем к тестам. Открываем файл /etc/asterisk/extensions_custom.conf и создаем тестовый диал – план как указано ниже:

[festival]
exten => s,1,Answer
exten => s,n,Festival('Привет. Все. работает.')
exten => s,n,Hangup

Сохраняем изменения. Для того, чтобы настроить воспроизведение из графического интерфейса FreePBX мы воспользуемся модулем Custom Destinations. Для его настройки перейдите во вкладку Admin -> Custom Destinations . Нажимаем на кнопку Add Destination

Custom Destionations в FreePBX 13

Разберем каждую из опций:

  • Target - укажите здесь festival,s,1, согласно созданному ранее диал-плану. Синтаксис заполнения следующий - [имя_контекста],[экстеншен],[приоритет]
  • Description - описание создаваемого правила
  • Notes - заметки. Если вы создаете много подобных правил, советуем создавать подробные заметки, чтобы избежать дальнейшей путаницы.
  • Return - если ваш контекст заканчивается командой Return (команда возвращает вызов в родительский контекст), то в поле Destination укажите назначение для вызова после отработки TTS.

По окончанию настроек нажмите Submit и затем Apply Config.

Теперь необходимо настроить маршрутизацию на кастомный контекст, который мы только что создали в FreePBX. Например, можно настроить маршрутизацию из IVR меню по нажатию цифры 5 на телефоне, как указано ниже:

Маршрутизация на Text to Speech FreePBX 13

Звоним на IVR и нажимаем 5 и слышим синтезированный голос. Параллельно смотрим на запущенный через CLI сервер Festival:

client(1) Fri Aug 12 13:00:54 2016 : accepted from localhost
client(1) Fri Aug 12 13:01:04 2016 : disconnected
client(2) Fri Aug 12 13:01:20 2016 : accepted from localhost
client(2) Fri Aug 12 13:01:20 2016 : disconnected

Google TTS в FreePBX

Еще пару лет назад можно было бы легко воспользоваться Google TTS для синтеза речи. Для этого надо было добавить движок во вкладке Settings -> Text To Speech Engines и отредактировать файл /var/lib/asterisk/agi-bin/propolys-tts.agi. Но, к сожалению, Google начал использовать капчу, чем перекрыл автоматизированный и бесплатный доступ к своему сервису.

Дополнительно про настройку TTS от Festival вы можете прочитать здесь.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59