AAYMA
RU
Войти

SAMRUK KAZYNA

Локальное (on-prem) протоколирование совещаний на RU/KK/mixed.

Рабочий MVP
Команда «404 Team Not Found» 11💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: 404 Team Not Found
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Рабочий MVP

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

Суть

Локальное (on-prem) протоколирование совещаний на RU/KK/mixed. Windows EXE на C#/WinForms работает с FastAPI-backend, который выдаёт транскрипт с таймкодами и анонимными говорящими, резюме, поручения с цитатой-источником и экспорт в DOCX/PDF.

Как устроено

EXE загружает запись в FastAPI, там один последовательный worker. FFmpeg нормализует аудио в mono PCM16 WAV 16 kHz. faster-whisper large-v3 распознаёт речь, pyannote.audio Community-1 выполняет диаризацию, сегменты объединяются по таймкодам. Qwen3:4b в локальном Ollama извлекает резюме и поручения (суть, ответственный, срок, автор, цитата) с проверкой источников. Результаты хранятся в SQLite, экспорт через python-docx и ReportLab. Всё работает на ПК пользователя или в LAN.

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

  • faster-whisper large-v3
  • pyannote Community-1 diarization
  • Qwen3 via Ollama
  • speaker-grounded attribution
  • sequential model queue

Метрики

запись 274,25 с: STT 41,48 с, диаризация 16,09 с, анализ Ollama 18,84 с, 7 поручений; 22 backend-теста, 43 AI-теста, 10/10 проверок EXE→API

Особенности

Полностью локальный стек без облачных API: Whisper, pyannote и Qwen3 через Ollama. Нативный Windows-клиент без Python и браузера. Автор поручения подтверждается цитатой и говорящим из диаризации. Документация честно отделяет проверенное от непроверенного.

Стек

C# · WinForms · .NET Framework 4.8 · Python · FastAPI · SQLite · FFmpeg · Torch · python-docx · ReportLab · Streamlit

Модели

Whisper large-v3 (faster-whisper) · pyannote Community-1 · Qwen3:4b (Ollama)


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-c5aa2345-404-team-not-found.

README

README.md

SAMRUK KAZYNA

Из записи совещания — в проверяемый протокол и поручения.

Проект команды 404-team-not-found для HackAlem: локальное протоколирование совещаний на русском, казахском и смешанном языке. Основной клиент — Windows EXE на C# / Windows Forms. AI-модели и Python backend размещаются на компьютере пользователя или сервере в его локальной сети.

Статус: Windows EXE и backend соединены по целевому API. Реализованы загрузка, последовательная очередь моделей, SQLite, объединение timestamps и DOCX/PDF. Связка настоящего native-клиента с настоящим FastAPI прошла 10/10 проверок с синтетическими моделями. Финальный прогон всей системы на реальной записи и GPU компьютера Local AI ещё требуется.

Проверка для жюри · Архитектура · Результаты и воспроизведение проверок · Все документы

Состояние проекта перед сдачей — что передано, какие проверки выполнены и что ещё требует подтверждения.

Проблема и польза

Секретари, руководители проектов и производственные команды вручную переносят решения встреч в протоколы. В длинной записи легко потерять поручение, перепутать ответственного или срок. Для русско-казахских совещаний дополнительно важно сохранить исходный язык реплик и технические термины.

Целевой результат системы:

  • транскрипт с временными метками и анонимными говорящими;
  • краткое резюме;
  • поручения: суть, ответственный, срок, автор и цитата-источник;
  • DOCX/PDF для проверки и передачи команде.

Человек сверяет результат с записью. Если имя или срок неизвестны, система должна оставить их неизвестными. Цитата и говорящий помогают проверить основание поручения. Ожидаемая польза — меньше ручного переноса текста и пропущенных решений; экономия времени и качество на представительной выборке пока не измерены.

Что работает сейчас

ЧастьРеализованоГраница готовности
Windows-клиентВыбор записи, настройки сервера, история/API-клиент, просмотр результата10/10 проверок EXE → настоящий FastAPI/SQLite/worker/export с синтетическими моделями; реальный GPU-прогон впереди
Явное демоRU/KK-транскрипт, резюме, поручения и локальный DOCXСинтетические данные; выбранная запись не обрабатывается
BackendFastAPI, загрузка, один worker, SQLite, нормализация WAV, статусы, результат и экспорт22 backend-проверки; реальная запись на ПК Local AI ещё требуется
Local AIWhisper, Community-1, Qwen3/Ollama, проверка источников; адаптеры подключены к workerРеальные модели проверялись отдельно, интегрированный GPU-прогон пока не выполнен
PDFСерверный PDF через ReportLab, запрос из EXE, системная печать демоСерверный экспорт проверен на синтетическом результате; системная печать демо не проверена
Прежний UIStreamlit-прототип сохранён в frontend/Отдельный стек и прежний API; не входит в основной EXE

