Your language toolbox on a USB stick — no internet, no account, no data leaving your computer.
Two portable desktop applications that work entirely offline:
- 🎙️ Transcribe — turn audio and video into text and subtitles
- 📖 Truchement — translate text and documents, and look up words in monolingual dictionaries
Both run from a regular folder or directly from a USB drive. Everything they need — the Python environment, the speech and translation models, the dictionaries — lives next to the executable. Plug the stick into another machine and everything still works, even without a network connection.
- Privacy — your recordings, documents and searches never leave your machine. Nothing is uploaded, ever.
- Availability — works on a train, in the field, behind a strict firewall, or anywhere without connectivity.
- No lock-in — no account, no API key, no subscription. Free and open source (MIT).
| Transcribe | Truchement |
|---|---|
![]() |
![]() |
- Subtitle a video in minutes — drop in a video, get a clean
.srtfile, and optionally embed English + translated subtitle tracks into a single.mkv. - Dictate a text file — record yourself and get a
.txttranscript. - Transcribe into another language — Whisper can transcribe directly to English, or you can translate the subtitles afterwards.
- Clean up difficult audio — built-in loudness normalization, noise reduction and volume adjustment before transcription.
- Grab online media for later — download a video or audio source (via yt-dlp) while you do have a connection, process it offline afterwards.
Typical pipeline:
[Video file]
│
├─ 🔍 Analyze ──────────────── audio info + levels
├─ 🎚️ Preprocess ───────────── loudnorm / denoise / volume
▼
📝 Transcribe (Whisper) ───────── movie.en.srt
▼
🌐 Translate subtitles ────────── movie.fr.srt (or any installed language)
▼
📦 Mux with FFmpeg ────────────── movie.mkv (both subtitle tracks embedded)
- Translate text between dozens of language pairs (English, French, Spanish, German, Portuguese, Italian, Russian, Japanese, Chinese, Arabic and more), powered by Argos Translate — the same open models used by LibreTranslate.
- Translate whole documents —
.txt,.srt,.docx,.pdf, and.html(HTML keeps its structure, styles and scripts intact; only visible text is translated). - Look up definitions in offline monolingual dictionaries (English, French, Spanish, German, Italian, Portuguese… and more available), with full-text search. Select a word in a translation and jump straight to its definition.
- Interface in your language — the UI adapts to your system locale and can be switched at any time.
Baluchon is a small companion launcher that downloads the heavy parts for you (Whisper models, dictionaries, translation packages, the Python environment) and can create desktop shortcuts — handy when the apps live on a USB stick.
- Download the latest release of Transcribe/Truchement from the Releases page and unzip it where you want it to live (folder or USB drive).
- Run Baluchon in that folder and let it fetch the components listed in
downloads.csv. - Launch
transcribeortruchement. Done.
-
Unzip a release (or clone this repository) into its final location.
-
Create the embedded Python environment (this installs Argos Translate and the language packages into the app folder — it will not touch your system Python):
cd build/python ./setup_venv_lang.sh -
Download one or more Whisper models into
build/whisper/models/— pick according to your machine:Model Size Good for ggml-base.bin ~150 MB quick drafts, modest hardware ggml-medium.bin ~1.5 GB good accuracy / speed balance ggml-large-v3-turbo-q8_0.bin ~0.9 GB best quality on capable machines -
Download the dictionaries you want into
build/dic/(one file per language, ~SQLite databases):en-en · fr-fr · es-es · de-de · it-it · pt-pt
More languages (ru, ro, da, el, ja, tr, sv, zh…) are listed in
downloads.csv. -
Launch the app:
./truchement # translation & dictionaries ./transcribe # transcription & subtitles
Windows: support is in active development. The apps are designed to run from the same folder layout on both systems; a Windows build will be published in the releases.
This is a first-class use case, not an afterthought:
- Copy the whole application folder to the stick — models, dictionaries and the Python environment travel with it.
- Nothing is written to the host machine's user profile; language packages and settings stay inside the app folder (
build/argos-data/,build/dic/…). - On Linux, prefer copying with
cp -aorrsync -a. On file systems that don't support symbolic links (exFAT, FAT32, NTFS), make sure the embedded environment was created in "copies" mode — the release archives are prepared this way. - If something was lost in a copy, Truchement includes a built-in diagnostic that tells you exactly what is missing and how to fix it, instead of failing silently.
transcribe/ ← the whole app: copy this folder, and it works
├── transcribe, truchement ← the executables
├── build/
│ ├── python/venv/ ← embedded Python env (never touches system Python)
│ ├── whisper/models/ ← speech-to-text models (*.bin)
│ ├── argos-data/packages/ ← installed translation packages
│ ├── dic/ ← offline dictionaries (*.db)
│ ├── ffmpeg/ ← media toolbox
│ └── yt-dlp/ ← media downloader
├── i18n/ ← interface translations
└── *.sh ← command-line shortcuts for power users
Dictionaries are plain SQLite databases — a table entries {lemma, definition} plus an entries_fts full-text index — so you can build your own or convert existing ones (e.g. with PyGlossary).
Everything the GUIs do is also scriptable. A few examples:
| Script | What it does |
|---|---|
audio2srt.sh |
audio/video → subtitle file |
audio2en.sh |
audio in any language → English text |
traduire-srt.sh |
translate an existing .srt |
soustitre.sh |
full video → subtitled video pipeline |
creerMKV.sh / inclure-srt.sh |
embed subtitle tracks into an .mkv |
enregistrer.sh |
record from the microphone |
download_url.sh |
fetch online media for offline processing |
- "No languages installed" in Truchement — the translation packages are missing from
build/argos-data/packages/. Re-runbuild/python/setup_venv_lang.sh(or Baluchon), or use the in-app Diagnose button to see where the app is looking. - First translation is slow — the first use of a language pair loads its model into memory (a few seconds). Subsequent translations are near-instant.
- App works on one machine but not after copying to a stick — the copy probably dropped symbolic links. Recopy with
cp -a/rsync -a, or use the release archives, which are link-free.
- ✅ Linux support
- 🚧 Windows build (single stick usable on both OSes)
- 🚧 In-app management of translation packages and dictionaries
- 💡 Automatic source-language detection
- 💡 More dictionaries
Suggestions and bug reports are welcome in the issue tracker.
- whisper.cpp — offline speech recognition
- Argos Translate — offline neural translation
- FFmpeg — audio/video processing
- yt-dlp — media downloading
- PyGlossary — dictionary conversion
MIT — see LICENSE.
« Truchement » is an old French word for an interpreter — someone who carries meaning between languages. That's exactly what this toolbox does, and it fits in your pocket.

