Skip to content

SaintDemon25/DialogScribe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DialogScribe

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 + Docker Compose
  • NVIDIA GPU + NVIDIA Container Toolkit
  • HuggingFace токен с доступом к моделям pyannote

Настройка HuggingFace (для диаризации)

  1. Создайте токен на HuggingFace (права "Read")
  2. Примите условия использования моделей:

Конфигурация

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=100

Сборка и запуск

Production:

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"

Vault Agent

Для управления секретами используется HashiCorp Vault Agent (sidecar-контейнер). Конфигурация находится в vault/. Секреты (GRADIO_USERNAME, GRADIO_PASSWORD и др.) инжектируются через entrypoint.sh при старте.

API Endpoints

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

About

Audio & video transcription service based on GigaAM with speaker diarization via pyannote

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 73.3%
  • Svelte 22.9%
  • TypeScript 3.6%
  • Dockerfile 0.1%
  • HTML 0.1%
  • Mako 0.0%