Meeting AI Assistant
Локальный backend для обработки аудиозаписей совещаний: транскрипция с таймкодами, определение языка и диаризация по спикерам.
О проекте
Команда: Sad Pinocchio with a hat
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Прототип
Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)
Суть
Локальный backend для обработки аудиозаписей совещаний: транскрипция с таймкодами, определение языка и диаризация по спикерам. По README формирование протокола и поручений не видно.
Как устроено
FastAPI принимает аудио или видео (wav/mp3/m4a/…/mp4) через POST /meetings, FFmpeg конвертирует файл. faster-whisper локально распознаёт речь, pyannote.audio назначает сегментам спикеров. Статус и результат (язык, сегменты с start/end, text, speaker) отдаются по GET /meetings/{id}/result. Модели можно заранее положить в локальный кэш для закрытого контура.
Ключевые решения
- faster-whisper
- pyannote.audio speaker diarization
- FFmpeg
Особенности
Весь пайплайн (STT и диаризация) работает локально, без облачных API, с расчётом на закрытый контур.
Стек
Python · FastAPI · Uvicorn · FFmpeg · Docker
Модели
faster-whisper (Whisper) · pyannote.audio
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-49a59521-sad-pinocchio-with-a-hat.
README
README.mdMeeting AI Assistant
Локальный прототип обработки записей совещаний.
Запуск backend
Рекомендуется Python 3.11 или 3.12 и FFmpeg в PATH. Python 3.14 пока может быть несовместим с частью ML-зависимостей, поэтому для стабильной установки лучше использовать Python 3.12.
Portable-версию FFmpeg можно хранить прямо в проекте: распакуйте full-shared архив так, чтобы DLL находились в backend/tools/ffmpeg/bin. Backend автоматически добавит эту папку в PATH при запуске. При необходимости путь можно переопределить через FFMPEG_DIR в .env.
Для установки зависимостей:
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
uvicorn app.main:app --reload
При первом запуске faster-whisper скачает выбранную модель. Для закрытого контура модель нужно заранее разместить в локальном кэше или подключить локальный путь к модели.
Диаризация выполняется локально через pyannote.audio. Для первоначального скачивания модели может потребоваться токен Hugging Face и принятие условий модели. В закрытом контуре модель скачивается заранее, после чего DIARIZATION_MODEL указывает на локальный каталог.
API
Загрузить файл:
curl.exe -X POST http://localhost:8000/meetings -F "[email protected]"
Проверить статус и получить транскрипт:
curl.exe http://localhost:8000/meetings/<meeting_id>
curl.exe http://localhost:8000/meetings/<meeting_id>/result
Поддерживаются .wav, .mp3, .m4a, .ogg, .flac, .mp4, .mov, .webm, .avi. Результат содержит язык, временные метки, текстовые сегменты и назначенного говорящего.
Пример результата:
{
"language": "ru",
"diarization": {"enabled": true, "speakers": ["SPEAKER_00", "SPEAKER_01"]},
"segments": [
{"start": 0.0, "end": 2.4, "text": "Добрый день", "speaker": "SPEAKER_00"}
]
}
Авторы коммитов
История коммитов
- 2026-09-23 17:38Fix frontend backend processing flowAdil Yerbolov
- 2026-09-23 17:27Use local STT by default for uploaded meetingsAdil Yerbolov
- 2026-09-23 17:22Use backend transcript instead of demo textAdil Yerbolov
- 2026-09-23 17:18Remove company branding and expose audio upload fieldAdil Yerbolov
- 2026-09-23 17:14Connect frontend prototype to meeting APIAdil Yerbolov
- 2026-09-23 16:56Restore local audio processing behaviorAdil Yerbolov
- 2026-09-23 16:49Add frontend layout and prototypesM0TIVATI0N
- 2026-09-23 16:35Add local processing fallbacks for testsAdil Yerbolov
Все коммиты (12)
- 2026-09-23 16:31Merge backend API with local audio processingAdil Yerbolov
- 2026-09-23 16:10Merge pull request #1 from BAITC-Hacks/audio-processingM0TIVATI0N
- 2026-09-23 16:05Add local audio processing pipelineAdil Yerbolov
- 2026-09-23 15:17Add backend + audio processing idk is it workKhamitovSul
Структура репозитория (14 файлов)
README.md backend/.env.example backend/.gitignore backend/Dockerfile backend/app/__init__.py backend/app/audio.py backend/app/config.py backend/app/diarization.py backend/app/main.py backend/app/models.py backend/app/store.py backend/app/transcription.py backend/requirements.txt backend/tests/test_diarization.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.