AAYMA
RU
Войти

Meeting Station (MEET-BOX)

Локальная система «аудио совещания → расшифровка → протокол и поручения» для русской, казахской и смешанной речи.

Рабочий MVP
Команда «Сэндвич» 10💬 0 комментариевс 23 сентября 2026 г.

О проекте

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

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

Суть

Локальная система «аудио совещания → расшифровка → протокол и поручения» для русской, казахской и смешанной речи. Секретарь проверяет каждое поручение по исходной реплике и аудио и выгружает протокол в PDF/DOCX/JSON/CSV/ICS.

Как устроено

Запись с микрофона комнатной станции (Radxa Cubie A7A) или загруженный файл передаётся по взаимному TLS на локальный вычислитель (MacBook Air M5). Там FFmpeg готовит аудио, Whisper распознаёт речь, Sherpa размечает говорящих, Qwen3.5 4B через Ollama извлекает решения, поручения, ответственных и сроки с учётом поздних уточнений и сверяет факты с цитатами. Результат возвращается на станцию, где секретарь правит поручения, а правки сохраняются версиями. Архив шифруется gocryptfs, HTTPS обеспечивает Caddy. Проект построен на основе Scriberr (Go).

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

  • Whisper
  • Sherpa speaker diarization
  • Qwen3.5 4B via Ollama
  • mutual TLS
  • gocryptfs
  • human-in-the-loop review
  • source-linked action items

Особенности

Полностью локальная обработка без облачного ИИ с архитектурой «аппаратная станция + вычислитель»: очередь переживает недоступность Mac, между устройствами mTLS, архив зашифрован. Поручения привязаны к исходной реплике и моменту в аудио, поздняя передача задачи другому человеку учитывается. Основа — форк open-source Scriberr.

Стек

Go · Python · TypeScript · React · Swift · Docker · Caddy · FFmpeg · Ollama

Модели

Whisper · Qwen3.5 4B · Ollama · Sherpa


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

README

README.md

Meeting Station — от совещания к проверенному протоколу. Русская, казахская и смешанная речь. Локальные модели, проверка человеком и экспорт.

Как это работает · Безопасность · Установка · Результаты проверок · Требования кейса

Meeting Station

Из записи совещания — в протокол, который можно проверить. Meeting Station готовит расшифровку, краткое содержание и таблицу поручений. Секретарь открывает исходную реплику, прослушивает аудио, уточняет ответственного и срок, затем сохраняет проверенную версию для выгрузки.

Самрук-Казына — владелец задачи хакатона
Решение кейса Самрук-Казына по автоматизации протоколов совещаний · проект MEET-BOX

Пока протокол пишут вручную, поручения легко потерять: срок изменили в конце встречи, ответственного заменили, а в итоговом документе осталось первое решение. Кейс Самрук-Казына добавляет важное условие: распознавать русский, казахский и смешанную речь без передачи аудио и текста во внешние облачные ИИ-сервисы.

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

Как это работает

  1. Добавьте запись. Загрузите аудио или видео либо запишите встречу через микрофон комнатной станции. До начала записи и ИИ-расшифровки уведомите участников.
  2. Получите расшифровку. Локальная модель Whisper переводит речь в текст. При включённом разделении говорящих Sherpa добавляет метки голосов; секретарь сопоставляет их с людьми.
  3. Откройте черновик. Локальная модель Qwen выделяет решения, поручения, названных ответственных и сроки. В отчёте также есть краткое содержание, темы, открытые вопросы и риски.
  4. Проверьте источник. Ссылка у поручения открывает подтверждающую реплику и переводит аудиоплеер к нужному моменту. Исходная расшифровка остаётся доступной.
  5. Уточните результат. Исправьте поручение, отклоните его или добавьте пропущенное со ссылкой на реплику. Сохраните новую версию с именем проверяющего, временем и комментарием к правкам.
  6. Выгрузите протокол. Доступны PDF, DOCX, JSON, CSV и календарный файл задач. Все форматы используют одни и те же проверенные записи.

Обработка начинается после завершения записи. На комнатной станции также предусмотрен браузер для онлайн-совещаний: подключение зависит от допуска организатором и прав учётной записи. При импорте готового текста распознавание речи и разделение говорящих пропускаются.

Если поручение изменилось во время встречи

«Дана отправит отчёт в пятницу».
Позже: «Отчётом займётся Тимур. Срок — понедельник».

Обработка идёт по порядку реплик и учитывает поздние уточнения. Ожидаемый результат — одно поручение Тимуру со сроком «понедельник». Конкретную календарную дату секретарь подтверждает при проверке источника.

Если ответственного или срока не было, поле остаётся пустым. Локальная модель сверяет извлечённые факты с цитатами и отмечает проблемы или недоступность проверки. Она тоже может ошибиться, поэтому аудио и возможность исправления доступны рядом с результатом.

Извлечение и проверки · Правила сохранения правок · Поля отчёта

Интерфейс: импорт → расшифровка → проверка → сохранённый протокол

Снимки настоящего приложения на явно синтетическом примере. При съёмке проверялись локальные запросы, редактирование, сохранение и повторное открытие; речевые и языковые модели не запускались. Нажмите на изображение, чтобы рассмотреть его.

Импорт записи, выбор языка и разделения говорящих
1. Добавить совещание
Русские и казахские реплики с метками говорящих и временем
2. Открыть источник
Секретарь уточняет ответственного и дату рядом с исходной цитатой
3. Проверить и исправить
Сохранённая версия протокола с историей правок и экспортом
4. Сохранить и выгрузить

Происхождение изображений и запись проверки

Два устройства в одной локальной сети

Комнатная станция — небольшой компьютер, постоянно подключённый к микрофону в переговорной. Он записывает встречу, хранит очередь обработки и архив. Для этой роли мы используем Radxa Cubie A7A — одноплатный компьютер.