Поручения в нативном клиенте доступны только для просмотра. Редактирование, дашборд статусов, присоединение к Teams/Zoom/Meet и напоминания не входят в работающий сценарий текущего EXE. Подробности — план развития.

Быстрый запуск: Windows-клиент и демо

Нужны Git, доступ к репозиторию, Windows и .NET Framework 4.8+. Сборочный скрипт использует системный csc.exe; если компилятор отсутствует, он сообщает о необходимости .NET Framework Developer Pack.

git clone https://github.com/BAITC-Hacks/hack-c5aa2345-404-team-not-found.git
cd hack-c5aa2345-404-team-not-found
.\desktop\build-native.ps1
.\desktop\release\SAMRUK-KAZYNA.exe

Если репозиторий уже получен, выполняйте последние две команды из его корня. В окне приложения нажмите «Открыть демо», просмотрите резюме, транскрипт и поручения, затем сохраните DOCX. Backend и модели для этого не нужны.

Клиент не требует Python, Node.js, браузера или WebView2. .NET Framework является системной зависимостью. Отдельный сервер Python и модели в EXE не входят. Файл EXE не хранится в Git, опубликованного Release пока нет: на новом клоне desktop/release/ появится после сборки. Полученный SHA-256:

Get-FileHash .\desktop\release\SAMRUK-KAZYNA.exe -Algorithm SHA256

Сборка не подписана. Ранее она запускалась на Windows 11 / .NET Framework 4.8.1; чистый второй ПК ещё не проверен. Подробная инструкция клиента и отчёт с параметрами проверенного артефакта.

Запуск текущего backend

На готовом ПК Local AI используйте существующее окружение с моделями и работающей Ollama. Полная инструкция запуска описывает безопасное обновление main, диагностику и LAN. Из корня свежего checkout:

. .\scripts\local-ai\ai-env.ps1 -VenvPath 'C:\Users\Amankos\Downloads\Hakaton\.venv'
& $env:HACKALEM_PYTHON -m pip install -r .\backend\requirements-runtime.txt
& $env:HACKALEM_PYTHON -m pip check
.\scripts\start-backend.ps1 -VenvPath 'C:\Users\Amankos\Downloads\Hakaton\.venv'

Скрипт запускает один worker без access logs. Модели, Torch и CUDA повторно не устанавливайте: runtime-файл содержит только лёгкие зависимости API/экспорта. Оставьте терминал работающим. Во втором терминале:

Invoke-RestMethod http://127.0.0.1:8000/health | ConvertTo-Json -Depth 6
.\desktop\build-native.ps1
.\desktop\release\SAMRUK-KAZYNA.exe

Ожидается status: "ok", local_only: true и модули ready. Без локальных ресурсов health возвращает not_ready, загрузка — 503. Изучите processing_modules; health проверяет ресурсы и Ollama, но не выполняет inference. Swagger: http://127.0.0.1:8000/docs. Остановка сервера — Ctrl+C.

В EXE задайте http://127.0.0.1:8000 для того же ПК. Для другого ПК запустите скрипт с -BindAddress <LAN-IP-сервера> и используйте этот адрес в клиенте. Без моделей на новом ПК можно установить backend/requirements-runtime.txt в Python 3.11 venv и запустить uvicorn app.main:app --app-dir backend --host 127.0.0.1 --port 8000 --workers 1; health будет not_ready.

Настройки читаются из переменных окружения, .env автоматически не загружается. Корневой requirements.txt относится к прежнему Streamlit-стеку. Приватное хранилище по умолчанию — %LOCALAPPDATA%/SAMRUK_KAZYNA/meetings.

Локальные модели

Local AI: установка и воспроизведение — отдельная инструкция для серверного ПК. Она описывает окружение, веса, FFmpeg, Ollama и прямые проверки адаптеров. Первичная установка и скачивание моделей требуют сети; последующая обработка должна выполняться локально.

По отчёту Local AI модели запускались на ПК участника, в том числе на 90-секундном фрагменте при блокировании внешних Python-соединений. Это не проверка всего приложения без интернета. WER/DER и точность извлечения поручений на эталонной выборке пока не установлены.

Обновлённый отчёт содержит отдельный прогон полной записи 274,25 с: STT — 41,48 с, диаризация — 16,09 с, анализ Ollama — 18,84 с, получено 7 поручений. Это времена отдельных этапов, не время полного сценария. Для диаризации потребовалось преобразование MP3 в mono PCM16 WAV 16 kHz; новый backend делает эту подготовку и передаёт один WAV обоим адаптерам. Эту интеграцию ещё нужно проверить на GPU; ручная проверка качества не завершена. Новый CLI scripts/local-ai/evaluate-meeting.py воспроизводит этапы диагностики, но его новая версия целиком на реальной записи ещё не запускалась.

