Технология TTS (преобразование текста в речь) используется для преобразования текстовой информации в голосовую. Проще говоря, напишите: система говорит. В системах телефонии эта технология может быть полезна, если вам нужно озвучить баланс клиента или озвучить другие голосовые сообщения. Как настроить TTS в FreePBX 13 с помощью командной строки Asterisk мы расскажем в статье.
ВСТРОЕННЫЙ TTS
FreePBX имеет встроенный механизм TTS, называемый фильтром. Движок хорошо работает для английской речи, но не умеет работать с русской. Давайте кратко рассмотрим его настройки. Здесь все достаточно тривиально, заходим в Приложения -> Преобразование текста в речь

РУССКИЙ ЯЗЫК FREEPBX FESTIVAL
Установку будем производить на примере последней сборки FreePBX Distro на базе CentOS 6. Переходим к установке. Скачиваем исходные файлы
Создаем переменную 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/
Скачиваем русскоязычный бандл:
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
В самом начале файла вставляем следующие строки:

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

Звоним на IVR и нажимаем 5 и слышим синтезированный голос. Параллельно смотрим на запущенный через CLI сервер Festival:
Еще пару лет назад можно было бы легко воспользоваться Google TTS для синтеза речи. Для этого надо было добавить движок во вкладке Settings -> Text To Speech Engines и отредактировать файл /var/lib/asterisk/agi-bin/propolys-tts.agi. Но, к сожалению, Google начал использовать капчу, чем перекрыл автоматизированный и бесплатный доступ к своему сервису.
ВСТРОЕННЫЙ TTS
FreePBX имеет встроенный механизм TTS, называемый фильтром. Движок хорошо работает для английской речи, но не умеет работать с русской. Давайте кратко рассмотрим его настройки. Здесь все достаточно тривиально, заходим в Приложения -> Преобразование текста в речь

- Name - дайте имя для TTS механизма
- Text - укажите произносимый системой набор слов
- Choose an Engine - выберите движок для воспроизведения. По умолчанию, единственным доступным является filte
- Destination - куда будет отправлен звонок, после проговаривания фразы указанной в поле Text
РУССКИЙ ЯЗЫК FREEPBX FESTIVAL
Установку будем производить на примере последней сборки FreePBX Distro на базе CentOS 6. Переходим к установке. Скачиваем исходные файлы
Распаковываем архивы и инсталлируем необходимые файлыcd /usr/src
wget Для просмотра ссылки необходимо: Войтиили Регистрация
wget Для просмотра ссылки необходимо: Войтиили Регистрация
*Система может потребовать установить пакет ncurses-devel. Сделайте это с помощью команды yum install ncurses-develtar 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
Создаем переменную 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 Для просмотра ссылки необходимо: Войтиили Регистрация
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)
Далее открываем файл /usr/src/festival/lib/siteinit.scm и в самый конец добавляем строку ниже:(language_russian))
((equal? language 'russian)
Создаем кэш – директорию. Для этого, скопируйте команду ниже:(set! voice_default 'voice_msu_ru_nsh_clunits)
Открываем файл /etc/asterisk/festival.conf и добавляем следующие строки:mkdir /var/lib/asterisk/festivalcache/ && chown asterisk:asterisk /var/lib/asterisk/festivalcache/
Запускаем сервер festival[main]
host=localhost
port=1314
usecache=yes
cachedir=/var/lib/asterisk/festivalcache/ \\созданный выше файл
festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
Если все успешно, то вы увидите строки ниже:festival --server
Приступаем к тестам. Открываем файл /etc/asterisk/extensions_custom.conf и создаем тестовый диал – план как указано ниже:festival --server
server Fri Aug 12 13:00:32 2016 : Festival server started on port 1314
Сохраняем изменения. Для того, чтобы настроить воспроизведение из графического интерфейса FreePBX мы воспользуемся модулем Custom Destinations. Для его настройки перейдите во вкладку Admin -> Custom Destinations . Нажимаем на кнопку Add Destination[festival]
exten => s,1,Answer
exten => s,n,Festival('Привет. Все. работает.')
exten => s,n,Hangup

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

Звоним на IVR и нажимаем 5 и слышим синтезированный голос. Параллельно смотрим на запущенный через CLI сервер Festival:
GOOGLE TTS В FREEPBXclient(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 для синтеза речи. Для этого надо было добавить движок во вкладке Settings -> Text To Speech Engines и отредактировать файл /var/lib/asterisk/agi-bin/propolys-tts.agi. Но, к сожалению, Google начал использовать капчу, чем перекрыл автоматизированный и бесплатный доступ к своему сервису.