A pocket translator that works with no signal at all
Hold the button, ask the pharmacist your question in English, let go: moments later the box says it in Spanish. They answer in Spanish, and it replies in English. whisper.cpp hears and works out which language was spoken, NLLB translates, Piper speaks, all on a Raspberry Pi 5 in your pocket with no internet. You'll run the whole pipeline on your PC first.
- A clear view of the trade-offs: which model is fast, which is accurate, and where errors come from
- A kit: pipeline script, NLLB wrapper, config, Pi setup script, systemd service and parts list
- A Raspberry Pi 5 4GB (£105.60) with the active cooler and a 64GB card
- A USB microphone, a small USB speaker, a push button and a USB-C power bank
- Python via uv on your PC, and about 2GB of disk for models
- Done Translate offline privately? It covers Argos on its own. New to speech recognition: Subtitles for any video
Three models in a row
Understand the chain and where each kind of mistake comes from.
Listen: whisper.cpp ↗OpenAI's Whisper speech recognition, rewritten in C++ to run fast on ordinary CPUs, including the Pi. With
-l autoit detects the spoken language first, which is what makes a two-way conversation possible: whoever talks, the translator knows which way to go.Translate: NLLB-200 or ArgosMeta's NLLB-200 (No Language Left Behind) covers 200 languages; the 600M distilled version, converted to int8 for CTranslate2, is about 620MB and runs well on a Pi. Its licence is CC-BY-NC 4.0: personal use, which a travel translator is. Argos Translate is lighter, open licensed and simple, and slightly weaker on everyday phrases.
Speak: Piper ↗Natural voices for dozens of languages, about 60MB each, fast enough to start talking almost immediately once loaded.
Errors compoundIf whisper mishears a word, the translator faithfully translates the wrong word. A good microphone close to the speaker's mouth improves the whole chain more than any model swap.
The kitDownload the kit or open kit.md.