autosubs
Automatic subtitle (.srt) generator CLI. Point it at video/audio files (or
directories) and it writes a sidecar .srt subtitle file per input using a
local faster-whisper speech-to-text
model. Runs fully offline after the first model download.
Features:
- Automatic spoken-language detection.
- Translate-to-English mode (
--translate). - Batch / recursive directory input.
- Cross-platform: CPU int8 on macOS (Apple Silicon), CUDA on Linux/NVIDIA (untested but should work).
Try it without installing
With uv, you can run it once without installing anything permanently:
uvx --from autosubs-whisper autosubs VIDEO [VIDEO ...]
uvx fetches the package into a temporary environment, runs the autosubs
command, and leaves nothing behind. (The --from flag is needed because the
package is named autosubs-whisper (autosubs was already taken) while the command is autosubs.)
Install
uv tool install autosubs-whisper
This puts the autosubs command on your PATH (works on macOS, Linux, and
Windows). pipx install autosubs-whisper works too.
For local development from a clone, use uv sync and uv run autosubs.
Usage
autosubs VIDEO [VIDEO ...]
The first run downloads the chosen Whisper model from the Hugging Face Hub (needs internet once); subsequent runs are offline.
Examples:
# Transcribe one file -> creates video.srt beside it
autosubs talk.mp4
# Recurse a directory, English translation, larger model
autosubs ./season1/ --translate --model large-v3
# Force source language, write into a separate folder, regenerate existing
autosubs clip.mkv --language ja --output-dir ./subs --overwrite
Options
| Flag | Default | Description |
|---|---|---|
--preset |
normal |
Quality/speed preset: high (best quality, slowest), normal (balanced), low (fastest, lower quality). |
--model |
preset's model | Override the Whisper model chosen by --preset (tiny, base, small, medium, large-v3, large-v3-turbo, distil-large-v3). |
--translate |
off | Translate speech to English (Whisper task=translate). |
--language |
auto | Force source language ISO code (en, ja, ...). Omit to auto-detect. |
--device |
auto |
auto (CUDA if available, else CPU), cpu, or cuda. |
--compute-type |
int8 |
CTranslate2 compute type (int8, int8_float16, float16). |
--output-dir |
beside input | Directory for .srt files. |
--overwrite |
off | Regenerate .srt files that already exist (default: skip). |
By default, inputs whose target .srt already exists are skipped; pass
--overwrite to regenerate.
Notes
- Audio is decoded directly from video containers via PyAV (bundled with
faster-whisper), so system FFmpeg is not required. If installed,
ffmpegis used as a fallback for exotic codecs PyAV cannot open. - On macOS only the CPU backend is available (no Metal GPU support in
CTranslate2);
int8keeps it reasonably fast. - Presets tune the model and decode settings together. The model is the
dominant quality/speed lever:
high—large-v3. Best accuracy. Slowest (on CPU, roughly 1x realtime or slower, so a 42-minute episode can take an hour+).normal—large-v3-turbo. Near-large-v3accuracy at a fraction of the time. The default.low—small. Fastest, clearly lower accuracy. All presets enable VAD, word-level timestamps, and the anti-repetition / anti-hallucination settings that keep lines from being missed or stuck.--modeloverrides a preset's model if you want a different size.
Release files for autosubs-whisper 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| autosubs_whisper-0.2.0.tar.gz | 80.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autosubs_whisper-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 93.7 kB
Release files / autosubs_whisper-0.2.0.tar.gz
| Download URL | autosubs_whisper-0.2.0.tar.gz |
|---|---|
| Size | 80.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7bcda27757cbe96bb389ad7302adb0568521252818e31f28ba00fe932b97c514
|
|
BLAKE2b-256 checksum How to use checksums |
31b6964403cc6083855f0d26867aeed4e45e9c8c2d46782f799718c96c75f997
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / autosubs_whisper-0.2.0-py3-none-any.whl
| Download URL | autosubs_whisper-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
54eaebff5c68908dfc81dee93dfa1f02cf19b8c8d544217ef61e60c24323042c
|
|
BLAKE2b-256 checksum How to use checksums |
2d2b27f8825c6984b1fe3030a4275a4fe3b50dee3648347f862006f513bf60b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|