AAYMA
RU
Войти

Протокол совещания

Локальный сервис: аудиозапись совещания → транскрипт с таймкодами → решения и поручения с ответственными и сроками → проверка по аудио → правки →…

Рабочий MVP
Команда «Dictator’s lair» 9💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Dictator’s lair
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Рабочий MVP

Задача кейса: «Хаттама»: протокол и поручения по аудиозаписи совещания (каз./рус./смешанная речь)

Суть

Локальный сервис: аудиозапись совещания → транскрипт с таймкодами → решения и поручения с ответственными и сроками → проверка по аудио → правки → протокол DOCX.

Как устроено

faster-whisper (мультиязычный Whisper small, CPU/int8) распознаёт речь с таймкодами. Диаризация: эмбеддинги ERes2Net через sherpa-onnx с кластеризацией голосов. Поручения, ответственные, сроки и решения извлекаются правилами, без LLM. У каждого поручения есть цитата, таймкод и эвристический confidence, кнопка «Проверить в аудио» проигрывает исходный фрагмент. FastAPI обрабатывает задачи асинхронно. История и аудио хранятся в IndexedDB браузера, DOCX формируется в браузере.

Ключевые решения

  • faster-whisper
  • Whisper small int8
  • ERes2Net speaker embeddings
  • sherpa-onnx
  • speaker clustering diarization
  • rule-based task/deadline extraction
  • timestamp-grounded verification

Метрики

Аудио 274,25 с обработано за ≈99,4 с; 44 реплики, 10 поручений (точность не измерялась)

Особенности

Полностью локальный контур без облачных API и без LLM. Проверяемость поручений через проигрывание исходного аудиофрагмента. Честная оговорка: сквозная работа подтверждена только на русских записях, confidence эвристический.

Стек

Python · FastAPI · Uvicorn · HTML · CSS · JavaScript · IndexedDB · unittest · Node.js

Модели

Whisper small (faster-whisper) · ERes2Net


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-44e658e5-dictator-s-lair.

README

README.md

HackAlem 2026 — Протокол совещания

Локальный ИИ-помощник для Самрук-Қазына превращает запись совещания в протокол с поручениями, которые можно проверить по исходному аудио.

Проблема

Ручная подготовка протокола занимает время; потерянные поручения и неверные сроки приводят к ошибкам исполнения.

Решение

Аудиозапись → локальное распознавание → транскрипт с таймкодами → решения и поручения → ответственные и сроки → проверка по аудио → правки человека → DOCX.

Главное отличие — проверяемость

Поручение может содержать цитату, таймкод и confidence. Кнопка «Проверить в аудио» воспроизводит исходный фрагмент: пользователь сверяет формулировку, ответственного и срок перед экспортом.

Корпоративный протокол можно проверить, а не принимать вывод ИИ на веру. Confidence — эвристическая оценка, не измеренная точность.

Демо за четыре шага

  1. Загрузите запись совещания.
  2. Просмотрите содержание, поручения, решения и транскрипт.
  3. Проверьте поручение в аудио; исправьте ответственного или срок.
  4. Скачайте протокол DOCX и откройте в Word.

Архитектура

flowchart LR
    A["Аудио"] --> B["Локальный STT"]
    B --> C["Транскрипт<br/>с таймкодами"]
    C --> D["Спикеры, решения<br/>и поручения"]
    D --> E["Структурированный JSON"]
    E --> F["Проверка и правки"]
    A -->|"Первоисточник"| F
    F --> G["Протокол DOCX"]

API загрузки и обработки аудио: pipeline/api.py.

ИИ и технический стек

  • Речь: faster-whisper, мультиязычный Whisper small, CPU/int8.
  • Спикеры: ERes2Net, sherpa-onnx, кластеризация голосов; ответственный — из содержания разговора, не по голосовой биометрии.
  • Извлечение: правила для поручений, ответственных, сроков и решений; не LLM.
  • Приложение: Python/FastAPI/Uvicorn, HTML/CSS/JavaScript, IndexedDB; DOCX формируется в браузере.

Реальный benchmark

«Совещание №1.mp3», один подтверждённый локальный прогон:

ПоказательРезультат
Длительность аудио274,25 с
Обработка≈ 99,4 с
Реплики транскрипта44
Поручения10
Переход к аудио и воспроизведениеПроверены
РедактированиеПроверено
DOCX с правкамиОткрыт в Microsoft Word

Точность не измерена; время зависит от оборудования и очереди. Обе benchmark-записи определены как русскоязычные.

Целевые языки проекта — русский, казахский и смешанная RU–KZ речь; для распознавания используется мультиязычный Whisper. Сквозная работа подтверждена на предоставленных русскоязычных записях.

Локальная обработка и закрытый контур

Аудио и текст не отправляются во внешние облачные API. Модели скачиваются при первом использовании. Для закрытого контура нужны предварительная подготовка моделей/зависимостей и отдельная проверка изолированного запуска.

История и аудио хранятся в браузере. Промышленное управление доступом и хранением не реализовано.

Как запустить

Windows PowerShell, корень репозитория. Python 3.11+ в PATH; проверено на 3.14. Проверьте python --version. Node.js — только для frontend-тестов.

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r pipeline\requirements.txt

Backend — в первом терминале:

