Описание технической архитектуры.

Программное обеспечение разработано по принципу микросервисной архитектуры. Проект использует единый репозиторий, содержащий вспомогательные модули и модули приложений.


Функциональные модули:

  • 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.