A privacy-first, local transcription tool for studying educational videos and audio content.
Voxcribe converts your local video/audio files into high-quality transcripts โ with timestamps, subtitle files, and structured JSON โ all processed entirely on your machine.
Voxcribe started as a Bengali-only speech-to-text tool. Version 2 evolves it into a multilingual transcription tool while keeping its Bengali heritage and simple design.
| v1 | v2 |
|---|---|
| OpenAI Whisper | faster-whisper (CTranslate2, faster & more efficient) |
Bengali only (language="bn") |
Multilingual with auto-detection |
| Plain text output | TXT + Timestamped TXT + SRT + JSON |
| No timestamps | Per-segment timestamps |
base model |
small model (better quality default) |
| CPU only, no choice | CPU (int8) + optional CUDA (float16) |
| No VAD | Voice Activity Detection enabled by default |
- ๐ฏ Multilingual: Bengali, English, Hindi, and 90+ languages supported by Whisper
- ๐ Privacy-first: All processing happens locally โ no uploads, no cloud, no tracking
- โก Fast: Uses faster-whisper (CTranslate2) for efficient CPU/GPU inference
- โฑ๏ธ Timestamps: Every segment has start/end times
- ๐ Multiple outputs: TXT, Timestamped TXT, SRT subtitles, JSON
- ๐ค VAD: Voice Activity Detection reduces hallucination during silence
- ๐ Auto-detect: Automatic language detection with confidence score
- ๐ฃ๏ธ Mixed language: Handles Bangla+English, Banglish, technical terms naturally
- ๐บ Video support: MP4, MKV, AVI, MOV, WebM โ audio extracted automatically
- ๐ต Audio support: MP3, WAV, M4A, MPEG, MPGA
- ๐ป CPU-friendly: Works without a GPU using int8 quantization
- ๐ฎ Optional GPU: CUDA support for faster processing
- ๐ด Offline: After model download, works without internet
- Python 3.9+
- FFmpeg (see FFmpeg Setup below)
# Clone the repository
git clone https://github.com/Ratul345/Voxcribe.git
cd Voxcribe
# Create virtual environment (recommended)
python -m venv .venv
.venv\Scripts\activate # Windows (.venv\Scripts\Activate.ps1 in PowerShell)
# source .venv/bin/activate # macOS/Linux
# Install project in editable mode (creates the `voxcribe` command)
pip install -e .Note: The first time you use a model, it will be downloaded automatically (~460 MB for
small). After that, transcription works offline. Models are cached in~/.cache/huggingface/hub/.
# Transcribe with auto language detection (default)
voxcribe video.mp4
# Specify language
voxcribe lecture.mp3 --language bn
voxcribe podcast.wav --language en
# Choose model quality
voxcribe audio.m4a --model medium
# Multiple output formats (timestamped TXT, clean plain TXT, SRT, JSON)
voxcribe video.mp4 --format txt,plain,srt,json
# Custom output path
voxcribe video.mp4 --output my_transcript
# Backward-compatible / development alias (works identically)
python transcribe.py video.mp4| Model | Size | Speed | Quality | Best For |
|---|---|---|---|---|
tiny |
~75 MB | โก Fastest | ๐ก Basic | Quick tests, short clips |
base |
~145 MB | โก Fast | ๐ข Good | Lightweight, faster processing |
small |
~460 MB | ๐ก Balanced | ๐ข Recommended | Default โ best quality/speed balance |
medium |
~1.5 GB | ๐ด Slow | ๐ต High | Important content, better accuracy |
large-v3 |
~3 GB | ๐ด Slowest | ๐ต Highest | Maximum quality, needs more RAM |
๐ก Recommendation: Start with small. It provides noticeably better accuracy than base, especially for Bengali and mixed-language content, while remaining practical on a normal Windows PC with CPU.
โ ๏ธ RAM usage:mediumneeds ~5 GB RAM,large-v3needs ~10 GB+. If your PC has 8 GB RAM, stick withsmallorbase.
Voxcribe supports all languages available in the Whisper model, including:
| Code | Language |
|---|---|
auto |
Automatic detection (default) |
bn |
Bengali / เฆฌเฆพเฆเฆฒเฆพ |
en |
English |
hi |
Hindi / เคนเคฟเคจเฅเคฆเฅ |
es |
Spanish |
fr |
French |
de |
German |
ja |
Japanese |
zh |
Chinese |
ar |
Arabic |
| ... | 90+ languages |
Voxcribe does not translate speech. It transcribes what was actually spoken.
If someone says:
"เฆเฆ เฆเฆฎเฆฐเฆพ React-เฆเฆฐ component architecture เฆจเฆฟเฆฏเฆผเง เฆเฆฅเฆพ เฆฌเฆฒเฆฌ"
The transcript will be:
เฆเฆ เฆเฆฎเฆฐเฆพ React-เฆเฆฐ component architecture เฆจเฆฟเฆฏเฆผเง เฆเฆฅเฆพ เฆฌเฆฒเฆฌ
English technical terms inside Bengali speech are preserved naturally.
[00:00:03] Hello everyone.
[00:00:08] Today we're going to talk about the first concept.
[00:00:15] The first important concept is...
Best for: studying and referencing specific parts of a video.
Hello everyone.
Today we're going to talk about the first concept.
The first important concept is...
Best for: reading, studying, and pasting into AI chat for discussion without timestamps.
1
00:00:03,000 --> 00:00:08,000
Hello everyone.
2
00:00:08,000 --> 00:00:15,000
Today we're going to talk about the first concept.
Best for: loading as subtitles in video players (VLC, YouTube, etc.).
{
"source": "video.mp4",
"language": "en",
"language_probability": 0.98,
"duration": 123.45,
"segments": [
{"start": 3.0, "end": 8.0, "text": "Hello everyone."}
]
}Best for: programmatic analysis, developer integrations, and AI pipelines.
usage: voxcribe [-h] [-m MODEL] [-l LANGUAGE] [-o OUTPUT] [-f FORMAT]
[--device {cpu,cuda}] [--compute-type TYPE]
[--vad | --no-vad] [--task {transcribe,translate}]
[-v] [--version]
input_file
| Argument | Short | Default | Description |
|---|---|---|---|
input_file |
(required) | Path to audio/video file | |
--model |
-m |
small |
Model: tiny, base, small, medium, large-v3, turbo |
--language |
-l |
auto |
Language code or "auto" |
--output |
-o |
output/<name> |
Output path/base name |
--format |
-f |
txt |
Output formats (comma-separated): txt, plain, srt, json |
--device |
cpu |
Compute device: cpu, cuda | |
--compute-type |
int8 |
Precision: int8 (CPU default), float16 (GPU), float32 | |
--vad |
(on) | Enable VAD (default) | |
--no-vad |
Disable VAD | ||
--task |
transcribe |
Task: transcribe (default) or translate (to English) | |
--verbose |
-v |
Show debug output | |
--version |
Show version |
Voxcribe works on CPU by default โ no GPU required.
# Default: CPU with int8 quantization
voxcribe video.mp4
# Explicitly:
voxcribe video.mp4 --device cpu --compute-type int8This is the recommended setup for most Windows PCs.
If you have an NVIDIA GPU with CUDA configured:
voxcribe video.mp4 --device cuda --compute-type float16Requirements for GPU:
- NVIDIA GPU with CUDA support
- CUDA toolkit installed
- cuDNN installed
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12(or equivalent for your CUDA version)
Note: If you request
--device cudaand CUDA is not available, Voxcribe will show a clear error instead of silently falling back to CPU.
Voxcribe needs FFmpeg to decode audio/video files.
Option A โ Automatic (recommended for beginners):
pip install imageio-ffmpegThis installs a bundled FFmpeg binary. Voxcribe finds it automatically.
Option B โ Manual:
- Download FFmpeg from https://ffmpeg.org/download.html
- Extract to a folder (e.g.
C:\ffmpeg) - Add
C:\ffmpeg\binto your system PATH
brew install ffmpegsudo apt install ffmpegVoxcribe/
โโโ pyproject.toml # Build & console script definition (voxcribe = voxcribe.cli:main)
โโโ transcribe.py # Backward-compatible CLI entry point
โโโ voxcribe/
โ โโโ __init__.py # Package metadata
โ โโโ cli.py # Argument parsing & orchestration
โ โโโ transcriber.py # faster-whisper model & transcription
โ โโโ exporters.py # TXT, Plain, SRT, JSON output writers
โ โโโ utils.py # FFmpeg, validation, formatting
โโโ requirements.txt # Dependencies
โโโ README.md # Documentation
โโโ CONTRIBUTING.md # Contribution guide
โโโ LICENSE # MIT License
โโโ .gitignore
voxcribe bangla_lecture.mp4 --language bn --format txt,srtvoxcribe podcast.mp3 --language en --format txt,plain,srt,jsonvoxcribe reel_video.mp4 --format txtvoxcribe important_lecture.mp4 --model medium --format txt,srt,jsonvoxcribe clip.mp3 --model tiny- Install imageio-ffmpeg:
pip install imageio-ffmpeg - Or install FFmpeg system-wide and add it to PATH
- You requested
--device cudabut CUDA is not configured - Run with
--device cpu(default) or install CUDA toolkit
- Use a smaller model:
--model baseor--model tiny - Close other applications to free RAM
large-v3requires 10+ GB RAM
- Check your internet connection
- The model downloads only once and is cached locally
- Cache location:
~/.cache/huggingface/hub/
- Use a larger model:
--model mediumor--model large-v3 - Specify the language explicitly:
--language bn - Ensure the audio is clear with minimal background noise
- Try
--no-vadif VAD is cutting off speech
- Use a smaller model:
--model baseor--model tiny - If you have a CUDA GPU:
--device cuda --compute-type float16
Voxcribe is designed for privacy:
- โ All processing is local โ audio/video never leaves your machine
- โ No analytics or telemetry โ zero tracking
- โ No cloud APIs โ no OpenAI API key needed
- โ No automatic uploads โ your content stays yours
- โ Offline capable โ after model download, no internet needed
The only network activity is the one-time model download from Hugging Face when you first use a model.
MIT License โ see LICENSE for details.
- faster-whisper โ CTranslate2-based Whisper reimplementation by SYSTRAN
- OpenAI Whisper โ Original Whisper speech recognition research by OpenAI
- CTranslate2 โ Fast inference engine
- ๐ Bug Reports: GitHub Issues
- ๐ก Feature Requests: Open a discussion
- โ Questions: Check the troubleshooting section above
โญ If Voxcribe helps your learning, give it a star!