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!

Copyright (C) 2026 Henry Kroll III, www.thenerdshow.com. See LICENSE for details.