MedVoice — AI‑ассистент для заполнения медицинских карт по аудиозаписи

Ссылка на работу
## 🎯 Задача MVP AI-ассистента для автоматизации медкарт. Врачи записывают приём голосом, система транскрибирует и структурирует диалог по разделам (анамнез, диагноз, рекомендации). Требование: real-time транскрипция и 100% надёжность обработки. ## 🛠 Что реализовано - **Гибридная транскрибация**: Real-time через Soniox SDK с fallback на OpenAI Whisper при сбоях - **Speaker diarization**: Авторазметка реплик врача/пациента - **Структурирование через LLM**: LangChain + GPT-4o-mini с Pydantic-валидацией на выходе - **HTTP Range streaming**: Аудиоплеер с перемоткой (206 Partial Content) - **Flask-админка**: Управление промптами и пользователями ## ⚙️ Технологии - **Backend**: FastAPI, SQLAlchemy (async), PostgreSQL, Redis, MinIO - **Frontend**: React 18, TypeScript, TanStack Query - **AI**: LangChain, OpenAI (Whisper) - **Инфраструктура**: Docker Compose, Nginx, Flask ## 💡 Сложные решения **Проблема:** Soniox SDK дублирует токены при смене спикера. **Решение:** Дедупликация по `start_ms` через Map + хронологическая сортировка. Нормализация speaker ID. **Результат:** 0 дублей, корректная разметка диалогов. **Проблема:** HTML `` не поддерживает Authorization header. **Решение:** Проксирование S3 через FastAPI с Range requests и авторизацией через query-параметры. **Результат:** Защищённая раздача аудио с перемоткой в браузере. ## ✅ Результат MVP в production, обрабатывает консультации с latency < 3 сек, uptime 99%+. Масштабируемая архитектура готова к росту.