Локальный вычислитель — компьютер, который запускает ресурсоёмкие ИИ-модели. В описанной установке это Mac в той же частной сети. Браузер обращается к станции, станция передаёт запись на Mac и сохраняет полученный отчёт у себя.

Браузер соединяется со станцией по HTTPS. Станция хранит архив и передаёт задания локальному Mac по взаимному TLS. Результат возвращается для проверки человеком.

Устройство в описанной установкеЗа что отвечает
Radxa Cubie A7A · 6 ГБ ОЗУ · Debian 11Веб-интерфейс, запись с микрофона, постоянная очередь, архив и браузер для онлайн-совещаний.
MacBook Air M5 · 16 ГБ памятиПодготовка аудио через FFmpeg, распознавание Whisper, разделение говорящих Sherpa, Qwen3.5 4B и формирование документов.

Зачем разделять эти роли? Запись и доступ к архиву остаются в переговорной, а память и мощность для моделей предоставляет вычислитель. Если Mac временно недоступен, работающая и разблокированная станция сохраняет записи в очереди. После восстановления связи обработка продолжается. Готовые протоколы доступны со станции и без вычислителя.

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

Комнатная станция: концепт корпуса и вид со всех сторон

Концепт корпуса комнатной станции с символикой Самрук-КазынаВращающаяся визуализация корпуса станции

Предоставленные участником концепты дизайна. Это не проверенные CAD-модели и не свидетельство испытаний оборудования. Происхождение иллюстраций.

Архитектура приложения · Аппаратная установка · Сервис станции · Вычислитель

Безопасность

Локальная обработка — только начало. В настроенной аппаратной установке защищены также сетевые соединения и сохранённые данные совещаний.

Защита по уровням: HTTPS для браузера, взаимный TLS между устройствами, шифрование архива и локально установленные ИИ-модели.

  • Браузер → станция: HTTPS. Собственный центр сертификации подтверждает подлинность станции. Защищённые cookie, ограничения загрузки ресурсов с других источников и запрет кеширования ответов API защищают браузерную сессию.
  • Станция ↔ вычислитель: взаимный TLS. Оба устройства предъявляют сертификаты; дополнительно используется отдельный токен вычислителя. Станция проверяет центр сертификации и адрес Mac, а Mac требует доверенный клиентский сертификат. Неверные удостоверения отклоняются, перехода на незашифрованный HTTP нет.
  • Архив: шифрование содержимого и имён файлов. Хранилище gocryptfs защищает записи, расшифровки, документы, базы данных, профиль браузера и секреты доступа. Пока оно заблокировано, сервисы не запускаются. Пароль хранилища не остаётся на плате; в описанной установке диск Mac защищён FileVault.
  • Модели: только локальные. Ollama принимает запросы на внутреннем адресе Mac. Модели устанавливаются заранее; автоматической отправки во внешний ИИ-сервис нет. Запросы к вычислителю отклоняют публичные адреса, перенаправления и прокси из переменных окружения.

Защита и восстановление доступа · Создание сертификатов · Настройка HTTPS · Защита запуска хранилища

Это меры аппаратного развёртывания: запуск на одном компьютере использует HTTP только на 127.0.0.1 и сам не создаёт зашифрованное хранилище. Загрузка зависимостей и моделей выполняется при установке; онлайн-совещания подключаются к своему провайдеру. Проверку сертификатов нельзя отключать; сертификаты устройств нужно обновлять до истечения 90 дней.

Шифрование защищает передачу и заблокированный архив. Администратор или вредоносная программа на разблокированном устройстве всё ещё могут получить доступ к данным. Общий токен станции пока не заменяет персональные роли, а история правок не является неизменяемым журналом аудита.

Установка

Выберите подходящий вариант. Файлы моделей, сертификаты и приватная конфигурация устройств не входят в репозиторий.

ВариантЧто потребуетсяИнструкция
Один компьютерPython 3.11+, Node 22.12+, FFmpeg, локальные модели речи и разделения голосов, Ollama. Для установки моделей описан путь на Python 3.12.Локальный запуск
Комнатная станция + MacТе же ресурсы для моделей, подготовленная Radxa, версия Go из go.mod и сертификаты устройств.Установка станции

Для первого варианта по инструкции установите зависимости, соберите интерфейс, создайте конфигурацию и подготовьте модели. Затем из корня репозитория:

.venv/bin/python scripts/run-local.py doctor
.venv/bin/python scripts/run-local.py start

Откройте http://127.0.0.1:8766/meeting-intelligence и введите созданный токен станции. Загрузите запись без чувствительных данных, включите разделение говорящих, проверьте исходные реплики и скачанные PDF/DOCX. О недостающих моделях приложение сообщает явно.

Подготовка и лицензии моделей · Диагностика установки

Проверки и результаты

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

ПроверкаЗафиксированный результат
Тесты станции и вычислителя237 пройдено
Проверки ошибок в браузере33 пройдено
Полные сценарии проверки и экспорта2 пройдено, включая независимую проверку содержимого PDF/DOCX
Сохранённые Python-компоненты / приложение macOS / инструменты разработки95 / 16 / 34 пройдено
Сохранённая реализация на GoПолный набор тестов с детектором гонок пройден
ИнтерфейсСборки обоих вариантов и статическая проверка пройдены

Для повторения: make verify; для сохранённых компонентов дополнительно — make verify-go и make verify-native на macOS. Зависимости и тестовый Chromium должны быть уже установлены. Проверки используют синтетические данные и имитацию ответов моделей; качество распознавания языков они не измеряют.

Ранее выполненные аппаратные измерения · 11 сентября 2026 года

