Синтез и распознавание речи средствами модуля STT Tinkoff
В одной из ранее описанных статей рассматривались методы синтеза и распознавания речи такими сервисами как: Yandex Speech (https://voxlink.ru/kb/asterisk-configuration/speechkit-asterisk/), Wit.ai (https://voxlink.ru/kb/asterisk-configuration/raspoznavanie-rechi-v-asterisk/), Google Speech (https://voxlink.ru/kb/asterisk-configuration/sintez-rechi-v-asterisk-s-pomoshhju-google-translate/). В рамках данной статьи будет показано как настроить и использовать функционал сервиса STT/TTS Tinkoff. 1. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы (Windows, Linux, MacOS), […]
В одной из ранее описанных статей рассматривались методы синтеза и распознавания речи такими сервисами как:
- Yandex Speech (https://voxlink.ru/kb/asterisk-configuration/speechkit-asterisk/),
- Wit.ai (https://voxlink.ru/kb/asterisk-configuration/raspoznavanie-rechi-v-asterisk/),
- Google Speech (https://voxlink.ru/kb/asterisk-configuration/sintez-rechi-v-asterisk-s-pomoshhju-google-translate/).
В рамках данной статьи будет показано как настроить и использовать функционал сервиса STT/TTS Tinkoff.
1. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы (Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
2. Приступим к скачиванию исходного кода модуля Tinkoff STT/TTS и установке дополнительных зависимостей. Для этого выполним ряд команд вида:
# cd /usr/src/ # git clone https://github.com/TinkoffCreditSystems/asterisk-voicekit-modules.git # cd /usr/src/asterisk-voicekit-modules/asterisk_modules/ # yum install libtool opus-devel # ./bootstrap
3. Выполним сборку и установку приложения grpcsttbackground:
# cd /usr/src/asterisk-voicekit-modules/asterisk_modules/app_grpcsttbackground # ./configure # make # make install-strip
4. Выполним сборку и установку приложения app_playbackground
# cd /usr/src/asterisk-voicekit-modules/asterisk_modules/app_playbackground # ./configure # make # make install
5. Выполним сборку и установку приложения app_waitevent
# cd /usr/src/asterisk-voicekit-modules/asterisk_modules/app_waitevent # ./configure # make # make install
6. Выполним сборку и установку приложения func_gettimensec
# cd /usr/src/asterisk-voicekit-modules/asterisk_modules/func_gettimensec # ./configure # make # make install
7. Создадим и настроим конфигурационные файлы модуля Tinkoff STT/TTS
# cp -vr /usr/src/asterisk-voicekit-modules/examples/combined/combined_stt_tts/etc/asterisk/grpc*.conf /etc/asterisk/ # nano /etc/asterisk/grpcstt.conf
ключевые параметры для редактирования:
endpoint – доменное имя stt.tinkoff.ru
api_key – API ключ
# nano /etc/asterisk/grpctts.conf
ключевые параметры для редактирования:
endpoint – доменное имя tts.tinkoff.ru
api_key – API ключ
secret_key – ключ авторизации
8. Копируем собранные модули в директорию модулей Asterisk и подключим их
# cp -vr /usr/local/lib/asterisk/modules/* /lib64/asterisk/modules/ # asterisk -rx "module load app_grpcsttbackground.so" # asterisk -rx "module load app_playbackground.so" # asterisk -rx "module load app_waitevent.so" # asterisk -rx "module load func_gettimensec.so
9. Рассмотрим простой пример использования модуля Tinkoff STT/TTS для маршрутизации на сотрудника по названному имени. Для написания маршрута будем пользоваться официальным образцом написанном на языке расширения Asterisk AEL:
# nano /etc/asterisk/extensions.ael context from-internal-custom { 999 => { Answer(); WaitEventInit(); // Инициализация очереди событий PlayBackgroundInitGRPCTTS(); // Инициализация модуля синтеза речи GRPCSTTBackground(); // Инициализация модуля распознования речи PlayBackground(say,,{"text":"здравствуйте, назовите имя сотрудника с которым хотели бы поговорить"}); // Текст приветствия для озвучивания Set(PHASE=WAIT_FOR_ALIAS); Set(CALL_END_TIME=$[${GET_TIME_NSEC(MONOTONIC)} + 60]); // Установка времени завершения обработки события на минуту больше Set(SLEEP_TIME=$[${CALL_END_TIME} - ${GET_TIME_NSEC(MONOTONIC)}]); // Расчет максимального времени ожидания while (${SLEEP_TIME} > 0) { // Сравнение с временем ожидания WaitEvent(${SLEEP_TIME}); // Ожидания события if (${WAITEVENTSTATUS} == SUCCESS) { switch (${WAITEVENTNAME}) { case GRPCSTT_UTF8: switch (${PHASE}) { case WAIT_FOR_ALIAS: Set(PET_ALIAS=${JSONELEMENT(WAITEVENTBODY,alternatives/0/transcript)}); // Получения распознанного текста из JSON массива Log(NOTICE,Pet alias is ${PET_ALIAS}); PlayBackground(say,,{"text":"Имя сотрудника с которым Вы будете соеденены ${PET_ALIAS}"}); // Озвучивание теста с полеченным именем сотрудника Set(PHASE=OFFER); Set(CALL_END_TIME=$[${GET_TIME_NSEC(MONOTONIC)} + 30]); switch (${PET_ALIAS}) { case кирилл: goto from-internal|101|1; // Вызов 101 если PET_ALIAS равно «кирилл» break; case дмитрий: goto from-internal|102|1; // Вызов 102 если PET_ALIAS равно «дмитрий» break; } break; case OFFER: Set(PHASE=EXITING); Set(CALL_END_TIME=$[${GET_TIME_NSEC(MONOTONIC)} + 0.2]); break; default: } break; default: } } Set(SLEEP_TIME=$[${CALL_END_TIME} - ${GET_TIME_NSEC(MONOTONIC)}]); // Обновление максимального времени ожидания } Hangup(); } };
Остались вопросы?
Я - Кондрашин Игорь, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.