Skip to main content

Add missing subtitles. Recursive video-to-SRT transcription using whisper.cpp

Project description

NOTE: This is a vibe coded app. Proceed with caution.

add_subs_to_videos

You have video files but no subtitles. This tool fixes that.

It crawls a directory recursively, transcribes every video it finds using whisper.cpp, and writes a .srt sidecar file next to each one. Already-transcribed files are skipped, so re-running is fast.

Repo

https://github.com/simnim/add_subs_to_videos

GUI screenshot

GUI – transcription in progress

Install

Every option below gives you both the add_subs_to_videos CLI command and an "Add Subs to Videos" desktop GUI.

Ubuntu (snap — recommended, no prerequisites):

sudo snap install add-subs-to-videos

Installs the add-subs-to-videos CLI plus an "Add Subs to Videos" launcher in your applications menu (add-subs-to-videos-gui).

macOS (.dmg — no prerequisites): Download Add Subs to Videos-<version>.dmg from GitHub Releases, open it, and drag the app to Applications. The DMG also includes a standalone add_subs_to_videos CLI binary and an Install CLI.command helper — double-click it to symlink the CLI into /usr/local/bin so add_subs_to_videos --help works from a terminal.

Metal GPU acceleration is auto-detected on macOS — no extra steps needed.

Any platform with Python 3.12+ (via pip/pipx):

pip install "add-subs-to-videos[gui]"
# or
pipx install "add-subs-to-videos[gui]"

This installs both the add_subs_to_videos CLI and the add-subs-to-videos-gui GUI entry point. Drop [gui] if you only want the CLI.

pywhispercpp compiles a C++ extension at install time (requires CMake — brew install cmake ffmpeg on macOS, or on Ubuntu/Debian sudo apt install cmake ffmpeg). ffmpeg/ffprobe are also needed at runtime to decode non-WAV media and show per-file progress. On Linux with CUDA:

WHISPER_CUDA=1 pip install "add-subs-to-videos[gui]"

Usage

CLI

add_subs_to_videos /path/to/videos
add_subs_to_videos /path/to/videos --model large-v3 --language en
add_subs_to_videos /path/to/videos --force   # re-transcribe even if .srt exists

movie.mp4movie.srt, placed in the same directory. Supports .mp4, .mkv, .avi, .mov, .m4v, .webm, and more.

Models

Model Speed Quality
tiny / base Very fast Lower accuracy
small / medium Moderate Good for most content
large-v3 Slow Best accuracy

medium is the default. Use large-v3 when accuracy matters; use tiny or base for quick drafts on long files.

Output

Each video gets a .srt file in the same directory:

movie.mp4  →  movie.srt
1
00:00:01,240 --> 00:00:04,120
Welcome to the presentation.

2
00:00:04,500 --> 00:00:07,300
Today we'll cover three topics.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

add_subs_to_videos-0.1.20.tar.gz (261.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

add_subs_to_videos-0.1.20-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file add_subs_to_videos-0.1.20.tar.gz.

File metadata

  • Download URL: add_subs_to_videos-0.1.20.tar.gz
  • Upload date:
  • Size: 261.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for add_subs_to_videos-0.1.20.tar.gz
Algorithm Hash digest
SHA256 4e9a4536f8102d284b48de0e0f58168434e9d3677ab1798bc809484d5fd3e3c5
MD5 d0daee0d1e9d2ef1b71380371ed5d8fa
BLAKE2b-256 9dbd98f3ca18ebb40c0a188730d1c8f6fd918af4076c22321548225bc03ac654

See more details on using hashes here.

File details

Details for the file add_subs_to_videos-0.1.20-py3-none-any.whl.

File metadata

  • Download URL: add_subs_to_videos-0.1.20-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for add_subs_to_videos-0.1.20-py3-none-any.whl
Algorithm Hash digest
SHA256 32240b58a6fa966e3bd0d536d2c34a91c803cf24e0452c5d1d812b2ecedde45f
MD5 891b5d4302c5d365fb35f95b51e58586
BLAKE2b-256 6081350b9196edb109680d674aee4bd67b34ccadb8439b899e98d1002876716f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page