[BACK-AI-03] Разработка FastAPI-шлюза для распознавания речи через модель Whisper
ИИ-компоненты (AI Service)
NoteКраткая карточка задачи
- Репозиторий / Компонент:
ai_voice_stt_gateway. - Язык: Python 3.10+ (FastAPI, Pydantic, Requests).
- Тип задачи: Backend (Речевые ИИ-интеграции).
- Статус: Готово к реализации
Описание задачи
Необходимо реализовать специализированный микросервис-шлюз на FastAPI, который принимает от основного Go-сервиса бинарные аудиоданные (потоковый буфер микрофона или .wav файлы), упакованные в Base64 внутри массива, проксирует их в API локальной нейросети Ollama (whisper-base) и возвращает структурированный текстовый лог распознавания.
Инструкция по шагам (Python)
- Создание доменной модели запроса: Реализовать Pydantic-модель
VoiceRequest. Переменнаяimagesпереиспользуется как контейнер для передачи строки аудиофайла в формате Base64 (в соответствии с контрактом Ollama API). Значения по умолчанию зафиксировать:model: "whisper-base",prompt: "Распознай русскую речь из аудио.". - Маршрутизация и инференс: Настроить POST-эндпоинт
/api/generate, формирующий JSON-payload для отправки в локальную Ollama по адресу из переменнойOLLAMA_HOST. - Ограничение времени выполнения (Timeout): Так как модель Whisper на CPU работает значительно быстрее тяжелых Vision-моделей, выставить строгий таймаут в
20секунд (timeout=20). - Безопасная обработка сбоев инференса (Graceful Error Handling):
- В случае перегрузки очереди или получения некорректного статус-кода от Ollama (не 200), перехватывать событие и возвращать JSON-строку:
{"text": "Ошибка: ИИ перегружен"}. - При возникновении сетевых исключений или таймаута внутри блока
except Exception, логировать критическую ошибку вlogger.errorи отдавать структуру:{"text": "Ошибка: превышено время ожидания расшифровки"}.
- В случае перегрузки очереди или получения некорректного статус-кода от Ollama (не 200), перехватывать событие и возвращать JSON-строку: