Skip to content

Artemonim/Auditorica

Repository files navigation

Auditorica — система записи и анализа лекций

MVP-стенд. Исходный код открыт для ознакомления.

Auditorica — система для автоматизации учебного процесса в университетах с гибридным форматом (аудитория + онлайн). Пара записывается с нескольких камер и микрофонного массива, после чего проходит через ML-пайплайн: распознавание речи, диаризация, детект стоп-слов. Результат доступен студентам и преподавателям через веб-интерфейс с плеером, транскриптом и полнотекстовым поиском.


Скриншоты

Viewer: плеер + транскрипт + поиск

Viewer с плеером и транскриптом

Сессия открыта в просмотрщике. Слева — список сессий с их статусами (ready / processing). По центру — плеер с синхронизированным транскриптом. Справа — панель модерации стоп-слов с групповыми действиями.

Viewer: поиск по транскрипту и аудит-лог

Поиск по транскрипту и аудит-лог

Полнотекстовый поиск по транскрипту с переходом к таймкоду в плеере. Внизу справа — append-only аудит-журнал системных и пользовательских действий.


Ключевые возможности

Область Реализовано
Запись Поддержка 2–3 камер + аудио; Edge-терминал работает без интернета (store-and-forward)
ASR Пост-фактум транскрипция на русском языке — Whisper large-v3-turbo через OpenAI API
Диаризация Разделение по спикерам — pyannote/speaker-diarization-3.1 + NeMo (out-of-process микросервис)
Стоп-слова Авто-детект матов/нежелательных слов → модератор подтверждает/отклоняет («человек в контуре»)
Аудит Append-only журнал всех действий; студентам виден «факт + причина» по каждой правке
Поиск Полнотекстовый поиск по транскрипту с переходом на таймкод в плеере
RBAC Роли: студент / преподаватель / администратор / деканат; видимость данных по ролям
Посещаемость Базовый механизм + ручная верификация по видео

Архитектура

Терминал аудитории (Edge)
  └─ 2–3 камеры + аудио → Local Storage Buffer → Uploader (resumable chunks)
                                                  │
                                              Backend (Go)
                              API Gateway / Auth (RBAC) / Orchestrator
                                                  │
                                    ┌─────────────┴─────────────┐
                              Processing Pipeline            Object Storage
                              ASR (Whisper)                  Metadata DB
                              Диаризация (pyannote/NeMo)     Audit Log
                              Стоп-слова                     Search Index
                              Транскодинг (FFmpeg)
                                    │
                              Web Viewer (TypeScript)
                        Плеер / Транскрипт / Поиск / Модерация

Подробная архитектура с диаграммами — в doc/design-doc.md.


Стек

Слой Технологии
Backend / Edge Go (API, оркестрация, control plane, store-and-forward)
ML Pipeline Python — Whisper, pyannote, NeMo (как отдельный HTTP-микросервис)
Web UI TypeScript, Vite, Vitest
CI PowerShell-раннер (run.ps1), GitHub Actions

Dev setup

Требования

  • Go ≥ 1.25
  • Python ≥ 3.12
  • Node.js ≥ 24

Go

cd backend
go test ./...

Python

python -m venv .venv
.venv/Scripts/Activate.ps1
python -m pip install -U pip
python -m pip install -e .\processing[dev]
pytest -q

TypeScript

cd web
npm install
npm run typecheck
npm run lint
npm run test

Переменные окружения

Скопируй .env.example в .env и заполни:

# HuggingFace токен — нужен для загрузки pyannote моделей
HF_TOKEN=hf_...

Состояние проекта

MVP-стенд, разработка остановлена. Реализованы:

  • Processing pipeline (ASR + диаризация + стоп-слова + транскодинг)
  • Backend API (Go) с оркестрацией пайплайна
  • Web Viewer с плеером, транскриптом, поиском и модерацией стоп-слов
  • Аудит-журнал (append-only)
  • NeMo-микросервис (out-of-process диаризация)
  • Локальный CI с coverage, lint, security-проверками
  • Edge-терминал (архитектура описана, запись не реализована)
  • Идентификация студентов по лицу/голосу
  • Полная интеграция с LMS

Лицензия

Код открыт для ознакомления. Все права защищены.