Проверенный сценарийРезультат
Синтетическая английская запись длительностью 120 секунд → локальная обработка → четыре формата экспорта; HTTPS, взаимный TLS и зашифрованное хранение включены62,567 секунды
Перезагрузка Radxa → восстановление сайта, архива, связи с Mac и браузера совещаний80,745 секунды; сохранённый PDF не изменился
Отрицательные проверки TLSОтклонены подключения без сертификата, с недоверенным центром, неверным именем сервера и неподходящим назначением сертификата

Это результаты предыдущей установки на указанных устройствах, а не новый замер текущих исправлений. Чистая английская запись и один запуск не доказывают точность на русском/казахском или производительность на длинных встречах.

Журнал аппаратных испытаний · Измерения защиты · Оценка распознавания

Что ещё предстоит проверить

Нужны репрезентативные русские, казахские и смешанные записи, включая одновременную речь, а также запуск моделей с физически отключённым интернетом. Метки голосов различают говорящих; имена подтверждает человек. Работа с Google Meet описана в прежнем аппаратном журнале; подключение к реальным Zoom и Teams ещё не подтверждено.

Редактирование, история версий и экспорт PDF/DOCX реализованы. Формальный выпуск протокола, персональные роли, автоматические напоминания, связи поручений между совещаниями и интеграция с СЭД остаются дальнейшими задачами. Календарный экспорт создаёт файл, но не рассылает уведомления.

Покрытие требований кейса · Реестр исправлений 72 замечаний · Материалы для оценки

Лицензия и авторство

MIT. Meeting Station использует серверную основу Scriberr и сохраняет её уведомления об авторских правах и лицензию. Станция, локальный вычислитель и процесс проверки описаны в реестре вклада и заимствований. У моделей и изображений отдельные условия использования. Символика Самрук-Казына обозначает владельца задачи хакатона.

Для обсуждения установки создайте обращение в репозитории: укажите языки совещаний и доступное оборудование. Не публикуйте записи, расшифровки и секреты доступа.

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

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

Agzam 12Nurkhan 3

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

  • 2026-09-23 18:02Merge remote-tracking branch 'origin/main'Agzam
  • 2026-09-23 18:00Обновить русский интерфейс станции и снимки READMEAgzam
  • 2026-09-23 18:00agasAgzam
  • 2026-09-23 17:46Restore local history and preserve current project stateNurkhan
  • 2026-09-23 17:43tryyyAgzam
  • 2026-09-23 17:40maybe finalAgzam
  • 2026-09-23 17:36afasfasAgzam
  • 2026-09-23 17:28pelaseeeeeAgzam
Все коммиты (15)
  • 2026-09-23 17:23almost finalAgzam
  • 2026-09-23 16:16Merge remote main historyNurkhan
  • 2026-09-23 16:15stuffNurkhan
  • 2026-09-23 16:09overwriteAgzam
  • 2026-09-23 15:53readme updatedAgzam
  • 2026-09-23 15:08asgasgAgzam
  • 2026-09-23 11:21adgagAgzam
