Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OfflineScribe Logo

OfflineScribe

A fully offline, privacy-first audio and video transcription tool.
No cloud APIs. No internet dependency. No data leaves your machine.


Screenshots

OfflineScribe : Upload Interface

OfflineScribe : Upload Interface
Upload audio or video files for local transcription.

Model Selection

OfflineScribe : Model Selection

Choose between Tiny, Small, and Medium models based on speed and transcription quality.

Transcription Progress

OfflineScribe : Transcription Progress

Track the transcription pipeline while the audio is processed locally.

Processing Status

OfflineScribe: Processing Status

See the current processing stage from upload to transcription.

Transcript & Export

OfflineScribe : Transcript and Export

View timestamped transcripts and export them as SRT or TXT files.


What is OfflineScribe?

OfflineScribe is a local web application that transcribes audio and video files directly on your machine using open-source speech recognition models. It strips audio from any video file using ffmpeg, processes it through faster-whisper (an optimized offline Whisper implementation), and returns a timestamped transcript all without sending a single byte to any external server.

Built for developers, content creators, researchers, and anyone who needs accurate transcription without sacrificing privacy or paying for API credits.


Core Features

  • Fully Offline : No internet required after initial model download. All processing happens locally.
  • Multi-format Support : Accepts MP4, MP3, WAV, MKV, AVI, and M4A files.
  • Timestamped Transcripts : Every segment includes precise start and end timestamps.
  • Model Selection : Choose between Tiny, Small, and Medium Whisper models based on your speed vs. accuracy preference.
  • Multiple Export Formats : Download transcripts as .srt (subtitle format) or .txt, or copy directly to clipboard.
  • Real-time Progress Tracking : Step-by-step status updates: Uploaded → Extracting Audio → Transcribing → Done.
  • Typing Animation : Visual feedback during transcription so you always know the process is running.
  • Smart Time Estimates : File size-based processing time estimates shown before transcription begins.
  • Error Handling : Clear, user-friendly error messages for every failure scenario without exposing internals.
  • File Size Validation : Frontend and backend validation with a 500MB file size limit.

How It Works

┌─────────────┐     ┌──────────────────┐     ┌─────────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│             │     │                  │     │                     │     │                  │     │                 │
│  User drops │────▶│  Django receives │────▶│  ffmpeg strips      │────▶│  faster-whisper  │────▶│  Timestamped    │
│  file on UI │     │  file + model    │     │  audio to 16kHz WAV │     │  transcribes     │     │  transcript     │
│             │     │  selection       │     │                     │     │  locally         │     │  shown on UI    │
└─────────────┘     └──────────────────┘     └─────────────────────┘     └──────────────────┘     └─────────────────┘
                                                                                                          │
                                                                              ┌───────────────────────────┤
                                                                              │                           │
                                                                       ┌──────▼──────┐           ┌───────▼──────┐
                                                                       │  Copy to    │           │  Download    │
                                                                       │  Clipboard  │           │  SRT / TXT   │
                                                                       └─────────────┘           └──────────────┘

Pipeline detail:

Stage What happens
Upload File is validated (format + size) and saved locally
Extracting ffmpeg strips audio track, converts to 16kHz mono WAV (optimal for Whisper)
Transcribing faster-whisper runs selected model on WAV file, returns segments with timestamps
Done Segments saved to DB, returned to frontend as JSON, rendered with timestamps

Tech Stack & Why Each Was Chosen

Technology Role Why
Python 3.13 Core language Latest stable, async-friendly, rich ML ecosystem
Django 6.1 Web framework Built-in ORM, URL routing, file handling no boilerplate needed
faster-whisper Speech-to-text engine CTranslate2-optimized Whisper 4x faster than OpenAI's original with same accuracy, fully offline
ffmpeg Audio extraction Industry standard for audio/video processing, handles virtually every format
SQLite Database Zero-config local database, perfect for a single-user local tool
Whitenoise Static file serving Serves CSS/JS without needing a separate web server in development
python-dotenv Environment config Keeps SECRET_KEY and sensitive config out of source code
Vanilla JS (Fetch API) Frontend No framework overhead lightweight polling and DOM updates
Threading Background processing Runs transcription in a background thread without blocking the Django request cycle

Project Structure

OfflineScribe/
├── core/                   → Django project config (settings, urls, wsgi)
├── transcriber/            → Core app
│   ├── static/
│   │   └── transcriber/
│   │       ├── css/style.css
│   │       └── js/main.js
│   ├── templates/
│   │   └── transcriber/
│   │       └── index.html
│   ├── models.py           → TranscriptionJob model
│   ├── views.py            → Upload + status endpoints
│   ├── services.py         → ffmpeg + faster-whisper pipeline
│   └── urls.py             → App-level URL routing
├── media/                  → Uploaded files + extracted audio (auto-created)
├── .env                    → Environment variables (not committed)
├── manage.py
├── requirements.txt
├── README.md
└── SETUP.md

Setup

Quick Setup (Windows)

git clone https://github.com/yourusername/OfflineScribe.git
cd OfflineScribe
setup.bat

Quick Setup (macOS / Linux)

git clone https://github.com/yourusername/OfflineScribe.git
cd OfflineScribe
chmod +x setup.sh && ./setup.sh

Then run:

# Windows
venv\Scripts\activate && python manage.py runserver

# macOS / Linux
source venv/bin/activate && python3 manage.py runserver

Open http://127.0.0.1:8000 in your browser.

For manual setup on, Django learning, or troubleshooting see SETUP.md


Developer

Chirag Gupta LinkedIn · chirag1706gupta@gmail.com

About

A fully offline audio & video transcription web app built with Django and faster-whisper. Upload any file, extract audio via ffmpeg, and get timestamped transcripts, no APIs, no internet, no data leaves your machine. Supports SRT & TXT export with real-time progress tracking.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages