Описание технической архитектуры.
Программное обеспечение разработано по принципу микросервисной архитектуры. Проект использует единый репозиторий, содержащий вспомогательные модули и модули приложений.
Функциональные модули:
- Voisi-lib - общие элементы для работы с данными / утилитные элементы
- обработка аудиоданных
- обработка текстовых данных речевой аналитики
- обработка скриптов разговоров
- общетехнические элементы (http запросы, работа с процессами ОС и тп)
Самостоятельным приложением не является.
- Voisi-lib-pg - общие элементы для работы с БД postgres
- формирование запросов к БД
- миграция БД
Самостоятельным приложением не является.
- Voisi-lib-server - общие элементы для реализации веб-сервера
- обертка для open-source сервера Jetty
- конфигурация подсистемы логгирования
- обертка для open-source библиотека Spring MVC
- элементы подсистемы аутентификации
Самостоятельным приложением не является.
- Voisi-lib-test - общая библиотека для поддержки тестирования
Самостоятельным приложением не является.
- Voisi-lib-test-pg - общая библиотека для поддержки тестирования с использованием БД
Самостоятельным приложением не является.
- Voisi-lib-vaadin - общая библиотека для построения графического интерфейса пользователя на основе open-source библиотеки Vaadin
Самостоятельным приложением не является.
- Voisi-react-component - общая библиотека для построения графического интерфейса пользователя на основе open-source фреймворка react
Самостоятельным приложением не является.
- Vsa-ci - вспомогательные скрипты / модули для разработки / сборки продукта
Самостоятельным приложением не является.
- Vsa-integrations - вспомогательные скрипты / модули для интеграции с системами клиентов
Самостоятельным приложением не является.
- Voisi-vlm-server - сервер биллинга и лицензий, в разработке
Завершенным приложением не является.
- Voisi-vtd-server - сервер для демонстрации технологий распознавания речи / голосовой идентификации
Является независимым приложением.
- Voisi-vsa-server - основной сервер приложения Voisi - обработка голосовых данных / речевая аналитики / представление данных в пользовательском интерфейсе в веб-браузерах
Является независимым приложением.
Структура приложения.
Приложение, как продукт, является единой сборкой, в которой можно выделить функциональные слои и модули внутри каждого слоя.
1.1 Элементы доступа к БД Postgres, реализованные через open-source библиотеку mybatis.
1.2 Библиотека доступа к БД elasticsearch через HTTP протокол.
2.1 Алгоритмы / элементы, реализующие импорт данных клиента и взаимодействие с системами преобразования речи в текст.
2.2 Функции поиска данных в базах данных, фильтрации, подготовки для отображения в интерфейсе пользователя.
2.3 Функции агрегации данных в базах данных, подготовки для отображения в интерфейсе пользователя.
2.4 Функции подготовки данных и формирования файлов для скачивания пользователем.
2.5 Функции повторной обработки данных для применения изменений настроек продукта.
2.6 Миграция данных от старой версии к новой для учета изменений в продукте.
2.7 Конфигурация и настройка системы обработки данных под сценарии пользователя (проекты, ключевые слова, скрипты разговоров, поиск повторных звонков).
2.8 Обработка аудио (получение биометрических данных, получение расшифровки разговора, изменение формата аудио).
3.1 Реализация доступа к серверу со стороны пользовательского интерфейса построенного на фреймворке React посредством HTTP протокола.
3.2 Реализация модулей импорта метаданных о звонках из подсистем клиентов.
3.3 Реализация интерфейса пользователя с использованием фреймворка Vaadin.
3.4 Реализация интерфейса пользователя с использованием фреймворка React.
Сервисы проекта.
Общий алгоритм обработки файлов:
- Сервер получает файл, помещает его во временный каталог и отдает ответ 200 ОК.
- ExecutorServiceFactoryImplюScheduledExecutorService запускается и через scJobManagementService помещает в очередь, маркирует как "к исполнению" (markJobAsScheduled).
- Запускает обработчики processPendingAudioJobs(); processPendingTextJobs.
- После записи результатов работы отмечает в очереди задач через REST API в балансере результат работы.
Агенты, получив задание, запускает обработчик (распознавание голоса) и записывает в elasticsearch результаты.
Учет заданий ведется в postgres таблица scJob.
Сервисы:
- Voisi-vsa-server - главная точка входа в сервис VOISI. Через сервер осуществляется доступ интерфейсной части.
Сервис занимается:
- обработкой входящих http запросов;
- получением звуковых файлов;
- учетом метаданных;
- запуском заданий обработки медиафайлов;
- анализом метаданных;
- генерацией отчетов по проделанной работе (звонки, аналитика).
Метаданные могут быть учтены плагинами, наследующим класс CallMetaDataService. Метаданные, связанные со звонком, помещаются в elasticsearch и используются для генерации отчета.
- Voisi-vsa-balancer.
Балансер имплементирует MVC (Model, Controller, View) концепт для доступа к данным заданий по REST API в классе JobController.
- Voici-sid-agent
- Voisi-vsa-agent - конечный обработчик проектных голосовых файлов.
Сервис предназначен для распознавания речи и складирования результатов распознавания в elastic search
Алгоритм работы:
- JobSchedulerService получает задачу
- RecordProcessingService
- SourceMediaSplitService
- asr processor
Сервис получает задание.
Скачивает из callbackUrl запроса (сервер) аудиофайл (vsaServerService.getSource(jobGlobalId, callbackUrl, source, vsaServerAuthToken).
После подготовки аудиофайла запускает процесс распознавания asr_kaldi_processor.py через exec вызов.
из stdout получает результат работы.
По завершению работы через REST API проставляет результат работы в balancer сервисе.
В заключении входной преобразованный файл преобразуется для хранения в ogg файл.
- Voisi-videograbber-agent.
- Voisi-pbx-agent.
- Voisi-lib-server.
- Voisi-lib-pg.
- Voisi-lib.