Интеграция Asterisk и RHVoice
В последнее время всё больше набирают популярность системы синтеза речи, интегрированные с Asterisk. Их можно использовать на разных этапах маршрутизации: например в голосовом меню, в очередях. Также их используют в голосовых ботах и системах автоматического обзвона. RHVoice – бесплатная кроссплатформенная система синтеза речи, которая поддерживает множество языков. Она разработана на движке Ольги Яковлевой. У данной […]
В последнее время всё больше набирают популярность системы синтеза речи, интегрированные с Asterisk. Их можно использовать на разных этапах маршрутизации: например в голосовом меню, в очередях. Также их используют в голосовых ботах и системах автоматического обзвона.
RHVoice – бесплатная кроссплатформенная система синтеза речи, которая поддерживает множество языков. Она разработана на движке Ольги Яковлевой. У данной системы открытый исходный код.
В данной статье рассмотрим возможность интеграции RHVoice с Asterisk. Также покажем пример работы в связке с умной маршрутизацией входящих вызовов.
Шаг 1. Установка зависимостей
Если ранее на Вашем сервере не было данных зависимостей, установим их с помощью команд ниже.
- GCC – совокупность компиляторов для ряда языков программирования. Среди таких яызков, например, Java, Си, C++ и другие.
Для установки GCC в CentOS введём команду:
yum install gcc
- SCons – ПО для сборки, созданный в качестве замены для make. Сборка RHVoice происходит именно через SCons.
Для установки SCons введём команду:
yum install scons
- PKG-Config – программа, которая опрашивает все установленные библиотеки при компиляции ПО, что позволяет писать код без знания полного пути к каждой из этих библиотек.
Для установки PKG-Config введём команду:
yum install pkgconfig
Далее нужно убедиться, что в системе установлено хотя бы одно из ниже перечисленных приложений, отвечающих за вывод звука:
— PulseAudio;
— Libao;
— PortAudio V19.
В качестве примера рассмотрим установку PulseAudio.
Шаг 2. Установка PulseAudio
Для установки приложения введём команду:
yum install pulseaudio
Также установим пакеты библиотек разработчика. Для этого введём команды:
yum install pulseaudio-libs
yum install pulseaudio-libs-devel
Далее перейдём к компиляции системы синтеза речи.
Шаг 3. Компиляция и установка
Для компиляции нам потребуется архив с исходным кодом RHVoice. Его можно скачать по данной ссылке.
Затем удобным способом помещаем его на сервер телефонии и разархивируем его командой
unzip RHVoice-master.zip
После того, как произошла разархивация, переходим в появившуюся папку и начинаем компиляцию. Для этого вводим команду:
scons
Для решения данной ошибки выполним следующие действия:
— Перейдём в файл SConstruct (в корне папки RHVoice-master);
— Находим нужную строку ‘env.AppendUnique(CXXFLAGS= [«-std=c++03»])’;
— Заменяем ‘-std=c++03’ на ‘-std=c++11’.
Если до этого были установлены все зависимости, то после текущих правок компиляция завершится удачно.
Далее приступаем к установке.
scons install
После успешной установки делаем ldconfig и проверяем работу командой:
echo test | LD_LIBRARY_PATH=/usr/local/lib RHVoice-test
Шаг 4. Подготовка на стороне сервера телефонии
Создадим директорию для хранения файлов, которые будут проигрываться клиенту. Для этого введём команду:
mkdir /var/lib/asterisk/sounds/ru/custom/rhv_playback
Также не забываем дать новой директории права на исполнение asterisk.
chown asterisk-asterisk /var/lib/asterisk/sounds/ru/custom/rhv_playback -R
Поэтому переходим в /usr/local/bin создаём скрипт для конвертации созданных записей – rhvoice_synthesis.sh .
#!/bin/bash
NAME=$2
TEXT="Приветствую Вас, $NAME ! Пожалуйста, оставайтесь на линии. Соединяем Вас с Вашим менеджером."
VOICE=anna
RATE=8000
FILENAME=$1
PATH_TO_RH=/usr/local/bin/RHVoice-test
PATH_TO_PLAY=/var/lib/asterisk/sounds/ru/custom/rhv_playback
PATH_TO_SOX=/usr/bin/sox
echo "$TEXT" | LD_LIBRARY_PATH=/usr/local/lib $PATH_TO_RH -p $VOICE -o "$PATH_TO_PLAY/temp_$FILENAME.wav"
if [ -f "$PATH_TO_PLAY/temp_$FILENAME.wav" ]; then
$PATH_TO_SOX "$PATH_TO_PLAY/temp_$FILENAME.wav" -r $RATE -c1 -s "$PATH_TO_PLAY/$FILENAME.wav"
rm -f $PATH_TO_PLAY/temp_$FILENAME.wav
fi
В данный скрипт передаём имя звонящего. Также здесь прописываем текст, который будет воспроизведён, указываем нужный голос, нужное количество Гц, имя файла и все необходимые пути. Затем запускаем RHVoice, записываем текст в аудиофайл и производим его конвертацию с помощью sox. Затем удаляем исходный аудиофайл.
Далее перейдём к подготовке диалплана и ODBC. Посмотреть, как сделать VIP-маршрутизацию, можно здесь.
Однако, в CDR не всегда есть имя звонящего. Поэтому сделаем отдельную таблицу соответствия номер -> имя.
Создать такую таблицу и настроить с ней взаимодействие можно на примере статьи: «Взаимодействие Festival и базы данных с помощью модуля func_odbc».
Перейдём в диалплан и в нужном контексте пропишем:
exten => s,1,Answer()
same => n,Set(NAME=${ODBC_RHV(${CALLERID(num)})})
same => n,Set(RHV_FILE=${CALLERID(num)}_${EPOCH})
same => n,System(/usr/local/bin/rhvoice_synthesis.sh ${RHV_FILE} "${NAME}")
same => n,Playback(custom/rhv_playback/${RHV_FILE})
same => n,System(rm -f /var/lib/asterisk/sounds/ru/custom/rhv_playback/${RHV_FILE}.wav)
Подробнее рассмотрим описанный диалплан. Передаём в ODBC номер звонящего и получаем его имя. Затем формируем название аудиофайла, который будет проигран клиенту. Передаём имя звонящего в скрипт конвертации, затем проигрываем сконвертированный аудиофайл клиенту. После этого удаляем файл.
Теперь совершим звонов (в примере звоним на номер 0000) и проверяем работу. Как видно из скриншота ниже, диалплан отработал корректно. Также при тестовом звонке будет слышно воспроизведение имени.
На этом статья по интеграции Asterisk с RHVoice завершена.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.