.\.venv\Scripts\python.exe -m uvicorn api:app --app-dir pipeline --host 127.0.0.1 --port 8000

Frontend — во втором терминале:

.\.venv\Scripts\python.exe -m http.server 5173 --bind 127.0.0.1

Откройте приложение. Health API должен вернуть HTTP 200 и status: ok. Обязательных переменных окружения и API-ключей нет.

Тесты

.\.venv\Scripts\python.exe -m unittest discover -s pipeline -p "test_*.py"
node --test frontend/test-runtime.cjs frontend/test-history.cjs

76 backend-тестов (2 требуют локальных записей результатов) и 41 frontend-тест: контракт, ошибки, история, правки, аудиопереходы и экспорт. Проверено с Node.js 24.19.

Каталоги artifacts/ и examples/ не входят в Git и не используются приложением. API распознаёт каждую новую загруженную запись; готовые benchmark-JSON не подставляются. Два теста повторной проверки сохранённых результатов пропускаются, если локальных файлов нет; их каталог можно указать через MEETING_REGRESSION_DIR. Остальные тесты и приложение от этих файлов не зависят.

Известные ограничения

  • Диаризация — прототипная. Метка SPEAKER_02, имя в тексте и сотрудник корпоративного справочника — разные сущности; биометрической идентификации участников нет.
  • Извлечение решений ещё совершенствуется: встречаются ложные срабатывания.
  • Ответственный и срок могут определяться ошибочно или отсутствовать. Саммари шаблонное; PDF нет.

Дальнейшее развитие

Hackathon MVP: Meeting → Verified Protocol.

Промышленная версия — план: Meeting → Protocol → Execution Control.

Ближайшие шаги — RU/KZ/mixed регрессионные тесты, аудиобенчмарки и улучшение диаризации. Дальнейший roadmap (не реализован в MVP):

  • Интеграция с корпоративным документооборотом (СЭД).
  • Контроль исполнения поручений.
  • Автоматическая доставка протокола и уведомлений.
  • Приоритизация поручений.
  • Корпоративная идентификация участников: связь speaker ID с профилем участника или справочником.

Команда

Два разработчика: backend/AI и frontend/интеграция.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
22
Авторы
2
Файлы
31
Ветки
1

Авторы коммитов

bekabarss 11Hlracigmny 11

История коммитов

  • 2026-09-23 17:51docs: refine multilingual speech wordingbekabarss
  • 2026-09-23 17:44chore: keep generated benchmark results out of gitbekabarss
  • 2026-09-23 17:41feat: add grounded business summaries and protocol reviewbekabarss
  • 2026-09-23 17:09docs: clarify language validation and product roadmapbekabarss
  • 2026-09-23 17:02docs: add judge-focused project readmebekabarss
  • 2026-09-23 16:52style: polish Russian meeting protocol demobekabarss
  • 2026-09-23 16:34feat: persist workspace meeting history and audio locallyHlracigmny
  • 2026-09-23 16:31chore: remove redundant milestone reportsHlracigmny
Все коммиты (22)
  • 2026-09-23 16:17fix: restore task editing and acceptance error handlingbekabarss
  • 2026-09-23 16:16perf: speed up local speaker inference with tested CPU parallelismHlracigmny
  • 2026-09-23 16:08feat: resolve speaker context and remove runtime mockHlracigmny
  • 2026-09-23 15:36fix: make docx export valid and editablebekabarss
  • 2026-09-23 15:24fix: integrate frontend with async processing apibekabarss
  • 2026-09-23 14:57feat: add token-free local speaker embedding diarizationHlracigmny
  • 2026-09-23 14:42fix: use async meeting jobs in frontend adapterHlracigmny
  • 2026-09-23 14:38Merge remote-tracking branch 'origin/main'Hlracigmny
  • 2026-09-23 14:37feat: integrate frontend with meeting processing APIHlracigmny
  • 2026-09-23 14:36feat: harden frontend backend integrationbekabarss
  • 2026-09-23 14:23docs: correct extraction accuracy reportHlracigmny
  • 2026-09-23 14:22feat: stabilize meeting intelligence contract and APIHlracigmny
  • 2026-09-23 14:02feat: add meeting protocol frontend demobekabarss
  • 2026-09-23 13:44feat: add local meeting core pipelineHlracigmny
Структура репозитория (31 файлов)
.gitignore
PIPELINE_REPORT.md
README.md
REQUIREMENTS.md
frontend/README.md
frontend/app.js
frontend/history.js
frontend/index.html
frontend/integration.js
frontend/overrides.css
frontend/styles.css
frontend/test-history.cjs
frontend/test-runtime.cjs
pipeline/api.py
pipeline/benchmark_speakers.py
pipeline/business_pipeline.py
pipeline/evaluate_context.py
pipeline/evaluate_protocol.py
pipeline/fixtures/protocol_gold.json
pipeline/protocol_intelligence.py
pipeline/rebuild_contract.py
pipeline/requirements.txt
pipeline/run_pipeline.py
pipeline/speaker_context.py
pipeline/speaker_embeddings.py
pipeline/test_api.py
pipeline/test_context.py
pipeline/test_pipeline.py
pipeline/test_protocol_intelligence.py
pipeline/test_recordings.py
pipeline/test_speakers.py

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.