Generating subtitles automatically
If a video has no subtitle file, the "Subtitles…" dialog's
"Generate subtitles" button transcribes the video's audio into a
subtitle file automatically, using
whisper.cpp's whisper-cli
speech-recognition tool. This runs entirely on your own computer — nothing
is uploaded anywhere. The same button works the same way in the Audio
source, for a recorded or opened audio file.
TrangoPlayer doesn't bundle whisper-cli itself, so it needs to be
installed and reachable separately. Note that this is not the
openai-whisper Python package (whose CLI is whisper, with different
flags) — it specifically means whisper.cpp's own whisper-cli binary.
ffmpeg is also required for video. whisper-cli only reads a
handful of raw audio formats — not video containers like .mp4/.mkv —
so TrangoPlayer extracts the video's audio to a temporary file with
ffmpeg first. This happens automatically, but ffmpeg needs to be
installed and on your PATH. It's extremely commonly preinstalled, or a
one-line install: sudo apt install ffmpeg / brew install ffmpeg / the
official builds for Windows.
Generating subtitles for the Audio source's recordings doesn't need
ffmpeg — they're already audio, so whisper-cli reads them directly.
Installing whisper-cli
Linux: Debian/Ubuntu ship a package:
sudo apt install whisper.cpp
This installs whisper-cli straight onto PATH — no build step needed.
If your distro doesn't package it (or you want a newer version), build
from source instead — no unusual dependencies, just a C++ toolchain and
CMake:
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build
cmake --build build --config Release
This produces build/bin/whisper-cli. Copy or symlink it onto your
PATH (e.g. ~/.local/bin), or point TrangoPlayer at it directly — see
Settings.
Windows: whisper.cpp's GitHub Releases page publishes prebuilt
Windows binaries (no build toolchain needed) — download the archive
matching your CPU/GPU setup and extract whisper-cli.exe somewhere
convenient. Building from source works the same way as Linux, using
CMake with Visual Studio's toolchain, if you'd rather build it yourself.
Getting a model
whisper-cli also needs a ggml/gguf model file, downloaded separately —
whisper.cpp's repo includes a models/download-ggml-model.sh script for
fetching one (e.g. ./models/download-ggml-model.sh medium for a
mid-sized multilingual model). Larger models transcribe more accurately
but take longer and use more memory.
Model size matters a lot for anything other than English. Whisper's
smaller models (tiny/base/small) are trained on mostly English data,
so quality for lower-resource languages — Hebrew is a good example —
drops noticeably compared to English. For non-English language-learning
videos, prefer medium or large-v3 (both multilingual — don't use an
.en-suffixed model, those are English-only and won't transcribe
anything else). English-only content can still use the smaller, faster
base.en/small.en models fine.
Where you put the downloaded file doesn't matter much — TrangoPlayer's
model picker (below) can browse to wherever it ends up, but dropping it
in ~/whisper.cpp/models/ (if you built from source there) or ./models
(relative to wherever you run TrangoPlayer from) means the picker finds
it automatically without any manual navigation.
Picking a model in TrangoPlayer
The Subtitles dialog's "select a whisper model…" row opens an in-app
folder browser (not your operating system's file picker) scoped to
.bin/.gguf files. It starts in whichever likely folder it finds
first, but you can navigate anywhere. The pick is remembered across
restarts (see Settings). The language passed to
whisper-cli is inferred automatically from the model's filename
(whisper.cpp's own .en-suffix convention) — there's no separate
language setting to configure.
"Generate subtitles" stays disabled until a model is selected. If
whisper-cli itself can't be found, or a transcription run otherwise
fails, the dialog shows a message explaining what went wrong rather than
a generic failure.