Skip to content

💼 Менеджер задач по обработке аудио в инфраструктуре ILPS

License

Notifications You must be signed in to change notification settings

FEFU-ILPS/service-task-manager

Repository files navigation

SERVICE-TASK-MANAGER


Оглавление

  1. Назначение
  2. Функциональность
  3. Технологии
  4. Конфигурация
  5. Локальная разработка
  6. Развертывание
  7. Лицензия

Назначение

Микросервис управления задачами предназначен для создания и мониторинга задач оценки произношения слов, содержащихся в аудиофайле.

Микросервис на фоне организует пайплайн, который выполняет обработку аудиофайла, и оценивает произношение прочитанных на запись текстов. Пайплайн состоит из трёх этапов:

  • Предобработка - процесс, при котором аудиофайл подготавливается к обработке нейросетью, изменяя свои свойства.
  • Транскрибирование - процесс, при котором из аудифайла программными методами извлекается транскрипция речи при помощи нейросети.
  • Оценка - процесс, при котором фактический результат транскрибирования сравнивается с эталонным, на основе чего выводятся ошибки произношения фонем, а также общая точность произношения.

Функциональность

  • Листинг задач пользователя;
  • Детальная информация по конкретной задаче пользователя;
  • Создание задач на транскрибирование аудиофайлов пользователя;
  • Стриминг состояния выполнения задачи пользователя.

Технологии

  • Язык программирования: Python
  • Фреймворк: FastAPI
  • База данных: PostgreSQL + SQLAlchemy (asyncpg)
  • Протоколы: HTTP + SSE

Конфигурация

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

touch .env

Если вы используете VSCode, не забудьте перезагрузить окно проекта, чтобы применить изменения в .env к вашему окружению.
Или используйте следующую команду:

export $(cat .env)

Пример того, как можно заполнить файл .env, содержится в файле .env.example.

Ниже приведены таблицы, содержащие описание основных параметров, которые необходимо настроить для работы сервиса.

Настройки общего характера

Переменная Значимость Описание Тип данных Стандартное значение
MANAGER_DEBUG_MODE Опционально Флаг запуска микросервиса в режиме отладки. BOOL True
MANAGER_SERVICE_NAME Опционально Имя микросервиса. Рекомендуется вообще не трогать. STRING ilps-service-task-manager

Настройки базы данных

Перед тем как конфигурировать данные, по которым микросервис будет подключаться к экземпляру PGSQL, убедитесь, что PGSQL содержит в себе ранее созданного пользователя и базу данных (схему), согласно стандарным значениями переменных таблицы. Стандартные значения являются рекомендательными.

Переменная Значимость Описание Тип данных Стандартное значение
MANAGER_DB_POSTGRES_PASSWORD Обязательно Пароль пользователя PGSQL. STRING
MANAGER_DB_POSTGRES_HOST Обязательно Адрес хоста с развернутым PGSQL. STRING
MANAGER_DB_POSTGRES_USER Опционально Имя пользователя PGSQL. STRING service_task_manager
MANAGER_DB_POSTGRES_NAME Опционально Имя базы данных (схемы) PGSQL. STRING tasks
MANAGER_DB_POSTGRES_PORT Опционально Порт хоста с развернутым PGSQL. INTEGER 5432

Настройки связанных сервисов

Так как task-manager выступает центром управления, на котором завязаны все сервисы обработки аудио, необходимо указать, куда нужно обращаться (на какой микросервис) при получении запроса на создание задачи транскрибирования. Для каждого сервиса конфигурируется отдельная группа настроек по следующему принципу:

Переменная Значимость Описание Тип данных Стандартное значение
MANAGER_SERVICE_{service_prefix}_HOST Обязательно Адрес развернутого сервиса. STRING
MANAGER_SERVICE_{service_prefix}_PORT Обязательно Порт развернутого сервиса. INTEGER
MANAGER_SERVICE_{service_prefix}_PROTOCOL Опционально Протокол для обращения к сервису. STRING http

Где {service_prefix} - это шаблон, вместо котого необходимо вставить префикс сервиса из числа доступных:

  • PREPROCESSING - Сервис предобработки аудиофайлов.
  • TRANSCRIBING - Сервис транскрибирования аудиофайлов.
  • FEEDBACK - Сервис оценки произношения.

Настройки Graylog

Сервис поддерживает отправку логов в Graylog, если эта функция включена при помощи специальной переменной среды.

Переменная Значимость Описание Тип данных Стандартное значение
MANAGER_GRAYLOG_ENABLE Опционально Флаг отправки логов в Graylog. BOOL False
MANAGER_GRAYLOG_HOST Опционально Адрес развернутого Graylog. Может быть заглушкой. STRING localhost
MANAGER_GRAYLOG_PORT Опционально Порт развернутого Graylog. Может быть заглушкой. STRING 12201

Локальная разработка

Для удобства локальной разработки микросервиса следуйте этим рекомендациям.

Установка зависимостей

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

pip install poetry
poetry config virtualenvs.in-project true
poetry install --no-root

Далее выберете виртуальную среду Poetry как основную для проекта.

Переменные окружения

Создайте файл .env и сконфигурируйте переменные огружения, согласно главе конфигурация.
В контексте локальной разработки необходимо задать только обязательные переменные среды. Опциональную переменную MANAGER_DEBUG_MODE рекомендуется перевести в значение True.

Подготовка базы данных

Вероятнее всего подготовленный экземпляр PGSQL содержит в себе пустую базу данных (схему), необходимую для работы сервиса. В таком случае необходимо применить миграции Alembic:

alembic upgrade head

Alembic самостоятельно создаст все нужные таблицы, применяя к ним последние изменения по ходу разработки.

Запуск

Теперь все готово к запуску!

python start.py

Развертывание

Для развертывания микросервиса в production-среде следуйте инструкциям, описанным в этом репозитории.
Сервис аутентификации в инфраструктуре ILPS будет развернут автоматически посредством docker-compose.

Процессы установки зависимостей и применения миграций автоматизированны при сборке Docker контейнера.

Лицензия

Этот проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).

About

💼 Менеджер задач по обработке аудио в инфраструктуре ILPS

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published