DialogScribe — веб-приложение для транскрипции аудио и видео с анализом на базе LLM.
Транскрипция выполняется через Mistral Voxtral API, диаризация спикеров — через pyannote (локально, GPU), аналитика (саммари, майндмапы, инсайты, чат) — через OpenAI-совместимый API.
- Транскрипция аудио и видео через Mistral Voxtral (облачная ASR)
- Диаризация спикеров через pyannote/speaker-diarization-3.1 (локально, NVIDIA GPU)
- Аналитика на базе LLM: саммари, майндмапы, инсайты, чат с транскрипцией
- Веб-интерфейс на SvelteKit с авторизацией пользователей
- OpenAI-совместимый API — можно подключать любую совместимую модель (gpt-4.1, gpt-4o-mini и др.)
- Экспорт в TXT, JSON, SRT, VTT, DOCX
- Шаблоны промптов и автопотоки (autoflow)
- Отслеживание использования с лимитами для пользователей
- Vault Agent для безопасного управления секретами
┌─────────────────────────────────────────────┐
│ Frontend (SvelteKit SPA) │
│ ↳ Статический билд, отдаётся FastAPI │
├─────────────────────────────────────────────┤
│ Backend (FastAPI) │
│ ↳ /api/transcribe — транскрипция │
│ ↳ /api/summary, /api/mindmap, /api/insights │
│ ↳ /api/chat, /api/models │
│ ↳ /v1/audio/transcriptions (OpenAI-формат) │
│ ↳ Auth, Admin, Exports, Templates, Usage │
├─────────────────────────────────────────────┤
│ Mistral Voxtral API (ASR) ← облако │
│ OpenAI-compatible LLM API ← облако │
│ pyannote diarization ← локально, GPU│
├─────────────────────────────────────────────┤
│ SQLite + Alembic миграции │
│ HashiCorp Vault Agent (секреты) │
└─────────────────────────────────────────────┘
- Docker + Docker Compose
- NVIDIA GPU + NVIDIA Container Toolkit
- HuggingFace токен с доступом к моделям pyannote
- Создайте токен на HuggingFace (права "Read")
- Примите условия использования моделей:
cp .env.example .envОтредактируйте .env:
# ASR — Mistral Voxtral
MISTRAL_API_KEY=your_mistral_api_key_here
ASR_URL=https://api.mistral.ai
ASR_MODEL=voxtral-mini-latest
# Диаризация — pyannote (локально)
HF_TOKEN=your_huggingface_token_here
# LLM — OpenAI-совместимый API
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-4.1
LLM_MODELS=gpt-4.1,gpt-4o-mini
LLM_API_KEY=your_openai_api_key_here
# API-ключ для авторизации (опционально)
API_KEY=your-api-key-here
# Лимит загрузки (МБ, по умолчанию 100)
MAX_UPLOAD_SIZE_MB=100Production:
docker compose build
docker compose up -dПриложение будет доступно на http://localhost:7860.
Dev-режим (порт 7860 на хост, без GPU, без Vault):
docker compose -f docker-compose.dev.yaml up -d --buildДля запуска тестов (488 тестов, не требуют GPU/HF-токен):
python -m pytest -m "not slow and not requires_gpu and not requires_hf_token and not requires_model"Для управления секретами используется HashiCorp Vault Agent (sidecar-контейнер). Конфигурация находится в vault/. Секреты (GRADIO_USERNAME, GRADIO_PASSWORD и др.) инжектируются через entrypoint.sh при старте.
| Endpoint | Описание |
|---|---|
POST /v1/audio/transcriptions |
OpenAI-совместимая транскрипция |
POST /api/transcribe |
Транскрипция с расширенными параметрами |
POST /api/summary |
Генерация саммари (LLM) |
POST /api/mindmap |
Генерация майндмапа (LLM) |
POST /api/insights |
Извлечение инсайтов (LLM) |
POST /api/chat |
Чат с контекстом транскрипции |
WS /api/live-hints/ws |
Live-подсказки в реальном времени (WebSocket, JWT auth via query param) |
GET /api/models |
Список доступных LLM-моделей |
| Auth routes | Регистрация, логин, восстановление пароля |
| Admin routes | Управление пользователями, лимитами |
| Export routes | Экспорт в TXT, JSON, SRT, VTT, DOCX |
| Переменная | Описание | По умолчанию |
|---|---|---|
MISTRAL_API_KEY |
Ключ API Mistral для ASR | — |
ASR_URL |
URL API Mistral | https://api.mistral.ai |
ASR_MODEL |
Модель ASR | voxtral-mini-latest |
HF_TOKEN |
HuggingFace токен (pyannote) | — |
LLM_BASE_URL |
URL OpenAI-совместимого API | https://api.openai.com/v1 |
LLM_MODEL |
Модель LLM по умолчанию | gpt-4.1 |
LLM_MODELS |
Список доступных моделей (через запятую) | gpt-4.1,gpt-4o-mini |
LLM_API_KEY |
Ключ API для LLM | — |
API_KEY |
Bearer-токен для API-авторизации | — |
MAX_UPLOAD_SIZE_MB |
Макс. размер загрузки (МБ) | 100 |
DATABASE_URL |
URL базы данных (SQLite) | — |
ADMIN_EMAIL |
Email администратора (начальная загрузка) | — |
ADMIN_PASSWORD |
Пароль администратора | — |
SMTP_HOST |
SMTP-сервер для email | smtp.mail.ru |
SMTP_PORT |
Порт SMTP | 465 |
DialogScribe/
├── api.py # Точка входа FastAPI
├── Dockerfile # Multi-stage: frontend build + Python runtime
├── docker-compose.yaml # vault-agent + dialogscribe-web
├── frontend/ # SvelteKit SPA
│ ├── src/ # Компоненты, роуты, стили
│ └── build/ # Статический билд (генерируется)
├── routers/ # FastAPI роуты
│ ├── transcription.py # Транскрипция
│ ├── analysis.py # Саммари, майндмап, инсайты, чат
│ ├── auth.py # Авторизация
│ ├── admin.py # Админ-панель
│ ├── exports.py # Экспорт
│ ├── templates.py # Шаблоны промптов
│ ├── autoflow.py # Автопотоки
│ ├── live_hints.py # Подсказки в реальном времени
│ ├── usage.py # Отслеживание использования
│ └── saved_transcriptions.py# Сохранённые транскрипции
├── gigaam_transcriber/ # Ядро транскрипции
│ ├── transcriber.py # GigaAMTranscriber → MistralASRClient
│ ├── diarization.py # pyannote диаризация
│ ├── mistral_client.py # Клиент Mistral Voxtral API
│ └── ...
├── alembic/ # Миграции БД
├── vault/ # Конфигурация Vault Agent
├── data/ # SQLite база данных (runtime)
└── tests/ # Тесты
MIT License