Технологии и устройство

КомпонентТехнологииРоль
Основной клиентC# 5, WinForms, .NET Framework 4.8+, HttpClientОдин EXE, формы, HTTP-клиент, локальный демо-DOCX
APIPython, FastAPI, Pydantic, UvicornЗагрузка, статусы, очередь и схемы
STTfaster-whisper 1.2.1 / Whisper large-v3Текст на исходном языке и timestamps
Диаризацияpyannote.audio 4.0.7 / Community-1Анонимные интервалы говорящих
АнализQwen3:4b через локальный OllamaРезюме и поручения с проверкой источников
АудиосредаFFmpeg, Torch/TorchCodecДекодирование и runtime моделей
Хранение и экспортSQLite, python-docx, ReportLabИстория, результаты и серверный DOCX/PDF

AI используется как последовательность специализированных этапов. Самостоятельного агента, который подключается к встречам или выполняет поручения, в текущем коде нет. Схема модулей и потока данных.

Как оценить решение

  1. Пройдите сценарий жюри: демо EXE, DOCX, состояние backend.
  2. Сопоставьте показанное с API-контрактом и исходниками.
  3. При необходимости воспроизведите отдельные проверки компонентов.
  4. Для AI подготовьте согласованную запись и эталон, следуя инструкции Local AI.
  5. На ПК Local AI выполните оставшийся реальный прогон: EXE → загрузка → completed → проверка RU/KK-текста и поручений → DOCX/PDF. При failed сохраните безопасный текст ошибки, не подменяйте результат демо.

Подтверждённые результаты: 22 backend-теста, 43 автономных AI-теста (29 адаптеров + 14 диагностики), 10 native EXE → настоящий API проверок с синтетическими моделями и отдельно 21 native-проверка с тестовым сервером. GUI и реальные модели описаны в handoff. Эти числа не измеряют качество речи. Реальный GPU-прогон всей системы ещё не подтверждён.

Скриншоты

Снимки настоящего окна клиента; показанные данные синтетические.

Демо: резюме и явная пометка синтетического примера

Демо: поручение с ответственным, сроком и источником

Транскрипт RU/KK · Настройки подключения

Навигация по репозиторию

desktop/native/           основной Windows-клиент
desktop/build-native.ps1  сборка EXE и SHA-256
backend/app/             API, очередь, SQLite, AI-адаптеры и экспорт
backend/tests/           backend и native→API проверки
backend/tests/local_ai/  автономные проверки адаптеров
scripts/start-backend.ps1 запуск в готовом AI-окружении
scripts/local-ai/        диагностика и прямой запуск локальных моделей
samples/                 синтетические JSON-примеры
frontend/                сохранённый Streamlit-прототип
docs/                    инструкции, архитектура, отчёты, сценарий жюри

Команда и зоны ответственности · Roadmap · Критерии сдачи. Модели, записи, транскрипты пользователей, окружения, EXE и секреты исключены из Git. Доступ к закрытому репозиторию и передача собранного EXE жюри организуются командой.

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

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

wthman2 10TrustHorn 9bta2602 5

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

  • 2026-09-23 17:58Record successful native EXE local AI processing and DOCX PDF exportTrustHorn
  • 2026-09-23 17:52Record submission snapshot and verified project resultswthman2
  • 2026-09-23 17:47Merge local meeting backend with current team documentationwthman2
  • 2026-09-23 17:43Connect native client to local meeting pipeline and DOCX PDF exportswthman2
  • 2026-09-23 17:40Merge current main and document full-recording AI reproductionbta2602
  • 2026-09-23 17:37Clarify project documentation and jury verification workflowbta2602
  • 2026-09-23 17:22Publish reproducible Local AI evaluation and backend integration handoffTrustHorn
  • 2026-09-23 17:21Update project status after full-recording Local AI handoffwthman2
Все коммиты (24)
  • 2026-09-23 17:14Merge remote-tracking branch 'origin/main' into codex/local-ai-setupTrustHorn
  • 2026-09-23 17:08Document full-recording PDF comparison and local Ollama evaluationTrustHorn
  • 2026-09-23 17:08Document merged native client and verified local AI adapterswthman2
  • 2026-09-23 17:06Merge verified local AI adapters into native Windows projectwthman2
  • 2026-09-23 16:58Add native Windows client for meeting protocol APIwthman2
  • 2026-09-23 16:48Ground task authors in speaker evidence and verify offline Community-1TrustHorn
  • 2026-09-23 16:48Merge remote-tracking branch 'origin/main' into codex/local-ai-setupTrustHorn
  • 2026-09-23 16:21Merge origin/main into codex/streamlit-frontendbta2602
  • 2026-09-23 16:18Merge remote-tracking branch 'origin/main' into codex/local-ai-setupTrustHorn
  • 2026-09-23 16:18Add local AI adapters, reproducible setup and verified handoffTrustHorn
  • 2026-09-23 16:04Retarget SAMRUK KAZYNA to Windows EXE and document jury verificationwthman2
  • 2026-09-23 16:00Add Streamlit meeting frontend and backend integrationbta2602
  • 2026-09-23 15:45Coordinate backend, local AI and Android APK workwthman2
  • 2026-09-23 15:15Prepare on-premise meeting protocol scaffoldwthman2
  • 2026-09-23 15:12Clear READMEbta2602
  • 2026-09-23 14:58Initial meeting protocol backendTrustHorn
