Real-time speech translation with transparent on-screen subtitles. 100% local, no cloud
See the code
Speak in one language, be heard in another — in real time.
100% local. No cloud. No API keys. No data leaves your machine.
Features • Quick Start • Build from Source • Architecture • Contributing
LiveTranslate captures audio from your microphone, transcribes it with a local AI model, and translates it in real time. The translation can be shown as an on-screen subtitle overlay and/or spoken aloud by a text-to-speech engine.
The main use case is live video calls: you speak in your language, LiveTranslate translates and plays the audio through a virtual audio cable, and the other person on Zoom, Teams, or Meet hears you in their language — with no interpreter and no cloud service involved.
LiveTranslate works like a simultaneous interpreter — you don't have to stop speaking for the translation to happen:
flowchart LR
A["🎙️ Microphone"] --> B["Parakeet TDT 0.6B v3\nSpeech → Text\n(streaming, sentence by sentence)"]
B --> C["MarianMT\nText → Translated Text\n(per language pair)"]
C --> D["📺 Live Subtitle Overlay"]
C --> E["Your cloned voice / Piper\nText → Speech"]
E --> F["🔌 Virtual Cable\n→ Zoom / Teams / Meet"]
Everything runs locally on your machine. No audio or text is ever sent to the cloud.
To route the translated audio into a video call, you need a virtual audio cable driver:
Without the virtual cable, LiveTranslate still works — you see the subtitles and hear the translation through your speakers, but the other party on the call won't hear the translated audio.
pip install, no environment variablesThe PTT shortcut is user-configurable — click the "Capture" button in settings and press any key combination (e.g. CapsLock, Ctrl+Shift+Space, Ctrl+\). No shortcuts are hardcoded.
In PTT mode: hold the shortcut to record, release to stop and translate.
Grab the latest installer from the Releases page:
LiveTranslate-windows-x64-setup.exeLiveTranslate-macos-aarch64.dmg — unsigned build, see docs/MACOS.mdRequirements:
git clone https://github.com/NBS282/LiveTranslate.git
cd LiveTranslate
pnpm install
pnpm tauri dev # development mode with hot-reload
pnpm tauri build # production build
For detailed instructions, see CONTRIBUTING.md.
graph TD
subgraph app["Tauri Desktop App"]
subgraph frontend["Frontend — TypeScript + Vite"]
MW["Main Window"]
OW["Subtitle Overlay\nalways-on-top · click-through"]
end
subgraph rust["Backend — Rust"]
AUDIO["Audio Capture\ncpal (WASAPI / CoreAudio)"]
STT["Native Speech-to-Text\nParakeet-TDT 0.6B v3 GGUF\ntranscribe.cpp — CPU / Metal"]
SETUP["Setup Wizard"]
ENGINE_MGR["Engine Manager"]
CMDS["Tauri Commands & Events"]
end
end
subgraph engine["AI Engine — Python + FastAPI"]
MT["Translation\nMarianMT — one model per direction\nalternative: Canary 1B Flash (AST)"]
TTS["Text-to-Speech\nPocket TTS (cloned voice) / Piper"]
end
MIC["🎙️ Microphone"] --> AUDIO
AUDIO --> STT
STT --> CMDS
CMDS <-->|"Tauri events"| MW
ENGINE_MGR -->|"spawns process"| engine
CMDS -->|"HTTP — localhost\nfinals + streaming partials"| MT
MT -->|"live subtitle text"| OW
MT --> TTS
TTS -->|"audio playback\n→ virtual cable"| MW
SETUP -->|"first run only"| HF["HuggingFace Hub\nmodels downloaded once"]
| Layer | Technology |
|---|---|
| Frontend | Vanilla TypeScript, Vite |
| Desktop shell | Tauri 2 (Rust) |
| Audio capture | cpal (WASAPI on Windows, CoreAudio on macOS) |
| Speech-to-text | Parakeet TDT 0.6B v3 (multilingual ASR), native in Rust via transcribe.cpp — GGUF, CPU (tinyBLAS) / Metal on macOS |
| Translation | MarianMT (one opus-mt model per direction) |
| Alternative engine | Canary 1B Flash, speech→translated text in one pass (LT_TRANSLATION_ENGINE=canary, model downloads on first use) |
| Text-to-speech | Pocket TTS (voice cloning) / Piper TTS |
| Engine server | FastAPI (Python 3.12) — translation + TTS |
| Updates | Tauri updater — signed releases, one-click in-app update |
LiveTranslate is in active development. Current focus areas:
Does it work offline? Yes. After the first setup downloads the models, everything runs locally with no internet connection required.
Does it require a GPU? No. Speech recognition runs natively on CPU (Metal-accelerated on Apple Silicon), and the rest of the pipeline is CPU-friendly too.
What languages are supported? English ↔ Spanish, French, and German, in both directions (default: Spanish → English). You pick the pair in the app.
Is my data private? 100%. Everything runs on your machine. No audio, text, or any data ever leaves your computer.
Does it work with any video call app? Yes. LiveTranslate translates your microphone and plays the result through a virtual audio cable. You then select that cable as your microphone inside the call app. This works with any app that lets you choose an audio input — Zoom, Teams, Google Meet, Discord, and others.
Can I use it to translate audio I'm listening to? Not yet — today LiveTranslate translates your microphone. System audio mode (translating videos, streams, or the other side of a call) is on the roadmap.
See CONTRIBUTING.md for detailed setup and guidelines.
Quick summary:
pnpm installAll contributions welcome — bug fixes, features, docs, tests.
MIT © 2026 Nicolás B. S. — see LICENSE for details.
212 commits
Rust
51.6%
Python
21.9%
TypeScript
14.7%
CSS
6.9%
HTML
4.7%
Real-time speech translation with transparent on-screen subtitles. 100% local, no cloud
See the code
Speak in one language, be heard in another — in real time.
100% local. No cloud. No API keys. No data leaves your machine.
Features • Quick Start • Build from Source • Architecture • Contributing
LiveTranslate captures audio from your microphone, transcribes it with a local AI model, and translates it in real time. The translation can be shown as an on-screen subtitle overlay and/or spoken aloud by a text-to-speech engine.
The main use case is live video calls: you speak in your language, LiveTranslate translates and plays the audio through a virtual audio cable, and the other person on Zoom, Teams, or Meet hears you in their language — with no interpreter and no cloud service involved.
LiveTranslate works like a simultaneous interpreter — you don't have to stop speaking for the translation to happen:
flowchart LR
A["🎙️ Microphone"] --> B["Parakeet TDT 0.6B v3\nSpeech → Text\n(streaming, sentence by sentence)"]
B --> C["MarianMT\nText → Translated Text\n(per language pair)"]
C --> D["📺 Live Subtitle Overlay"]
C --> E["Your cloned voice / Piper\nText → Speech"]
E --> F["🔌 Virtual Cable\n→ Zoom / Teams / Meet"]
Everything runs locally on your machine. No audio or text is ever sent to the cloud.
To route the translated audio into a video call, you need a virtual audio cable driver:
Without the virtual cable, LiveTranslate still works — you see the subtitles and hear the translation through your speakers, but the other party on the call won't hear the translated audio.
pip install, no environment variablesThe PTT shortcut is user-configurable — click the "Capture" button in settings and press any key combination (e.g. CapsLock, Ctrl+Shift+Space, Ctrl+\). No shortcuts are hardcoded.
In PTT mode: hold the shortcut to record, release to stop and translate.
Grab the latest installer from the Releases page:
LiveTranslate-windows-x64-setup.exeLiveTranslate-macos-aarch64.dmg — unsigned build, see docs/MACOS.mdRequirements:
git clone https://github.com/NBS282/LiveTranslate.git
cd LiveTranslate
pnpm install
pnpm tauri dev # development mode with hot-reload
pnpm tauri build # production build
For detailed instructions, see CONTRIBUTING.md.
graph TD
subgraph app["Tauri Desktop App"]
subgraph frontend["Frontend — TypeScript + Vite"]
MW["Main Window"]
OW["Subtitle Overlay\nalways-on-top · click-through"]
end
subgraph rust["Backend — Rust"]
AUDIO["Audio Capture\ncpal (WASAPI / CoreAudio)"]
STT["Native Speech-to-Text\nParakeet-TDT 0.6B v3 GGUF\ntranscribe.cpp — CPU / Metal"]
SETUP["Setup Wizard"]
ENGINE_MGR["Engine Manager"]
CMDS["Tauri Commands & Events"]
end
end
subgraph engine["AI Engine — Python + FastAPI"]
MT["Translation\nMarianMT — one model per direction\nalternative: Canary 1B Flash (AST)"]
TTS["Text-to-Speech\nPocket TTS (cloned voice) / Piper"]
end
MIC["🎙️ Microphone"] --> AUDIO
AUDIO --> STT
STT --> CMDS
CMDS <-->|"Tauri events"| MW
ENGINE_MGR -->|"spawns process"| engine
CMDS -->|"HTTP — localhost\nfinals + streaming partials"| MT
MT -->|"live subtitle text"| OW
MT --> TTS
TTS -->|"audio playback\n→ virtual cable"| MW
SETUP -->|"first run only"| HF["HuggingFace Hub\nmodels downloaded once"]
| Layer | Technology |
|---|---|
| Frontend | Vanilla TypeScript, Vite |
| Desktop shell | Tauri 2 (Rust) |
| Audio capture | cpal (WASAPI on Windows, CoreAudio on macOS) |
| Speech-to-text | Parakeet TDT 0.6B v3 (multilingual ASR), native in Rust via transcribe.cpp — GGUF, CPU (tinyBLAS) / Metal on macOS |
| Translation | MarianMT (one opus-mt model per direction) |
| Alternative engine | Canary 1B Flash, speech→translated text in one pass (LT_TRANSLATION_ENGINE=canary, model downloads on first use) |
| Text-to-speech | Pocket TTS (voice cloning) / Piper TTS |
| Engine server | FastAPI (Python 3.12) — translation + TTS |
| Updates | Tauri updater — signed releases, one-click in-app update |
LiveTranslate is in active development. Current focus areas:
Does it work offline? Yes. After the first setup downloads the models, everything runs locally with no internet connection required.
Does it require a GPU? No. Speech recognition runs natively on CPU (Metal-accelerated on Apple Silicon), and the rest of the pipeline is CPU-friendly too.
What languages are supported? English ↔ Spanish, French, and German, in both directions (default: Spanish → English). You pick the pair in the app.
Is my data private? 100%. Everything runs on your machine. No audio, text, or any data ever leaves your computer.
Does it work with any video call app? Yes. LiveTranslate translates your microphone and plays the result through a virtual audio cable. You then select that cable as your microphone inside the call app. This works with any app that lets you choose an audio input — Zoom, Teams, Google Meet, Discord, and others.
Can I use it to translate audio I'm listening to? Not yet — today LiveTranslate translates your microphone. System audio mode (translating videos, streams, or the other side of a call) is on the roadmap.
See CONTRIBUTING.md for detailed setup and guidelines.
Quick summary:
pnpm installAll contributions welcome — bug fixes, features, docs, tests.
MIT © 2026 Nicolás B. S. — see LICENSE for details.
212 commits
Rust
51.6%
Python
21.9%
TypeScript
14.7%
CSS
6.9%
HTML
4.7%