[BACK-AI-03] Разработка FastAPI-шлюза для распознавания речи через модель Whisper

ИИ-компоненты (AI Service)

Published

October 14, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: ai_voice_stt_gateway.
  • Язык: Python 3.10+ (FastAPI, Pydantic, Requests).
  • Тип задачи: Backend (Речевые ИИ-интеграции).
  • Статус: Готово к реализации

Описание задачи

Необходимо реализовать специализированный микросервис-шлюз на FastAPI, который принимает от основного Go-сервиса бинарные аудиоданные (потоковый буфер микрофона или .wav файлы), упакованные в Base64 внутри массива, проксирует их в API локальной нейросети Ollama (whisper-base) и возвращает структурированный текстовый лог распознавания.

Инструкция по шагам (Python)

  1. Создание доменной модели запроса: Реализовать Pydantic-модель VoiceRequest. Переменная images переиспользуется как контейнер для передачи строки аудиофайла в формате Base64 (в соответствии с контрактом Ollama API). Значения по умолчанию зафиксировать: model: "whisper-base", prompt: "Распознай русскую речь из аудио.".
  2. Маршрутизация и инференс: Настроить POST-эндпоинт /api/generate, формирующий JSON-payload для отправки в локальную Ollama по адресу из переменной OLLAMA_HOST.
  3. Ограничение времени выполнения (Timeout): Так как модель Whisper на CPU работает значительно быстрее тяжелых Vision-моделей, выставить строгий таймаут в 20 секунд (timeout=20).
  4. Безопасная обработка сбоев инференса (Graceful Error Handling):
    • В случае перегрузки очереди или получения некорректного статус-кода от Ollama (не 200), перехватывать событие и возвращать JSON-строку: {"text": "Ошибка: ИИ перегружен"}.
    • При возникновении сетевых исключений или таймаута внутри блока except Exception, логировать критическую ошибку в logger.error и отдавать структуру: {"text": "Ошибка: превышено время ожидания расшифровки"}.