Структура репозитория (123 файлов)
.env.example
.gitignore
.streamlit/config.toml
AGENTS.md
README.md
ROADMAP.md
backend/.gitignore
backend/README.md
backend/app/__init__.py
backend/app/api/__init__.py
backend/app/api/routes.py
backend/app/core/__init__.py
backend/app/core/config.py
backend/app/core/errors.py
backend/app/main.py
backend/app/models/__init__.py
backend/app/models/domain.py
backend/app/pipeline.py
backend/app/schemas/__init__.py
backend/app/schemas/meeting.py
backend/app/services/__init__.py
backend/app/services/diarization/__init__.py
backend/app/services/diarization/base.py
backend/app/services/diarization/local.py
backend/app/services/diarization/placeholder.py
backend/app/services/export/__init__.py
backend/app/services/export/base.py
backend/app/services/export/local.py
backend/app/services/llm/__init__.py
backend/app/services/llm/base.py
backend/app/services/llm/local.py
backend/app/services/llm/placeholder.py
backend/app/services/stt/__init__.py
backend/app/services/stt/base.py
backend/app/services/stt/local.py
backend/app/services/stt/placeholder.py
backend/app/storage.py
backend/requirements-ai.txt
backend/requirements-api.txt
backend/requirements-runtime.txt
backend/requirements.txt
backend/tests/local_ai/test_adapters.py
backend/tests/local_ai/test_attribution.py
backend/tests/local_ai/test_diagnostics.py
backend/tests/local_ai/test_evaluation.py
backend/tests/native_api_check.cs
backend/tests/run_native_api_check.py
backend/tests/test_backend_api.py
backend/tests/test_contracts.py
backend/tests/test_pipeline.py
desktop/PORTABLE-README.txt
desktop/SAMRUK-KAZYNA.spec
desktop/build-native.ps1
desktop/build-webview-experiment.ps1
desktop/build.ps1
desktop/launcher.py
desktop/native/ApiClient.cs
desktop/native/LocalExport.cs
desktop/native/MainForm.cs
desktop/native/Models.cs
desktop/native/Program.cs
desktop/native/Settings.cs
desktop/native/app.manifest
desktop/package.py
desktop/requirements-build.txt
desktop/requirements-lock.txt
desktop/tests/native_checks.cs
desktop/tests/run-native-checks.py
docs/README.md
docs/api-contract.md
docs/architecture.md
docs/backend-launch.md
docs/desktop/README.md
docs/desktop/handoff.md
docs/hackathon-checklist.md
docs/integration-notes.md
docs/jury-guide.md
docs/local-ai/README.md
docs/local-ai/handoff.md
docs/screenshots/native-demo-summary.png
docs/screenshots/native-demo-tasks.png
docs/screenshots/native-demo-transcript.png
docs/screenshots/native-settings.png
docs/submission-status.md
docs/team-prompts.md
docs/team-workflow.md
docs/verification.md
frontend/README.md
frontend/__init__.py
frontend/api_client.py
frontend/api_mock.py
frontend/app.py
frontend/components/__init__.py
frontend/components/dashboard.py
frontend/components/history.py
frontend/components/layout.py
frontend/components/meeting.py
frontend/components/sidebar.py
frontend/demo_data.py
frontend/desktop_settings.py
frontend/exporters.py
frontend/requirements.txt
requirements.txt
samples/README.md
samples/api/meeting-completed.json
samples/expected_analysis.json
samples/mixed_ru_kk_transcript.json
scripts/README.md
scripts/local-ai/ai-env.ps1
scripts/local-ai/check-llm-cases.py
scripts/local-ai/check-local-ai.py
scripts/local-ai/check-recording-results.py
scripts/local-ai/evaluate-meeting.py
scripts/local-ai/hf-login.py
scripts/local-ai/make-audio-review.py
scripts/local-ai/requirements-evaluation.txt
scripts/local-ai/requirements-observed.txt
scripts/local-ai/start-ollama.ps1
scripts/start-backend.ps1
tests/test_backend_api.py
tests/test_desktop_settings.py
tests/test_frontend_state.py
tests/test_meeting_editor.py
Ветки (5)

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

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

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