AAYMA
RU
Войти

QazaqProtocol Pro

Десктопное офлайн-приложение, которое записывает или загружает аудио совещания и делает стенограмму с диаризацией, поручениями (действие…

Доведённый продукт
Команда «GK_EXPERT» 19💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: GK_EXPERT
Кейс HackAlem.ai: Инновации — Самрук-Казына
Стадия: Доведённый продукт

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

Суть

Десктопное офлайн-приложение, которое записывает или загружает аудио совещания и делает стенограмму с диаризацией, поручениями (действие, ответственный, срок), саммари и экспортом протокола в DOCX/PDF/TXT/JSON для СЭД. Также есть Android-клиент.

Как устроено

Аудио приходит с микрофона и/или системного звука (WASAPI Loopback) либо из файла (PyAV) и распознаётся faster-whisper small (CTranslate2, CPU INT8, Silero VAD, таймкоды слов). Live-режим обрабатывает окна по 8 с. Диаризация в отдельном процессе через sherpa-onnx (pyannote segmentation 3.0 и NeMo TitaNet small в ONNX). Имена участников выводятся из контекста (представления, передача слова). Собственный экстрактор на правилах RU/KK достаёт поручения, решения, риски и саммари. Облачная LLM не используется. Интерфейс на pywebview/WebView2, сборка через PyInstaller.

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

  • faster-whisper
  • Silero VAD
  • sherpa-onnx диаризация
  • pyannote segmentation 3.0
  • NeMo TitaNet
  • правиловой экстрактор поручений RU/KK
  • python-docx
  • ReportLab
  • PyInstaller

Особенности

Полностью локальный конвейер без облачных API и GPU, с переносимой сборкой для закрытого контура. Диаризация вынесена в отдельный процесс, чтобы не блокировать запись. У поручений хранится исходная цитата с таймкодом, фрагмент можно прослушать. Есть реестр статусов поручений и интеграция с СЭД (JSON/XML).

Стек

Python · ThreadingHTTPServer · pywebview · HTML/CSS/JS · NumPy · SciPy · PyAV · PyAudioWPatch · Kotlin (Android)

Модели

Whisper small (faster-whisper) · pyannote segmentation 3.0 · NVIDIA NeMo TitaNet small


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

README

README.md

QazaqProtocol Pro

Локальный ИИ-ассистент для протоколирования совещаний

Из аудиозаписи — в стенограмму, поручения и готовый документ. Обработка на компьютере пользователя, без облачных API и ключей.

QazaqProtocol Pro помогает секретарям, руководителям и кураторам поручений сохранить договорённости совещания: кто говорил, что необходимо сделать и к какому сроку. Приложение распознаёт речь, разделяет голоса, предлагает имена участников по контексту и формирует черновик протокола для проверки и экспорта.

Проект ориентирован на русские, казахские и смешанные совещания. Название организации, известные имена участников и глоссарий задаются в настройках — приложение можно использовать в разных организациях.

Репозиторий: BAITC-Hacks/hack-85308494-gk-expert.

1. Проблема и ценность

При ручном протоколировании секретарь одновременно слушает обсуждение, записывает решения и уточняет ответственных. Поручения могут потеряться среди реплик, а проверка формулировок требует повторного прослушивания записи.

QazaqProtocol объединяет запись, распознавание, проверку и подготовку документов в одном рабочем окне. Его практические преимущества:

  • Данные остаются на компьютере. Распознавание речи, разделение голосов и анализ текста выполняются локально. Подготовленную сборку можно перенести в закрытый контур.
  • Результат можно проверить по первоисточнику. Стенограмма содержит таймкоды, поручения — исходные цитаты; аудио и отдельные фрагменты доступны для прослушивания.
  • Можно работать во время совещания. Живая стенограмма и очередь загруженных файлов обрабатываются независимо. Завершение одной записи не мешает начать следующую.
  • Есть путь от записи до документа. История совещаний, реестр поручений, подтверждение имён и экспорт DOCX/PDF/TXT доступны в интерфейсе.
  • Облачная подписка для обработки не требуется. Базовая конфигурация использует CPU и локальные модели; API-ключи и GPU не обязательны.

Это рабочий прототип помощника: итоговые формулировки и назначения проверяет человек. Количественная экономия времени и точность на представительной выборке пока не измерены.

2. Что реализовано

ВозможностьРеализация в текущем коде
Запись совещанияМикрофон, системный звук через Windows WASAPI Loopback или оба источника; пауза, отключение звука источника, сохранение и сведение дорожек
Загрузка записиMP3, WAV, M4A, OGG, FLAC, WebM, MP4; обработка звуковой дорожки через PyAV
Русский, казахский, смешанная речьМногоязычная Whisper small: выбор RU/KK или автоматическое определение языка; настраиваемый глоссарий
Живая стенограммаОбработка окон по 8 секунд в отдельном потоке; файловая очередь работает параллельно. Каждый файл распознаётся целиком за один проход с постепенным выводом текста
Прослушивание фрагментаКнопки «Слушать live-фрагмент» и «Слушать обрабатываемый фрагмент» открывают аудио и стенограмму именно выбранного интервала
Диаризация — разделение говорящихЛокальные модели выделяют голосовые интервалы и сопоставляют их со словами; повторяющийся голос получает общую метку внутри записи
Имена участниковАнализ представлений, передачи слова, благодарностей и обращений; предположения помечаются «по контексту». Карандаш рядом с именем меняет его во всех репликах голоса и связанных поручениях; доступен образец голоса
ПорученияПравила RU/KK выделяют действие, ответственного, срок, срочность и исходную цитату; неизвестные поля обозначаются явно
Привязка к говорящемуРеплики сохраняют идентификатор голоса; для распознанных обязательств от первого лица связь используется и в поручениях
Саммари и ключевые моментыВыдержки из стенограммы, найденные решения и риски, служебная памятка со срочными действиями
Контроль порученийТаблица с фильтрами и ручной сменой статуса: «В работе», «На проверке», «Выполнено», «Просрочено»
ИсторияОтдельная вкладка с временем сохранения; при запуске рабочая сессия пустая, прежний протокол открывается только по выбору пользователя
ЭкспортDOCX, PDF, TXT и JSON-карточка СЭД через окно «Сохранить как»; генератор XML доступен в модуле СЭД
ИнтерфейсСтудийная компоновка: источники, микшер, этапы обработки и панель протокола; строгая графитовая палитра, приглушённые синие акценты и локальный Manrope. Эквалайзер из 40 полос реагирует на звук плеера и замирает в тишине
Настройка внешнего видаСтандартный эквалайзер или пульсирующий круг от реального звука; непрозрачность окна Windows от 40 до 100%. Настройки сохраняются между запусками

Протокол и экспорт привязаны к выбранному файлу. Просмотр короткого фрагмента имеет собственные аудио, длительность и текст; до завершения распознавания показывается ожидание, затем текст обновляется автоматически.

Поручения, ключевые моменты и саммари формируются по всей исходной записи. Кнопка «Полностью» в просмотре отрывка открывает именно её полный протокол. До окончания обработки показывается ожидание. TXT сохраняет выбранный отрывок, Word/PDF/СЭД используют полный протокол. Интервал предпрослушивания в 20 секунд не ограничивает длину распознавания.

По умолчанию выбран только системный звук. При выборе предпросмотра экрана микрофон отключается; кнопка в микшере явно показывает его состояние. Заглушённый источник исключается из новых аудиоданных записи и live-распознавания, системный звук при этом сохраняется.

3. Как работает решение

  1. Подготовить совещание. Указать организацию и язык, при необходимости — глоссарий, имена и ожидаемое количество участников. Уведомить участников о записи.
  2. Получить аудио. Загрузить файл либо включить микрофон и/или системный звук конференции.
  3. Следить за обработкой. Смотреть живую стенограмму или этапы обработки файла. Прослушивать текущий интервал и сверять его с текстом.
  4. Проверить результат. После обработки открыть протокол выбранной записи: реплики с таймкодами и голосовыми метками, поручения, ключевые моменты и саммари. Подтвердить предложенные имена по образцам голоса.
  5. Сохранить и использовать. Выбрать папку для DOCX/PDF/TXT или JSON, менять статусы поручений и возвращаться к совещанию через историю.

Для Zoom, Teams и Google Meet используется звук локально открытой конференции через WASAPI Loopback. Выбор окна нужен для предпросмотра экрана; запись системного звука от него не зависит.

4. Технологии

УровеньТехнологии и назначение
Приложение и локальный APIPython 3.11, стандартный ThreadingHTTPServer, threading, фоновые задачи и отдельный процесс диаризации
Desktop-интерфейсpywebview и Microsoft Edge WebView2; HTML, CSS, JavaScript; локальные ресурсы Font Awesome и шрифт Manrope (SIL OFL)
Захват и обработка аудиоPyAudioWPatch / PortAudio / WASAPI, NumPy, SciPy, SoundFile; PyAV для декодирования файлов
Визуализация звукаWeb Audio API и canvas, анализ реальных сигналов записи и воспроизведения
Speech-to-textfaster-whisper==1.2.1, CTranslate2, многоязычная Whisper small, CPU INT8, Silero VAD и таймкоды слов
Разделение голосовsherpa-onnx==1.13.8, pyannote segmentation 3.0 и NVIDIA NeMo TitaNet small в формате ONNX
Анализ текстаСобственный правиловой экстрактор RU/KK и модуль контекстного сопоставления имён; облачная LLM не используется
Документыpython-docx для Word, ReportLab для PDF, UTF-8 TXT, стандартные JSON/XML
Хранение и доставкаЛокальные файлы JSON/WAV и документы; PyInstaller, переносимая сборка Windows x64

Прямые зависимости перечислены в requirements.txt. CTranslate2, PyAV и другие компоненты распознавания устанавливаются также как зависимости библиотек.

5. Архитектура

flowchart TD
    UI["Интерфейс: запись, файлы, история, проверка"] <--> API["app.py · локальный HTTP API"]
    MIC["Микрофон + системный звук"] --> REC["audio_recorder · дорожки и сведение"]
    FILE["Аудио / видеофайл"] --> PIPE["audio_pipeline · live и файловая очередь"]
    REC --> PIPE
    API <--> PIPE
    PIPE --> STT["faster-whisper · текст и время слов"]
    PIPE --> VOICE["speaker_engine · локальный процесс ONNX"]
    STT --> CONTEXT["speaker_context · голоса и гипотезы имён"]
    VOICE --> CONTEXT
    CONTEXT --> NLP["nlp_extractor · поручения, решения, саммари"]
    NLP --> STORE["meeting_manager · история JSON"]
    STORE <--> API
    API --> EXPORT["DOCX / PDF / TXT / JSON; модуль XML"]

Сервер слушает только 127.0.0.1. Desktop-окно и резервный режим браузера используют один локальный интерфейс.

Захват аудио, живая расшифровка и обработка файлов разделены. Нативная диаризация вынесена в отдельный процесс, чтобы её вычисления не блокировали Python-потоки записи. Финальный проход анализирует всю запись и уточняет голосовые метки. Сопоставление голосов не создаёт биометрическую базу между совещаниями.

Основные файлы:

app.py                       # Запуск окна, локальный API, настройки
core/
  audio_recorder.py          # Микрофон, WASAPI Loopback, дорожки
  audio_pipeline.py          # Live, очередь файлов, аудиофрагменты
  stt_engine.py              # Локальное распознавание речи
  speaker_engine.py          # Акустическая диаризация и признаки голоса
  speaker_context.py         # Имена из контекста и подтверждение
  nlp_extractor.py           # Поручения, решения, риски, саммари
  meeting_manager.py         # История и статусы поручений
  export_service.py          # DOCX, PDF, TXT
  sed_integrator.py          # JSON/XML-карточки
  save_dialog.py             # Системный выбор пути сохранения
ui/                         # HTML/CSS/JS и локальные ресурсы
tests/                      # Автоматические проверки
scripts/prepare_speaker_models.py
models/                     # Подготовленные отдельно веса моделей
build_portable.py            # Сборка приложения с моделями
QazaqProtocolLocal.spec      # Спецификация PyInstaller

6. Установка и запуск

Требования

  • Windows x64; проверяемый путь запуска из исходников — Python 3.11 x64.
  • Microsoft Edge WebView2 Runtime для desktop-окна. Если оно недоступно, приложение открывает локальную страницу в системном браузере.
  • Подготовленные зависимости и модели. Интернет нужен при их первоначальном скачивании, но не при обработке совещаний.
  • Микрофон для собственной записи; работающее устройство вывода для системного звука. Для проверки на готовом файле микрофон не обязателен.

Скорость зависит от CPU и длительности записи. Минимальные требования к оперативной памяти и гарантированная скорость в реальном времени не установлены.

Вариант А: готовая папка приложения

Если передана сборка QazaqProtocol-Local, скопируйте всю папку, включая _internal и models, и откройте QazaqProtocol.exe. Python и API-ключи пользователю не нужны.

После стандартной сборки из исходников путь будет таким:

.\dist\QazaqProtocol-Local\QazaqProtocol.exe

Папка dist и веса моделей создаются отдельно: наличие исходников само по себе не означает наличие готового EXE. Памятка пользователя: RUN_LOCAL.md.

Вариант Б: запуск из исходников

В PowerShell на компьютере с доступом к источникам зависимостей:

git clone https://github.com/BAITC-Hacks/hack-85308494-gk-expert.git
cd hack-85308494-gk-expert

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

# Многоязычная модель речи: фиксированная ревизия.
.\.venv\Scripts\hf.exe download SYSTRAN/faster-whisper-small --revision 536b0662742c02347bc0e980a01041f333bce120 --local-dir models/whisper-small

# Модели разделения голосов и их лицензии; проверка SHA-256 весов.
.\.venv\Scripts\python.exe scripts/prepare_speaker_models.py

.\.venv\Scripts\python.exe app.py

Для явного запуска в браузере:

.\.venv\Scripts\python.exe app.py --web

Адрес по умолчанию — http://127.0.0.1:8000/index.html. Если порт занят, приложение выбирает доступный и выводит адрес при запуске.

Сборка переносимого EXE

После установки зависимостей и подготовки обеих групп моделей:

.\.venv\Scripts\python.exe -m pip install "pyinstaller>=6,<7"
.\.venv\Scripts\python.exe build_portable.py

Сборщик проверяет наличие весов, включает зависимости и локальные ресурсы интерфейса, копирует модели и лицензии рядом с EXE. Пользовательские записи и .env в сборку не включаются.

Для закрытого контура подготовьте сборку на совместимом компьютере и перенесите всю папку. Подготовка Python-окружения без сети описана в LOCAL_STT.md.

Настройки и хранение

ПараметрНазначение
QAZAQ_DATA_DIRОтдельный каталог пользовательских данных; удобно для проверки и демонстрации
STT_MODEL_DIRПуть к заранее подготовленной многоязычной модели CTranslate2
SPEAKER_MODEL_DIRПуть к локальным моделям разделения голосов
STT_DEVICE, STT_COMPUTE_TYPEБазовые значения cpu и int8
PORTПредпочтительный локальный порт; по умолчанию 8000

В EXE настройки и результаты находятся в %LOCALAPPDATA%\QazaqProtocol: settings.json и каталог storage. При запуске из исходников по умолчанию используется каталог проекта. Для отдельной демонстрационной сессии:

$env:QAZAQ_DATA_DIR = Join-Path $env:LOCALAPPDATA 'QazaqProtocol-JuryDemo'
.\.venv\Scripts\python.exe app.py

7. Как проверить решение жюри

Повторяемый пользовательский сценарий

  1. Подготовьте запись на 1–2 минуты с двумя участниками: последовательно, без музыки, каждый говорит несколько предложений. Можно записать смоделированное совещание прямо в приложении. Пример содержания приведён ниже.
  2. Откройте настройки: задайте тестовую организацию, режим языка «Авто», имена участников и количество голосов 2.
  3. Загрузите запись. Дождитесь завершения обработки; откройте стенограмму именно этого файла.
  4. Сопоставьте услышанное с текстом и таймкодами. Прослушайте голосовые образцы, проверьте предложенные имена и подтвердите либо исправьте их.
  5. Откройте поручения: проверьте действие, ответственного, срок и исходную цитату. Измените статус одного поручения на «Выполнено».
  6. Сохраните DOCX, PDF и TXT в выбранную папку. Откройте документы и сопоставьте их с выбранной записью.
  7. Загрузите второй, более короткий файл. Убедитесь, что его протокол и аудио не подменяются первым. При прослушивании фрагмента должны отображаться только его текст и длительность.
  8. Откройте «Историю»: выберите первую запись по времени сохранения и проверьте сохранённый статус поручения.

Пример для самостоятельной записи — синтетический сценарий, а не встроенный результат:

Участник 1: «Меня зовут Алексей. Обсуждаем подготовку отчёта. Анна, вам слово».

Участник 2: «Меня зовут Анна. Я подготовлю отчёт до 25 сентября. В отчёте будут результаты проверки оборудования».

Участник 1: «Спасибо, Анна. Решили провести повторную проверку. Есть риск задержки поставки».

Для отдельной проверки казахской и смешанной речи запишите похожее обсуждение с фразами, например: «Менің атым Әлия. Мен есепті жұмаға дейін дайындаймын» и «Әлия, подготовьте список. Мерзімі — жұмаға дейін». Сравнивайте результат с записанной речью: это проверка конкретного примера, а не доказательство точности на всех акцентах и условиях.

Дополнительная демонстрация: во время обработки файла запустите запись микрофона. Вкладка живой стенограммы должна получать свои фрагменты независимо от файловой очереди. «Слушать live-фрагмент» открывает именно выбранное короткое аудио; текст появляется после его распознавания. Если включён системный канал, звук плеера тоже попадёт в новую запись.

Автоматические проверки

Модульные и интеграционные тесты на временных и синтетических данных:

.\.venv\Scripts\python.exe -m unittest discover -s tests -p "test_*.py"

Проверяются офлайн-путь STT, запись и сведение дорожек, очередь файлов и live, границы фрагментов, контекст имён, правила RU/KK, загрузка аудио, экспорт и диалог сохранения. Устаревшие ручные/облачные пробы в рабочей копии отключены через SkipTest.

Сквозная проверка с настоящими моделями и своим тестовым файлом:

$env:QAZAQ_DATA_DIR = Join-Path $env:TEMP 'QazaqProtocol-SelfTest'
.\.venv\Scripts\python.exe app.py --self-test --audio "C:\demo\meeting.wav" --live-parallel --report "C:\demo\result.json"

Создайте C:\demo и поместите туда тестовую запись заранее. Проверка загружает файл через локальный HTTP API, запускает модели, проверяет параллельный live, историю, аудиоплеер и документы. Итоговый JSON содержит ok, результаты и ошибки. Внешние подключения блокируются на время диагностики. Для EXE замените в команде python.exe app.py на путь к QazaqProtocol.exe.

Проверка интерфейса открывает отдельное тестовое окно WebView2 и закрывает его после завершения:

$env:QAZAQ_DATA_DIR = Join-Path $env:TEMP 'QazaqProtocol-UITest'
.\.venv\Scripts\python.exe app.py --ui-self-test "C:\demo\ui-result.json"

В проверенном EXE успешно обработана запись длительностью 274,25 с с одновременным live-распознаванием, диаризацией и экспортом DOCX/PDF/TXT. Во время диагностического запуска попыток внешних подключений — 0. Результаты и границы проверок описаны в VERIFICATION.md. Прохождение функциональных тестов не заменяет измерение точности распознавания и диаризации.

8. Данные, приватность и интеграции

Входные данные: файл пользователя, микрофон и системное аудио. Для демонстрации подходят смоделированные записи; реальные записи следует обезличить до демонстрации. Автоматического обезличивания в приложении нет.

Во время обработки: аудио и текст не передаются в облачные API. Whisper загружается с local_files_only=True, включён офлайн-режим Hugging Face. Анализ текста выполняется правилами. Иконки и шрифты интерфейса находятся локально; сервер доступен через loopback.

При подготовке окружения: pip получает библиотеки; Hugging Face — веса SYSTRAN/faster-whisper-small; скрипт подготовки голосов — публичные ONNX-модели из выпусков k2-fsa/sherpa-onnx и лицензию NVIDIA NeMo. Эти операции скачивают программные компоненты, а не отправляют записи совещаний. Скрипт также скачивает публичную тестовую запись в .cache/speaker-models; она не входит в сборку приложения.

Документооборот: интерфейс экспортирует JSON-карточку протокола и поручений. В core/sed_integrator.py также есть генератор XML. Это заготовка для последующего адаптера к СЭД заказчика; совместимость с конкретной системой и её схемой требует отдельной проверки. Автоматической отправки в СЭД нет.

Аудио, протоколы и настройки сохраняются на диске пользователя. Встроенное шифрование хранилища, разграничение корпоративных ролей и централизованная аутентификация не реализованы. Закрытый контур возможен благодаря локальному исполнению; промышленную защиту данных обеспечивает также окружение заказчика. Не включайте реальные записи, протоколы и секреты в публикуемый репозиторий.

9. Ограничения текущей версии

  • Результат — проверяемый черновик. Whisper small может ошибаться на шуме, именах, акцентах и переключениях языков. Метрики WER для RU/KK/смешанной речи и DER для диаризации на размеченной выборке не представлены.
  • Разделение голосов не гарантирует установление личности. Короткие ответы, перебивания и похожие голоса могут разделяться неточно. Имена по контексту — гипотезы; пауза сама по себе не доказывает принадлежность голоса. Между совещаниями автоматического узнавания участников нет.
  • Поручения извлекаются правилами. Неявные формулировки могут быть пропущены, отдельные реплики — ошибочно приняты за поручения. Саммари состоит из выбранных фраз, без генеративного анализа скрытого смысла. Сроки сохраняются в распознанной формулировке; полного календарного разбора нет.
  • Live работает фрагментами. Это не пословная трансляция без задержки: результат появляется после накопления окна и вычислений; на слабом CPU обработка может отставать от записи.
  • Интеграции ограничены. Бота-участника Zoom/Teams/Meet, автоматических напоминаний, рассылки ответственным и промышленного подключения к СЭД нет. Просрочку пользователь отмечает вручную.
  • Основная целевая платформа — Windows. Многопользовательское серверное развёртывание, корпоративные роли, централизованное хранилище и промышленная эксплуатация находятся за пределами текущего прототипа.

Новая функция представляет собой компактный модуль фонового аудио-протоколирования для автоматической транскрибации речи в реальном времени. При запуске приложение работает в фоновом режиме и не перекрывает экран, отображая лишь аккуратное свернутое меню в верхней части интерфейса. Внутри этого меню расположен переключатель включения и выключения записи. Рядом с ним находится визуальный индикатор в виде лампочки, которая горит красным цветом во время активной записи и гаснет при ее остановке. Основное пространство разворачивающегося меню разделено на две вкладки. Первая вкладка называется транскрипт и предназначена для потокового вывода распознанного из окружающих звуков текста, который автоматически разделяется по ролям с визуальным подчеркиванием и разметкой для первого, второго и последующих спикеров. Вторая вкладка выделена под важные моменты разговора, куда в реальном времени дублируются ключевые тезисы и главные мысли беседы. Доработка реализуется в среде Android Studio.

10. Доступ к работающей версии

Публичный адрес развёрнутого сервиса в репозитории не указан. Текущий способ использования — локальное Windows-приложение либо локальный веб-интерфейс после запуска app.py.

http://127.0.0.1:8000/index.html — адрес на компьютере пользователя, а не публичная демонстрационная ссылка. Сборка воспроизводится командами из раздела установки.

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

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

QazaqProtocol Team 10ZeterDwarf 1

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

  • 2026-09-23 17:49Update README.mdZeterDwarf
  • 2026-09-23 17:48fix: local meeting assistant 2026-09-23 17:48QazaqProtocol Team
  • 2026-09-23 17:37fix: local meeting assistant 2026-09-23 17:37QazaqProtocol Team
  • 2026-09-23 17:13fix: local meeting assistant 2026-09-23 17:13QazaqProtocol Team
  • 2026-09-23 16:32fix: local meeting assistant 2026-09-23 16:32QazaqProtocol Team
  • 2026-09-23 16:22fix: local meeting assistant 2026-09-23 16:22QazaqProtocol Team
  • 2026-09-23 15:45fix: local meeting assistant 2026-09-23 15:45QazaqProtocol Team
  • 2026-09-23 15:14fix: local meeting assistant 2026-09-23 15:14QazaqProtocol Team
Все коммиты (11)
  • 2026-09-23 14:52feat: manual project update 2026-09-23 14:52:50QazaqProtocol Team
  • 2026-09-23 14:50chore: publish meeting assistant source snapshot 2026-09-23 14:50QazaqProtocol Team
  • 2026-09-23 14:42feat: complete OBS-style meeting protocol assistant with dual-track recording and offline STTQazaqProtocol Team
Структура репозитория (91 файлов)
.env.example
.gitignore
.source-snapshot.json
LOCAL_STT.md
QazaqProtocolLocal.spec
README.md
RUN_LOCAL.md
VERIFICATION.md
android/android_app/.gitignore
android/android_app/README.md
android/android_app/app/build.gradle.kts
android/android_app/app/proguard-rules.pro
android/android_app/app/src/main/AndroidManifest.xml
android/android_app/app/src/main/java/kz/samruk/meetingai/MainActivity.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/capture/PlaybackCapture.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/model/MeetingModels.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/network/ApiClient.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/network/TranscriptionClient.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/overlay/FloatingTranscript.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/service/AudioRecorderService.kt
android/android_app/app/src/main/java/kz/samruk/meetingai/session/OverlaySession.kt
android/android_app/app/src/main/res/drawable/ic_launcher_background.xml
android/android_app/app/src/main/res/drawable/ic_launcher_foreground.xml
android/android_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
android/android_app/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
android/android_app/app/src/main/res/mipmap-hdpi/ic_launcher.webp
android/android_app/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
android/android_app/app/src/main/res/mipmap-mdpi/ic_launcher.webp
android/android_app/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
android/android_app/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
android/android_app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
android/android_app/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
android/android_app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
android/android_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
android/android_app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
android/android_app/app/src/main/res/values/colors.xml
android/android_app/app/src/main/res/values/strings.xml
android/android_app/app/src/main/res/values/themes.xml
android/android_app/app/src/test/java/kz/samruk/meetingai/OverlayStateTest.kt
android/android_app/build.gradle.kts
android/android_app/gradle.properties
android/android_app/gradle/libs.versions.toml
android/android_app/gradle/wrapper/gradle-wrapper.jar
android/android_app/gradle/wrapper/gradle-wrapper.properties
android/android_app/gradlew
android/android_app/gradlew.bat
android/android_app/settings.gradle.kts
android/Новый текстовый документ.txt
app.py
build.bat
build_portable.py
core/audio_pipeline.py
core/audio_recorder.py
core/company_group_manager.py
core/export_service.py
core/meeting_manager.py
core/nlp_extractor.py
core/save_dialog.py
core/screen_stream.py
core/sed_integrator.py
core/self_test.py
core/speaker_context.py
core/speaker_engine.py
core/stt_engine.py
core/ui_self_test.py
push_to_git.bat
requirements-local-stt.txt
requirements.txt
run_app.bat
scripts/manual_push.py
scripts/prepare_speaker_models.py
tests/test_audio_lifecycle.py
tests/test_audio_mixing.py
tests/test_audio_pipeline.py
tests/test_document_local.py
tests/test_nlp_local.py
tests/test_recording_controls.py
tests/test_save_dialog.py
tests/test_speaker_context.py
tests/test_speaker_engine.py
tests/test_stt_offline.py
tests/test_upload_api.py
ui/assets/Wave.jpg
ui/assets/fonts/Manrope.ttf
ui/assets/fonts/OFL-Manrope.txt
ui/index.html
ui/main.js
ui/style.css
ui/theme.css
ui/voice-visualizer.js
ui/workspace.js

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

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

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