You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fully local, AI-powered video intelligence platform.
Upload a video or paste a YouTube URL → get a structured document, transcript, summary, and downloadable files. Zero cloud. All local.
System Requirements
Hardware
Component
Minimum
Recommended
RAM
16 GB
32 GB
GPU VRAM
8 GB
24 GB+
Disk
20 GB free
100 GB+ free
CPU
4 cores
8+ cores
GPU is optional but strongly recommended. Without GPU, Whisper and LLM inference will be significantly slower.
FastAPI and Celery worker call POST /api/generate and /api/chat via httpx. Used for transcript cleaning, structuring, summarization, and embedding generation.
faster-whisper-server
ASR inference
FastAPI and Celery worker call POST /v1/audio/transcriptions with WAV file. Model: Byne/whisper-large-v3-arabic. Chunks audio > 600s into overlapping segments.
pyannote.audio
Speaker diarization
Optional. Returns speaker segments that get merged into transcript timestamps. Requires HuggingFace token.
diarize
Speaker diarization
Optional. Open-source alternative to pyannote, no token required.
Demucs (torchaudio)
Audio preprocessing
Optional. Separates speech from background noise/music before Whisper transcription.
deepmultilingualpunctuation
Punctuation restoration
Optional. Post-processes raw Whisper output via HuggingFace pipeline.
nomic-embed-text (Ollama)
Text embeddings
Called via Ollama API for semantic search. Combined with keyword matching (rapidfuzz) for hybrid search scoring.
Video / Audio Stack
Tool
Role
How It Connects
yt-dlp
Video download
Subprocess call from Celery worker. Downloads from YouTube, Twitter, Vimeo, etc.
The pipeline is orchestrated by Celery and defined in backend/app/services/pipeline_plan.py. Steps are tracked in session.json with completed/failed status.
_check_pause_stop() between steps checks session.json flag
Resume
Restarts from the failed step, rebuilding context
Stop
Sets a stop flag; pipeline exits at next check
Retry
User can retry from any failed step via RetryPanel UI
Input Type Handling
Input Type
Steps Skipped
Starts At
Video upload
—
Step 1
YouTube URL
—
Step 1
Audio upload
1, 2
Step 3
Transcript upload (.txt/.srt/.vtt)
1–3
Step 5
Recording Multi-Track
Each session supports multiple recordings (video/audio files). Tracks are independently processed and stored under sessions/<session-id>/recordings/<recording-id>/.
Live Transcription
Browser Mic ──WebSocket──▶ FastAPI ──HTTP──▶ Whisper ASR
Real-time streaming transcription
POST /api/live/start
WS /api/live/ws/{session_id}
Watch Folder Auto-Transcription
Filesystem ──watchdog──▶ WatchFolderService ──▶ Celery Task
Monitors directory for new media files
Automatically creates sessions and starts pipeline
YouTube Caption Fetch
User input URL ──▶ YouTubeTranscript API ──▶ YouTube captions
Standalone endpoint (bypasses Whisper ASR)
GET /api/transcript/youtube?url=...
Search
Search Query
├── Keyword: rapidfuzz fuzzy matching against section titles + content
└── Semantic: nomic-embed-text embeddings → cosine similarity
↓
Combined score → ranked results across all sessions
Document Export
Session Data
├── TXT: Plain text with chapter/section structure
├── DOCX: Word document with styled headers + structure
├── PDF: Reportlab-generated print-ready document
├── SRT: Timestamped subtitle format
├── VTT: Web subtitle format
└── ZIP: Full archive of all session files
Quick Start
Prerequisites
Docker + Docker Compose
NVIDIA Container Toolkit (GPU recommended)
40 GB+ disk (for 70B model) — or use llama3.1:8b (5 GB)