Структура репозитория (696 файлов)
.agents/skills/hackathon-build/SKILL.md
.agents/skills/hackathon-review/SKILL.md
.agents/skills/hackathon-scout/SKILL.md
.agents/skills/hackathon-select/SKILL.md
.air.toml
.dockerignore
.env.example
.github/FUNDING.yml
.github/workflows/submission-checks.yml
.gitignore
.golangci.yml
.goreleaser.yaml
.npmrc
.prettierignore
.prettierrc
.python-version
AGENTS.md
CNAME
Dockerfile
Dockerfile.cuda
Dockerfile.cuda.12.9
LICENSE
Makefile
README.md
START_HERE.md
a7a-bottom.webp
api-docs/API_DOCS.md
api-docs/docs.go
api-docs/swagger.json
api-docs/swagger.yaml
assets/scriberr-logo.svg
backend/.env.example
backend/README.md
backend/meetingbox/__init__.py
backend/meetingbox/config.py
backend/meetingbox/engine.py
backend/meetingbox/inference.py
backend/meetingbox/main.py
backend/meetingbox/models.py
backend/meetingbox/recorder.py
backend/meetingbox/store.py
backend/meetingbox/worker.py
backend/pyproject.toml
backend/tests/test_hub.py
backend/tests/test_native_contract.py
brief.json
build.sh
checks.json
cmd/scriberr-cli/main.go
cmd/server/main.go
cropped-main-logo.png
cropped-thumb.png
deploy/mac/com.meeting-intelligence.startup.plist.example
deploy/mac/com.meeting-intelligence.worker.plist.example
deploy/mac/inference-local.sb
deploy/meeting-browser/README.md
deploy/meeting-browser/activate.sh
deploy/meeting-browser/browser_auth.py
deploy/meeting-browser/controller.py
deploy/meeting-browser/join.js
deploy/meeting-browser/launch.sh
deploy/meeting-browser/meeting-browser.service
deploy/meeting-browser/provision.sh
deploy/meeting-browser/tests/test_capture_recovery.py
deploy/meeting-browser/tests/test_join_page.py
deploy/radxa/Caddyfile.station.example
deploy/radxa/activate-station.sh
deploy/radxa/docker-compose.yml
deploy/radxa/install-station.sh
deploy/radxa/lock-vault.sh
deploy/radxa/meeting-station.service
deploy/radxa/restore-carelink.sh
deploy/radxa/scriberr-station.service
deploy/radxa/unlock-vault.sh
deploy/radxa/vault-required.conf
docker-compose.blackwell.yml
docker-compose.build.blackwell.yml
docker-compose.build.cuda.yml
docker-compose.build.yml
docker-compose.cuda.yml
docker-compose.yml
docker-entrypoint.sh
docs/ACCURACY.md
docs/APPLIANCE_ARCHITECTURE.md
docs/ARCHITECTURE.md
docs/ATTRIBUTION.md
docs/CHALLENGE.md
docs/CNAME
docs/DECISION.md
docs/DEMO.md
docs/DEVELOPMENT.md
docs/EXPERIMENT.md
docs/FOUNDATION_FIXES.md
docs/HANDOFF.md
docs/HARNESS_TEST_LOG.txt
docs/LOCAL_SETUP.md
docs/MEETINGBOX_ARCHITECTURE.md
docs/MEETINGBOX_CLIENT.md
docs/MODEL_SETUP.md
docs/PREVIOUS_README.md
docs/README.md
docs/REQUIREMENTS.md
docs/REVIEW_CASES.md
docs/RUNBOOK.md
docs/SECURITY.md
docs/SPRINT.md
docs/STATION_SETUP.md
docs/SUBMISSION_NOTES.md
docs/TECHNICAL_REVIEW.md
docs/VALIDATION.md
docs/VERIFICATION.md
docs/api.html
docs/api/swagger.json
docs/api/undocumented.json
docs/assets/DocsLayout-GqKUjnoJ.js
docs/assets/Window-DF2NPLXn.js
docs/assets/api-BI0bFv_E.js
docs/assets/changelog-qdngCJYo.js
docs/assets/docs/configuration-DfPPue_1.js
docs/assets/docs/contributing-CiDZvzN1.js
docs/assets/docs/features-CAg870sO.js
docs/assets/docs/installation-B28K7cdK.js
docs/assets/docs/intro-D21Ml_gl.js
docs/assets/docs/usage-D6VpAVAT.js
docs/assets/index-Y03hbhXZ.js
docs/assets/readme/01-import.png
docs/assets/readme/02-transcript.png
docs/assets/readme/03-review.png
docs/assets/readme/04-reviewed-minutes.png
docs/assets/readme/README.md
docs/assets/readme/capture-receipt.json
docs/assets/readme/hero.svg
docs/assets/readme/local-architecture.svg
docs/assets/readme/meet-box-wordmark.png
docs/assets/readme/samruk-kazyna-logo.jpg
docs/assets/readme/security.svg
docs/assets/readme/station-enclosure-concept.png
docs/assets/readme/station-turntable.gif
docs/assets/styles-B3t5QDqx.css
docs/assets/styles-CUNhQwI0.js
docs/changelog.html
docs/docs/configuration.html
docs/docs/contributing.html
docs/docs/features.html
docs/docs/index.html
docs/docs/installation.html
docs/docs/intro.html
docs/docs/usage.html
docs/history/Makefile.scriberr
docs/history/README.md
docs/history/workflows/ci.yaml
docs/history/workflows/project-website.yml
docs/history/workflows/release.yml
docs/index.html
docs/screenshots/Screenshot 2025-08-26 at 12.25.27 PM (2).png
docs/screenshots/Scriberr-transcription profiles for handling different transcription configurations .png
docs/screenshots/scriberr-Ollama openAI llm providers for chat and summarization.png
docs/screenshots/scriberr-annotate transcript and take notes.png
docs/screenshots/scriberr-api-key-management.png
docs/screenshots/scriberr-chat-with-your-recording-transcript.png
docs/screenshots/scriberr-diarization-setup.png
docs/screenshots/scriberr-download-transcript-in-different-formats.png
docs/screenshots/scriberr-fine tune advanced transcription parameters as you see fit to improve transcription quality.png
docs/screenshots/scriberr-homepage.png
docs/screenshots/scriberr-inbuilt audio recorder for directly recording and transcribing audio within the app.png
docs/screenshots/scriberr-manage api keys.png
docs/screenshots/scriberr-summarize transcripts.png
docs/screenshots/scriberr-transcript page.png
docs/screenshots/scriberr-youtube-video.png
docs/scriberr-logo.png
docs/scriberr-thumb.png
docs/tooling.md
docs/verification/changed-files.txt
docs/verification/foundations-20260923/README.md
docs/verification/foundations-20260923/changed-files.txt
docs/verification/foundations-20260923/go-initial.txt
docs/verification/foundations-20260923/go.txt
docs/verification/foundations-20260923/native.txt
docs/verification/foundations-20260923/source-manifest.json
docs/verification/foundations-20260923/verification.json
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-00.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-01.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-02.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-03.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-04.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-05.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-06.txt
docs/verification/foundations-20260923/verify-20260923T115136509866Z-4b60bb-07.txt
docs/verification/review-20260923/verification-20260923T102002343181Z-2628c8.json
docs/verification/review-20260923/verify-20260923T102002343181Z-2628c8-00.txt
docs/verification/review-20260923/verify-20260923T102002343181Z-2628c8-01.txt
docs/verification/review-20260923/verify-20260923T102002343181Z-2628c8-02.txt
docs/verification/review-20260923/verify-20260923T102002343181Z-2628c8-03.txt
docs/verification/review-20260923/verify-20260923T102002343181Z-2628c8-04.txt
docs/verification/review-20260923/verify-20260923T102002343181Z-2628c8-05.txt
docs/verification/synthetic-missed-action.docx
docs/verification/synthetic-missed-action.pdf
docs/verification/synthetic-review-desktop.png
docs/verification/synthetic-review.docx
docs/verification/synthetic-review.pdf
docs/verification/ui-refresh-20260923/verification.json
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-00.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-01.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-02.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-03.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-04.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-05.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-06.txt
docs/verification/ui-refresh-20260923/verify-20260923T125531833115Z-652916-07.txt
docs/verification/verification-20260923T093456358250Z-5e27cb.json
docs/verification/verification-20260923T095442120502Z-b47d75.json
docs/verification/verify-20260923T093456358250Z-5e27cb-00.txt
docs/verification/verify-20260923T093456358250Z-5e27cb-01.txt
docs/verification/verify-20260923T093456358250Z-5e27cb-02.txt
docs/verification/verify-20260923T093456358250Z-5e27cb-03.txt
docs/verification/verify-20260923T095442120502Z-b47d75-00.txt
docs/verification/verify-20260923T095442120502Z-b47d75-01.txt
docs/verification/verify-20260923T095442120502Z-b47d75-02.txt
docs/verification/verify-20260923T095442120502Z-b47d75-03.txt
docs/verification/verify-20260923T095442120502Z-b47d75-04.txt
docs/verification/verify-20260923T095442120502Z-b47d75-05.txt
engine/README.md
engine/meetingbox_engine/__init__.py
engine/meetingbox_engine/audio.py
engine/meetingbox_engine/config.py
engine/meetingbox_engine/diarize.py
engine/meetingbox_engine/main.py
engine/meetingbox_engine/pdf.py
engine/meetingbox_engine/reasoner.py
engine/pyproject.toml
engine/tests/test_engine.py
evals/README.md
evals/cases.jsonl
evals/config.json
go.mod
go.sum
internal/api/admission_deletion_regression_test.go
internal/api/chat_handlers.go
internal/api/cli_auth_handlers.go
internal/api/cli_install_handlers.go
internal/api/cli_security_test.go
internal/api/constants.go
internal/api/deletion_ownership_regression_test.go
internal/api/handlers.go
internal/api/log_handler.go
internal/api/notes_handlers.go
internal/api/openai_handler.go
internal/api/regression_test.go
internal/api/router.go
internal/api/speaker_mapping_handlers.go
internal/api/station_mode.go
internal/api/station_mode_test.go
internal/api/summarize_handlers.go
internal/api/summary_handlers.go
internal/api/types.go
internal/audio/aup_parser.go
internal/audio/merger.go
internal/auth/auth.go
internal/cli/client.go
internal/cli/config.go
internal/cli/login.go
internal/cli/root.go
internal/cli/security_test.go
internal/cli/service.go
internal/cli/watch.go
internal/config/config.go
internal/database/database.go
internal/dropzone/README.md
internal/dropzone/dropzone.go
internal/dropzone/dropzone_test.go
internal/interfaces/auth.go
internal/interfaces/processor.go
internal/interfaces/queue.go
internal/llm/ollama.go
internal/llm/openai.go
internal/llm/service.go
internal/models/auth.go
internal/models/note.go
internal/models/summary.go
internal/models/transcription.go
internal/processing/multitrack_processor.go
internal/queue/lifecycle_regression_test.go
internal/queue/proc_kill_darwin.go
internal/queue/proc_kill_linux.go
internal/queue/proc_kill_windows.go
internal/queue/queue.go
internal/queue/queue_test.go
internal/queue/regression_test.go
internal/repository/implementations.go
internal/repository/job_lookup.go
internal/repository/lifecycle.go
internal/repository/lifecycle_test.go
internal/repository/repository.go
internal/service/file_service.go
internal/service/user_service.go
internal/sse/broadcaster.go
internal/sse/broadcaster_test.go
internal/transcription/README.md
internal/transcription/adapters/base_adapter.go
internal/transcription/adapters/canary_adapter.go
internal/transcription/adapters/contracts_test.go
internal/transcription/adapters/openai_adapter.go
internal/transcription/adapters/parakeet_adapter.go
internal/transcription/adapters/py/README.md
internal/transcription/adapters/py/nvidia/canary_transcribe.py
internal/transcription/adapters/py/nvidia/parakeet_transcribe.py
internal/transcription/adapters/py/nvidia/parakeet_transcribe_buffered.py
internal/transcription/adapters/py/nvidia/pyproject.toml
internal/transcription/adapters/py/nvidia/sortformer_diarize.py
internal/transcription/adapters/py/nvidia/tests/test_canary_transcribe.py
internal/transcription/adapters/py/nvidia/tests/test_parakeet_transcribe.py
internal/transcription/adapters/py/nvidia/tests/test_parakeet_transcribe_buffered.py
internal/transcription/adapters/py/nvidia/tests/test_sortformer_diarize.py
internal/transcription/adapters/py/pyannote/pyannote_diarize.py
internal/transcription/adapters/py/pyannote/pyproject.toml
internal/transcription/adapters/py/pyannote/tests/test_pyannote_diarize.py
internal/transcription/adapters/py/tests/test_adapter_contracts.py
internal/transcription/adapters/py/voxtral/pyproject.toml
internal/transcription/adapters/py/voxtral/voxtral_transcribe.py
internal/transcription/adapters/py/voxtral/voxtral_transcribe_buffered.py
internal/transcription/adapters/pyannote_adapter.go
internal/transcription/adapters/sortformer_adapter.go
internal/transcription/adapters/voxtral_adapter.go
internal/transcription/adapters/whisperx_adapter.go
internal/transcription/adapters_test.go
internal/transcription/interfaces/interfaces.go
internal/transcription/multitrack_admission_regression_test.go
internal/transcription/multitrack_transcriber.go
internal/transcription/pipeline/pipeline.go
internal/transcription/pipeline_regression_test.go
internal/transcription/queue_integration.go
internal/transcription/quick_regression_test.go
internal/transcription/quick_transcription.go
internal/transcription/registry/registry.go
internal/transcription/unified_service.go
internal/transcription/webhook_integration_test.go
internal/web/frontend/assets/index-Czw5UNl_.css
internal/web/frontend/assets/index-Dz2_a66b.js
internal/web/frontend/index.html
internal/web/frontend/vite.svg
internal/web/static.go
internal/webhook/service.go
internal/webhook/service_test.go
lefthook.yml
mac-worker/.env.example
mac-worker/README.md
mac-worker/pyproject.toml
mac-worker/src/meeting_worker/__init__.py
mac-worker/src/meeting_worker/asr.py
mac-worker/src/meeting_worker/bundle.py
mac-worker/src/meeting_worker/config.py
mac-worker/src/meeting_worker/diarization.py
mac-worker/src/meeting_worker/exports.py
mac-worker/src/meeting_worker/local_audio.py
mac-worker/src/meeting_worker/main.py
mac-worker/src/meeting_worker/model_process.py
mac-worker/src/meeting_worker/pipeline.py
mac-worker/src/meeting_worker/protocol.py
mac-worker/src/meeting_worker/report_language.py
mac-worker/src/meeting_worker/review.py
mac-worker/src/meeting_worker/schemas.py
mac-worker/src/meeting_worker/sherpa_process.py
mac-worker/src/meeting_worker/store.py
mac-worker/tests/fixtures/protocol_verification.json
mac-worker/tests/test_accuracy.py
mac-worker/tests/test_diarization.py
mac-worker/tests/test_exports.py
mac-worker/tests/test_foundations.py
mac-worker/tests/test_local_pipeline.py
mac-worker/tests/test_protocol.py
mac-worker/tests/test_review.py
mac-worker/tests/test_security.py
mac-worker/tests/test_station_contract.py
mac-worker/tests/test_worker_api.py
macos/Info.plist
macos/Package.swift
macos/Sources/MeetingBox/AppModel.swift
macos/Sources/MeetingBox/Audio/AudioArchive.swift
macos/Sources/MeetingBox/Audio/AudioPipeline.swift
macos/Sources/MeetingBox/Audio/AudioTypes.swift
macos/Sources/MeetingBox/Audio/MeetingAudioCapture.swift
macos/Sources/MeetingBox/Audio/WhisperWorker.swift
macos/Sources/MeetingBox/HubClient.swift
macos/Sources/MeetingBox/MeetingBoxApp.swift
macos/Sources/MeetingBox/MeetingRepository.swift
macos/Sources/MeetingBox/Models.swift
macos/Tests/MeetingBoxTests/AudioTests.swift
macos/Tests/MeetingBoxTests/HubConfigurationTests.swift
macos/Tests/MeetingBoxTests/RepositoryTests.swift
pkg/downloader/downloader.go
pkg/logger/logger.go
pkg/middleware/auth.go
pkg/middleware/compression.go
pkg/middleware/compression_test.go
requirements/validation.lock
research/RIBLT_SPIKE.md
research/SHORTLIST.md
research/SOURCE_NOTES.md
research/catalog.json
screenshots/ai-summary.png
screenshots/chat.png
screenshots/hero.png
screenshots/homepage-dark.png
screenshots/homepage-light.png
screenshots/homepage-mobile-dark.PNG
screenshots/homepage-mobile.PNG
screenshots/notes.png
screenshots/transcript-dark-2.png
screenshots/transcript-dark.png
screenshots/transcript-light-2.png
screenshots/transcript-light.png
screenshots/transcript-mobile-dark.PNG
screenshots/transcript-mobile.PNG
scripts/AudioChecks.swift
scripts/HubChecks.swift
scripts/RepositoryChecks.swift
scripts/backup-carelink.py
scripts/build-mac.sh
scripts/build-station.sh
scripts/check-mac-core.sh
scripts/check-regressions.py
scripts/check-ui.py
scripts/create-worker-pki.py
scripts/evaluate.py
scripts/harness.py
scripts/measure-wer.py
scripts/package-submission.py
scripts/run-hub.sh
scripts/run-local.py
scripts/run-provisioned-mac.py
scripts/station-vault.py
state.json
station/.env.example
station/README.md
station/pyproject.toml
station/src/meeting_station/__init__.py
station/src/meeting_station/browser.py
station/src/meeting_station/config.py
station/src/meeting_station/local.py
station/src/meeting_station/main.py
station/src/meeting_station/models.py
station/src/meeting_station/recorder.py
station/src/meeting_station/store.py
station/src/meeting_station/worker.py
station/tests/test_browser.py
station/tests/test_capture_audio.py
station/tests/test_join_controller.py
station/tests/test_local.py
station/tests/test_local_http.py
station/tests/test_review_sync.py
station/tests/test_startup.py
station/tests/test_station.py
station/tests/test_station_foundations.py
tests/adapter_registration_test.go
tests/api_chat_test.go
tests/api_handlers_test.go
tests/api_summary_test.go
tests/api_user_test.go
tests/auth_service_test.go
tests/cli_handlers_test.go
tests/database_test.go
tests/llm_test.go
tests/queue_test.go
tests/security_test.go
tests/test_evaluate.py
tests/test_harness.py
tests/test_helpers.go
tests/transcription_service_test.go.old
web/frontend/.gitignore
web/frontend/README.md
web/frontend/components.json
web/frontend/e2e/playwright.config.ts
web/frontend/e2e/regression-fixture.tsx
web/frontend/e2e/regression.html
web/frontend/e2e/regressions.config.ts
web/frontend/e2e/regressions.spec.ts
web/frontend/e2e/review.spec.ts
web/frontend/eslint.config.js
web/frontend/index.html
web/frontend/package-lock.json
web/frontend/package.json
web/frontend/pnpm-lock.yaml
web/frontend/pnpm-workspace.yaml
web/frontend/public/station-mark.svg
web/frontend/public/vite.svg
web/frontend/src/App.css
web/frontend/src/App.tsx
web/frontend/src/assets/react.svg
web/frontend/src/components/AudioRecorder.tsx
web/frontend/src/components/ChatInterface.tsx
web/frontend/src/components/ChatSessionsSidebar.tsx
web/frontend/src/components/DebouncedSearchInput.tsx
web/frontend/src/components/DragDropOverlay.tsx
web/frontend/src/components/Header.tsx
web/frontend/src/components/Layout.tsx
web/frontend/src/components/MergeStatusBadge.tsx
web/frontend/src/components/ProductLogo.tsx
web/frontend/src/components/ProtectedRoute.tsx
web/frontend/src/components/SystemAudioRecorder.tsx
web/frontend/src/components/ThemeSwitcher.tsx
web/frontend/src/components/TranscribeDDialog.tsx
web/frontend/src/components/TranscriptionConfigDialog.tsx
web/frontend/src/components/audio/AudioPlayer.tsx
web/frontend/src/components/audio/AudioVisualizer.tsx
web/frontend/src/components/audio/EmberPlayer.tsx
web/frontend/src/components/icons/WandAdvancedIcon.tsx
web/frontend/src/components/layout/MainLayout.tsx
web/frontend/src/components/station/StationBrand.tsx
web/frontend/src/components/station/station-shell.css
web/frontend/src/components/transcript/TranscriptToolbar.tsx
web/frontend/src/components/transcript/TranscriptView.tsx
web/frontend/src/components/transcription/FormHelpers.tsx
web/frontend/src/components/transcription/TranscriptionConfigDialog.tsx
web/frontend/src/components/ui/accordion.tsx
web/frontend/src/components/ui/alert-dialog.tsx
web/frontend/src/components/ui/button.tsx
web/frontend/src/components/ui/card.tsx
web/frontend/src/components/ui/checkbox.tsx
web/frontend/src/components/ui/command.tsx
web/frontend/src/components/ui/dialog.tsx
web/frontend/src/components/ui/dropdown-menu.tsx
web/frontend/src/components/ui/hover-card.tsx
web/frontend/src/components/ui/input.tsx
web/frontend/src/components/ui/label.tsx
web/frontend/src/components/ui/popover.tsx
web/frontend/src/components/ui/progress.tsx
web/frontend/src/components/ui/select.tsx
web/frontend/src/components/ui/separator.tsx
web/frontend/src/components/ui/sidebar.tsx
web/frontend/src/components/ui/slider.tsx
web/frontend/src/components/ui/swipeable-item.tsx
web/frontend/src/components/ui/switch.tsx
web/frontend/src/components/ui/table.tsx
web/frontend/src/components/ui/tabs.tsx
web/frontend/src/components/ui/textarea.tsx
web/frontend/src/components/ui/toast.tsx
web/frontend/src/components/ui/tooltip.tsx
web/frontend/src/contexts/ChatEventsContext.tsx
web/frontend/src/contexts/GlobalUploadContext.tsx
web/frontend/src/contexts/ThemeContext.tsx
web/frontend/src/features/auth/components/CLIAuthConfirmation.tsx
web/frontend/src/features/auth/components/Login.tsx
web/frontend/src/features/auth/components/Register.tsx
web/frontend/src/features/auth/components/StationAuth.tsx
web/frontend/src/features/auth/hooks/useAuth.ts
web/frontend/src/features/auth/store/authStore.ts
web/frontend/src/features/meeting-intelligence/MeetingBrowserPanel.tsx
web/frontend/src/features/meeting-intelligence/MeetingIntelligencePage.tsx
web/frontend/src/features/meeting-intelligence/MeetingReviewPanel.tsx
web/frontend/src/features/meeting-intelligence/api.ts
web/frontend/src/features/meeting-intelligence/meeting-intelligence.css
web/frontend/src/features/settings/components/APIKeyCreateDialog.tsx
web/frontend/src/features/settings/components/APIKeyDisplayDialog.tsx
web/frontend/src/features/settings/components/APIKeySettings.tsx
web/frontend/src/features/settings/components/APIKeyTable.tsx
web/frontend/src/features/settings/components/AccountSettings.tsx
web/frontend/src/features/settings/components/CLISettingsTab.tsx
web/frontend/src/features/settings/components/LLMSettings.tsx
web/frontend/src/features/settings/components/ProfileSettings.tsx
web/frontend/src/features/settings/components/ProfilesTable.tsx
web/frontend/src/features/settings/components/SummaryTemplateDialog.tsx
web/frontend/src/features/settings/components/SummaryTemplatesTable.tsx
web/frontend/src/features/settings/pages/CLISettingsPage.tsx
web/frontend/src/features/settings/pages/SettingsPage.tsx
web/frontend/src/features/transcription/components/AudioDetailView.tsx
web/frontend/src/features/transcription/components/AudioFilesTable.tsx
web/frontend/src/features/transcription/components/ChatSidePanel.tsx
web/frontend/src/features/transcription/components/Dashboard.tsx
web/frontend/src/features/transcription/components/MultiTrackUploadDialog.tsx
web/frontend/src/features/transcription/components/QuickTranscriptionDialog.tsx
web/frontend/src/features/transcription/components/YouTubeDownloadDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/DownloadDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/ExecutionInfoDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/LogsDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/NoteEditorDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/NotesSidebar.tsx
web/frontend/src/features/transcription/components/audio-detail/SpeakerRenameDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/SummaryDialog.tsx
web/frontend/src/features/transcription/components/audio-detail/TranscriptSection.tsx
web/frontend/src/features/transcription/components/audio-detail/TranscriptSelectionMenu.tsx
web/frontend/src/features/transcription/hooks/useAudioDetail.ts
web/frontend/src/features/transcription/hooks/useAudioFiles.ts
web/frontend/src/features/transcription/hooks/useKaraokeHighlight.ts
web/frontend/src/features/transcription/hooks/useSelectionMenu.ts
web/frontend/src/features/transcription/hooks/useTranscriptDownload.ts
web/frontend/src/features/transcription/hooks/useTranscriptSelection.ts
web/frontend/src/features/transcription/hooks/useTranscriptionEvents.ts
web/frontend/src/features/transcription/hooks/useTranscriptionNotes.ts
web/frontend/src/features/transcription/hooks/useTranscriptionSpeakers.ts
web/frontend/src/features/transcription/hooks/useTranscriptionSummary.ts
web/frontend/src/hooks/use-is-desktop.ts
web/frontend/src/hooks/use-long-press.ts
web/frontend/src/hooks/use-mobile.tsx
web/frontend/src/hooks/use-swipe-hint.ts
web/frontend/src/hooks/useIsDesktop.ts
web/frontend/src/index.css
web/frontend/src/lib/authHelpers.ts
web/frontend/src/lib/authInterceptor.ts
web/frontend/src/lib/authTypes.ts
web/frontend/src/lib/browserStorage.ts
web/frontend/src/lib/downloadRecording.ts
web/frontend/src/lib/markdownPolicy.ts
web/frontend/src/lib/stationMode.ts
web/frontend/src/lib/utils.ts
web/frontend/src/main.tsx
web/frontend/src/types/note.ts
web/frontend/src/utils/fileProcessor.ts
web/frontend/src/vite-env.d.ts
web/frontend/tsconfig.app.json
web/frontend/tsconfig.json
web/frontend/tsconfig.node.json
web/frontend/vite.config.ts
web/frontend/vite.svg
web/project-site/.gitignore
web/project-site/Makefile
web/project-site/README.md
web/project-site/eslint.config.js
web/project-site/index.html
web/project-site/package-lock.json
web/project-site/package.json
web/project-site/public/api/swagger.json
web/project-site/public/api/undocumented.json
web/project-site/public/favicon.svg
web/project-site/public/screenshots/ai-summary.png
web/project-site/public/screenshots/chat.png
web/project-site/public/screenshots/homepage-dark.png
web/project-site/public/screenshots/homepage-light.png
web/project-site/public/screenshots/mobile-homepage-dark.PNG
web/project-site/public/screenshots/mobile-homepage-light.PNG
web/project-site/public/screenshots/mobile-transcript-dark.PNG
web/project-site/public/screenshots/mobile-transcript-light.PNG
web/project-site/public/screenshots/notes.png
web/project-site/public/screenshots/transcript-dark-2.png
web/project-site/public/screenshots/transcript-dark.png
web/project-site/public/screenshots/transcript-light-2.png
web/project-site/public/screenshots/transcript-light.png
web/project-site/public/screenshots/usage-guide/actions-menu.png
web/project-site/public/screenshots/usage-guide/bulk-actions-menu.png
web/project-site/public/screenshots/usage-guide/drag-and-drop.png
web/project-site/public/screenshots/usage-guide/settings-llm.png
web/project-site/public/screenshots/usage-guide/settings-transcription.png
web/project-site/public/screenshots/usage-guide/transcript-actions.png
web/project-site/public/screenshots/usage-guide/upload-menu.png
web/project-site/public/vite.svg
web/project-site/screenshots/ai-summary.png
web/project-site/screenshots/chat.png
web/project-site/screenshots/homepage-dark.png
web/project-site/screenshots/homepage-light.png
web/project-site/screenshots/mobile-homepage-dark.PNG
web/project-site/screenshots/mobile-homepage-light.PNG
web/project-site/screenshots/mobile-transcript-dark.PNG
web/project-site/screenshots/mobile-transcript-light.PNG
web/project-site/screenshots/notes.png
web/project-site/screenshots/transcript-dark-2.png
web/project-site/screenshots/transcript-dark.png
web/project-site/screenshots/transcript-light-2.png
web/project-site/screenshots/transcript-light.png
web/project-site/screenshots/usage-guide/actions-menu.png
web/project-site/screenshots/usage-guide/bulk-actions-menu.png
web/project-site/screenshots/usage-guide/drag-and-drop.png
web/project-site/screenshots/usage-guide/settings-llm.png
web/project-site/screenshots/usage-guide/settings-transcription.png
web/project-site/screenshots/usage-guide/transcript-actions.png
web/project-site/screenshots/usage-guide/upload-menu.png
web/project-site/scripts/gen-endpoints.mjs
web/project-site/src/App.tsx
web/project-site/src/Layout.tsx
web/project-site/src/assets/react.svg
web/project-site/src/components/ApiReference.tsx
web/project-site/src/components/BrowserFrame.tsx
web/project-site/src/components/GithubBadge.tsx
web/project-site/src/components/PhoneFrame.tsx
web/project-site/src/components/ScriberrLogo.tsx
web/project-site/src/components/ScriberrTextLogo.tsx
web/project-site/src/components/TableOfContents.tsx
web/project-site/src/components/ui/Button.tsx
web/project-site/src/components/ui/Card.tsx
web/project-site/src/components/ui/Section.tsx
web/project-site/src/components/ui/Typography.tsx
web/project-site/src/docs/Configuration.mdx
web/project-site/src/docs/Diarization.mdx
web/project-site/src/docs/Features.mdx
web/project-site/src/docs/Installation.mdx
web/project-site/src/docs/Introduction.mdx
web/project-site/src/docs/Troubleshooting.mdx
web/project-site/src/docs/Usage.mdx
web/project-site/src/index.css
web/project-site/src/layouts/DocsLayout.tsx
web/project-site/src/main.tsx
web/project-site/src/pages/ApiPage.tsx
web/project-site/src/pages/Home.tsx
web/project-site/src/vite-env.d.ts
web/project-site/tsconfig.app.json
web/project-site/tsconfig.json
web/project-site/tsconfig.node.json
web/project-site/vite.config.ts

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

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

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