Микросервис управления задачами предназначен для создания и мониторинга задач оценки произношения слов, содержащихся в аудиофайле.
Микросервис на фоне организует пайплайн, который выполняет обработку аудиофайла, и оценивает произношение прочитанных на запись текстов. Пайплайн состоит из трёх этапов:
- Предобработка - процесс, при котором аудиофайл подготавливается к обработке нейросетью, изменяя свои свойства.
- Транскрибирование - процесс, при котором из аудифайла программными методами извлекается транскрипция речи при помощи нейросети.
- Оценка - процесс, при котором фактический результат транскрибирования сравнивается с эталонным, на основе чего выводятся ошибки произношения фонем, а также общая точность произношения.
- Листинг задач пользователя;
- Детальная информация по конкретной задаче пользователя;
- Создание задач на транскрибирование аудиофайлов пользователя;
- Стриминг состояния выполнения задачи пользователя.
- Язык программирования: 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, если эта функция включена при помощи специальной переменной среды.
| Переменная | Значимость | Описание | Тип данных | Стандартное значение |
|---|---|---|---|---|
| MANAGER_GRAYLOG_ENABLE | Опционально | Флаг отправки логов в Graylog. | BOOL | False |
| MANAGER_GRAYLOG_HOST | Опционально | Адрес развернутого Graylog. Может быть заглушкой. | STRING | localhost |
| MANAGER_GRAYLOG_PORT | Опционально | Порт развернутого Graylog. Может быть заглушкой. | STRING | 12201 |
Для удобства локальной разработки микросервиса следуйте этим рекомендациям.
Перед началом работы убедитесь, что все зависимости установлены. Или установите, если предыдущее условие ложно.
При разработке сервиса используется менеджер зависимостей Poetry.
pip install poetrypoetry config virtualenvs.in-project true
poetry install --no-rootДалее выберете виртуальную среду Poetry как основную для проекта.
Создайте файл .env и сконфигурируйте переменные огружения, согласно главе конфигурация.
В контексте локальной разработки необходимо задать только обязательные переменные среды. Опциональную переменную MANAGER_DEBUG_MODE рекомендуется перевести в значение True.
Вероятнее всего подготовленный экземпляр PGSQL содержит в себе пустую базу данных (схему), необходимую для работы сервиса. В таком случае необходимо применить миграции Alembic:
alembic upgrade headAlembic самостоятельно создаст все нужные таблицы, применяя к ним последние изменения по ходу разработки.
Теперь все готово к запуску!
python start.py
Для развертывания микросервиса в production-среде следуйте инструкциям, описанным в этом репозитории.
Сервис аутентификации в инфраструктуре ILPS будет развернут автоматически посредством docker-compose.
Процессы установки зависимостей и применения миграций автоматизированны при сборке Docker контейнера.
Этот проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).