BabelFish
January 31, 2026 · View on GitHub
(Douglas Adams, "The Hitchhiker's Guide to the Galaxy").
Translate everything into English (or some other language) with this voice-activated, "organic" (free, private, open-source, offline, off-grid) universal translator, written as a minimal Bash script.
Preorder BabelFish earbuds here Coming soon. In the meantime, run the code on a Linux laptop, PC, or Raspberry Pi. Listen in on other languages, wherever and whenever they are spoken.
Installation
mimic3. None of this requires root access. Install as a normal user. Use this upgraded version that supports python 3.14. Run install.shto install to a virtual environment to ensure compatability. Or install it to the base environment like this:
git clone https://github.com/themanyone/mimic3.git
cd mimic3
pip install --upgrade pip wheel setuptools
pip install -r requirements.txt
pip install .[all]
# If some deps fail to build with bleeding-edge `gcc`
CC=gcc-14 pip install .[all]
# or
CC=clang pip install .[all]
# or
CC=tcc pip install .[all]
whisper.cpp. Install whisper.cpp according to the instructions found there.
Be sure to download the model
ggml-medium-q5_0.bin
models as well. Then, in .bashrc, set the WHISPER_MODELS directory to the location where you stored the models:
export WHISPER_MODELS=[location of your whisper models]
Install whisper-server as a service by copying the service file below to $HOME/.config/systemd/user/whisper.service. Use a different port if you prefer. Just make clients and servers agree on which port to use. The bab script will automatically start the whisper service.
[Unit]
Description=Run Whisper server
Documentation=https://github.com/openai/whisper
[Service]
ExecStart=whisper-server \
-m $WHISPER_MODELS/ggml-medium-q5_0.bin \
-sns --convert --port 7777
[Install]
WantedBy=default.target
You must run systemctl --user daemon-reload after making changes to any systemd unit files (e.g., in ~/.config/systemd/user/) to ensure the systemd user instance picks up the new configuration.
Testing
Change directory to whisper.cppand run the following tests to make sure the setup can hear, translate, and speak a foreign language.
models/download-ggml-model.sh medium-q5_0
whisper-cli -np -pc -l ru -f samples/jfk.wav -m models/ggml-medium-q5_0.bin
mimic3 --voice ru_RU/multi_low "И так, мои другие американцы"
We start the whisper-server with a larger model, such as ggml-medium-q5_0.bin when operating as a translator.
Since mimic3 is capable of sending audio output to a pipe, we can use aplay to send the sound output to another device, such as the BableFish Bluetooth earbuds.
mimic3 "Hello world!" --stdout|aplay -D sysdefault:CARD=Generic
Configuration
To prevent feedback, use the Volume Control's Mixer to route sound output to another device. Or edit bab. Find the line containing aplay and change the --device to your Bablefish Bluetooth audio device. Once paired, use aplay -L to discover the device name.
Running
Once everything is set up, tested and configured, our universal translator should be up and running. The device's language-selection dial should start bab with the desired language to translate into. But we can run bab from the command line, e.g. bab es_ES/m-ailabs_low or bab ru_RU/multi_low.
Similar Projects
Thanks for trying out BabelFish!
- GitHub https://github.com/themanyone
- YouTube https://www.youtube.com/themanyone
- Mastodon https://mastodon.social/@themanyone
- Linkedin https://www.linkedin.com/in/henry-kroll-iii-93860426/
- Buy me a coffee https://buymeacoffee.com/isreality
- TheNerdShow.com
Copyright (C) 2026 Henry Kroll III, www.thenerdshow.com. See LICENSE for details.