Ugur22/ai-subtitles

A sophisticated full-stack AI-powered application for automatic video transcription, subtitle generation, and intelligent content analysis. Features local AI processing (no expensive API calls required), speaker identification, multi-language support, semantic search, visual search, audio analysis, and RAG-powered chat about your video content.

1

stars

353

commits

Python

primary language

Sep 7, 2026

updated

README

AI Subtitles

Local-first AI video transcription with speaker diarization, semantic search, and RAG-powered chat. image

Features

  • Local AI Transcription - Faster Whisper runs on your machine, no API costs
  • Speaker Diarization - Automatically identifies and labels different speakers
  • Multi-format Support - MP4, MP3, WAV, WebM, MKV, and more
  • Multi-language - Auto-detection and translation using MarianMT
  • Semantic Search - Find content by meaning with vector embeddings
  • Visual Search - CLIP-powered search by describing what you see
  • Audio Analysis - Detect laughter, applause, music, and emotions
  • RAG Chat - Ask questions about your video with context-aware answers
  • Background Jobs - Queue large files for async processing
  • Real-time Updates - Live progress via Supabase
  • Share Links - Generate public links to share results
  • Subtitle Export - WebVTT and SRT with translation support
  • Multiple LLMs - Ollama (local), Groq, OpenAI, Anthropic, Grok

Tech Stack

LayerTechnologies
FrontendReact 19, TypeScript, Vite, TailwindCSS, React Query
BackendFastAPI, Faster Whisper, PyTorch, Pyannote, pgvector
InfrastructureSupabase, Google Cloud (Run, Storage), Netlify

Quick Start

Prerequisites

Backend

cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env  # Edit with your settings
uvicorn main:app --reload --port 8000

Frontend

cd frontend
npm install
npm run dev

Open http://localhost:5173

Architecture

flowchart TB
    subgraph Frontend["Frontend (React)"]
        UI[UI] --> API[API Client]
        API --> RT[Supabase Realtime]
    end

    subgraph Cloud["Cloud Services"]
        GCS[(GCS)]
        SB[(Supabase + pgvector)]
    end

    subgraph Backend["Backend (FastAPI)"]
        TR[Transcription] --> WH[Whisper]
        SR[Speaker] --> PY[Pyannote]
        CR[Chat] --> SB
        CR --> LLM[LLM Providers]
    end

    API --> TR & SR & CR
    RT <--> SB
    TR --> SB
    TR --> GCS

Troubleshooting

IssueSolution
No module named 'torch'Activate venv: source venv/bin/activate
FFmpeg not foundInstall: brew install ffmpeg (macOS) or apt install ffmpeg
Speaker diarization failsCheck HUGGINGFACE_TOKEN and accept pyannote terms
Ollama connection errorStart Ollama: ollama serve
Large file upload failsEnable GCS: ENABLE_GCS_UPLOADS=true

Documentation

Project Structure

ai-subs/
├── frontend/          # React + TypeScript
│   ├── src/
│   │   ├── components/
│   │   ├── hooks/
│   │   ├── services/
│   │   └── types/
│   └── package.json
├── backend/           # FastAPI + ML
│   ├── routers/       # API endpoints
│   ├── services/      # Business logic
│   ├── models/        # Pydantic schemas
│   └── main.py
└── docs/              # Documentation

Contributing

Contributions welcome! Please open issues or submit pull requests.

Acknowledgments

Faster Whisper | Pyannote | Ollama | CLIP | PANNs

Contributors

Ugur22

353 commits

Ugur22/ai-subtitles

A sophisticated full-stack AI-powered application for automatic video transcription, subtitle generation, and intelligent content analysis. Features local AI processing (no expensive API calls required), speaker identification, multi-language support, semantic search, visual search, audio analysis, and RAG-powered chat about your video content.

1

stars

353

commits

Python

primary language

Sep 7, 2026

updated

README

AI Subtitles

Local-first AI video transcription with speaker diarization, semantic search, and RAG-powered chat. image

Features

  • Local AI Transcription - Faster Whisper runs on your machine, no API costs
  • Speaker Diarization - Automatically identifies and labels different speakers
  • Multi-format Support - MP4, MP3, WAV, WebM, MKV, and more
  • Multi-language - Auto-detection and translation using MarianMT
  • Semantic Search - Find content by meaning with vector embeddings
  • Visual Search - CLIP-powered search by describing what you see
  • Audio Analysis - Detect laughter, applause, music, and emotions
  • RAG Chat - Ask questions about your video with context-aware answers
  • Background Jobs - Queue large files for async processing
  • Real-time Updates - Live progress via Supabase
  • Share Links - Generate public links to share results
  • Subtitle Export - WebVTT and SRT with translation support
  • Multiple LLMs - Ollama (local), Groq, OpenAI, Anthropic, Grok

Tech Stack

LayerTechnologies
FrontendReact 19, TypeScript, Vite, TailwindCSS, React Query
BackendFastAPI, Faster Whisper, PyTorch, Pyannote, pgvector
InfrastructureSupabase, Google Cloud (Run, Storage), Netlify

Quick Start

Prerequisites

Backend

cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env  # Edit with your settings
uvicorn main:app --reload --port 8000

Frontend

cd frontend
npm install
npm run dev

Open http://localhost:5173

Architecture

flowchart TB
    subgraph Frontend["Frontend (React)"]
        UI[UI] --> API[API Client]
        API --> RT[Supabase Realtime]
    end

    subgraph Cloud["Cloud Services"]
        GCS[(GCS)]
        SB[(Supabase + pgvector)]
    end

    subgraph Backend["Backend (FastAPI)"]
        TR[Transcription] --> WH[Whisper]
        SR[Speaker] --> PY[Pyannote]
        CR[Chat] --> SB
        CR --> LLM[LLM Providers]
    end

    API --> TR & SR & CR
    RT <--> SB
    TR --> SB
    TR --> GCS

Troubleshooting

IssueSolution
No module named 'torch'Activate venv: source venv/bin/activate
FFmpeg not foundInstall: brew install ffmpeg (macOS) or apt install ffmpeg
Speaker diarization failsCheck HUGGINGFACE_TOKEN and accept pyannote terms
Ollama connection errorStart Ollama: ollama serve
Large file upload failsEnable GCS: ENABLE_GCS_UPLOADS=true

Documentation

Project Structure

ai-subs/
├── frontend/          # React + TypeScript
│   ├── src/
│   │   ├── components/
│   │   ├── hooks/
│   │   ├── services/
│   │   └── types/
│   └── package.json
├── backend/           # FastAPI + ML
│   ├── routers/       # API endpoints
│   ├── services/      # Business logic
│   ├── models/        # Pydantic schemas
│   └── main.py
└── docs/              # Documentation

Contributing

Contributions welcome! Please open issues or submit pull requests.

Acknowledgments

Faster Whisper | Pyannote | Ollama | CLIP | PANNs

Contributors

Ugur22

353 commits

Languages

Python

55.6%

TypeScript

34.4%

PLpgSQL

6.0%

CSS

2.2%

Shell

1.1%