An open API service indexing awesome lists of open source software.

https://github.com/umutcetinkaya/live-translator

Real-time system audio translation for macOS. Translate any audio playing on your Mac — YouTube, podcasts, meetings — live on screen.
https://github.com/umutcetinkaya/live-translator

gpt live-translator macos openai piper-tts real-time screencapturekit simultaneous-translation speech-recognition subtitle text-to-speech translation

Last synced: 29 days ago
JSON representation

Real-time system audio translation for macOS. Translate any audio playing on your Mac — YouTube, podcasts, meetings — live on screen.

Awesome Lists containing this project

README

          


Live Translator

Live Translator


Real-time system audio translation for macOS

Translate any audio playing on your Mac — YouTube, podcasts, meetings, movies — live on screen.


Release
Stars
macOS
Python
License



Download

  

Buy Me a Coffee

---

## Why?

You're watching a YouTube video in Japanese. A podcast in Arabic. A meeting in German. You don't speak these languages — but you want to understand **everything**, **right now**.

Live Translator sits quietly in your menu bar, captures whatever audio your Mac is playing, and shows you a live, flowing translation on screen. No copy-pasting, no tab switching, no waiting. Just play audio and read.

It's not a word-by-word subtitler. It uses a **live document model** — the AI sees the full conversation, maintains context, and produces natural translations that read like a human wrote them.

```
System Audio → Speech Recognition → AI Translation → Live Overlay
(ScreenCaptureKit) (SFSpeechRecognizer) (OpenAI GPT) (WebKit Panel)
```

## Demo

### 🇬🇧 English → 🇹🇷 Turkish
English to Turkish demo

### 🇯🇵 Japanese → 🇹🇷 Turkish
Japanese to Turkish demo

### 🇸🇦 Arabic → 🇹🇷 Turkish
Arabic to Turkish demo

### 🇸🇦 Arabic → Multi Language
Arabic to Multi Language demo

## Features

- **Real-time translation** of any audio on your Mac
- **11 source languages** — English, German, French, Spanish, Italian, Japanese, Chinese, Korean, Russian, Arabic, Portuguese
- **12 target languages** — translate into any supported language
- **Context-aware AI** — maintains full conversation context, never loses track
- **Live document model** — translation grows like a live document, new parts highlighted
- **Text-to-Speech** — hear translations read aloud (Piper offline, OpenAI or Gemini voices)
- **Multi-provider** — choose OpenAI or Google Gemini; just add your API key
- **Latest AI models** — GPT-5.5, GPT-5.4 mini/nano, Gemini 2.5 Flash, Gemini 3.5 Flash, and more
- **Floating overlay** — dark-themed panel, draggable, always on top
- **In-app settings** — provider, API keys, model, TTS, languages — all configurable from the UI
- **No audio drivers needed** — uses ScreenCaptureKit (macOS 13+)
- **On-device STT** (default) — speech recognition works without internet; audio never leaves your Mac
- **Optional realtime mode** — lower latency via OpenAI's Realtime Translation model; audio is streamed to the provider
- **Auto-recovery** — watchdog detects and recovers from stuck states
- **Menu bar app** — runs quietly with 🌐 icon in menu bar

## What's New in v0.1.0

- **Multi-provider architecture** — pick OpenAI or Google Gemini for translation; switch any time from Settings.
- **Latest models** — refreshed model list (OpenAI GPT-5.5 / 5.4 mini / 5.4 nano, Gemini 2.5 Flash / Flash-Lite, Gemini 3.5 Flash). The model dropdown updates to match the selected provider.
- **Optional realtime mode** — stream audio to OpenAI's Realtime Translation model for lower latency, with a clear privacy warning. On-device STT stays the default.
- **Dynamic system-audio capture** — audio sources opened *after* the app starts are now captured automatically.
- **Redesigned Settings** — grouped sections, provider-aware fields, dual API keys, and clearer controls.
- **More robust** — graceful fallback and clear messaging when a provider, key, or connection fails; "no audio detected" hint when the source is silent.

## Install

### Option 1: DMG (Recommended)


Download DMG

1. Download → Open DMG → Drag to **Applications**
2. Launch → Setup wizard guides you through everything
3. Enter your **OpenAI API key** ([get one here](https://platform.openai.com))
4. Grant **Screen & System Audio Recording** permission when prompted
5. Play any audio → translations appear live

> **First launch:** If macOS blocks the app, right-click → Open, or run `xattr -cr /Applications/Live\ Translator.app`

### Option 2: Homebrew

```bash
brew tap umutcetinkaya/tap
brew install --cask live-translator
```

### Option 3: From Source

```bash
git clone https://github.com/umutcetinkaya/live-translator.git
cd live-translator
make install # Create venv + install deps
make models # Download TTS voice models (~580MB)
make run # Launch
```

## Quick Start

1. Launch → floating panel appears + 🌐 in menu bar
2. Click **⚙ Settings** → enter your OpenAI API key
3. Select **source language** (what's being spoken) and **target language** (what you want to read)
4. Play any audio → translations appear in real-time
5. New translations are **highlighted** so you always know what just changed

### Controls

| Control | Action |
|---------|--------|
| Source / Target dropdowns | Change languages |
| ⚙ Settings | API key, model, TTS provider, voice, speed |
| TTS Off / On | Toggle text-to-speech |
| Clear | Reset translation history |
| ✕ | Quit |
| Menu bar 🌐 | Pause, Show/Hide, Quit |

## Text-to-Speech

| Provider | Pros | Cons |
|----------|------|------|
| **Piper** (default) | Free, offline, fast | Robotic voice |
| **OpenAI TTS** | Natural voices (Nova, Shimmer, Alloy, Echo, Fable, Onyx) | Costs money |
| **Gemini TTS** | Natural voices via Gemini | Costs money |

TTS plays through the same process — the app's own voice is automatically filtered from capture. No feedback loops.

## Supported Models

Pick a provider in Settings, paste its API key, and the model list updates automatically.

**OpenAI**

| Model | Speed | Cost | Best For |
|-------|-------|------|----------|
| GPT-5.4 mini | ⚡ Fastest | ¢ | Daily use (default) |
| GPT-5.4 nano | ⚡ Fastest | ¢ | Budget |
| GPT-5.5 | 🚀 Fast | $$ | Latest + Quality |

**Google Gemini**

| Model | Speed | Cost | Best For |
|-------|-------|------|----------|
| Gemini 2.5 Flash | ⚡ Fastest | ¢ | Daily use |
| Gemini 2.5 Flash-Lite | ⚡ Fastest | ¢ | Budget |
| Gemini 3.5 Flash | 🚀 Fast | $$ | Latest + Quality |

> **Recommendation:** GPT-4o Mini or GPT-4.1 Nano for real-time translation (fast + cheap).

## How It Works

Live Translator runs two independent agents in parallel:

1. **Listener** — continuously captures system audio via ScreenCaptureKit and transcribes it on-device using SFSpeechRecognizer
2. **Translator** — every ~3 seconds, takes the full accumulated transcript and sends it to your chosen provider (OpenAI or Gemini)

The AI is instructed to **preserve its previous translation** and only **append or refine new content**. The overlay highlights what changed, so you can always follow along.

This means:
- Context is never lost
- Incomplete sentences get refined next cycle
- The translation reads as a coherent, flowing document
- No disconnected fragments

### Realtime mode (optional)

By default, speech recognition runs **on-device** — your audio never leaves the Mac, only text is sent to the translation provider. For lower latency you can enable **Realtime mode** in Settings (OpenAI provider), which streams audio directly to OpenAI's Realtime Translation model and returns the translation as it speaks. This trades privacy for speed: **audio is sent to the provider**. A warning is shown in Settings when you enable it. On-device mode remains the default.

## Architecture

```
live-translator/
├── main.py # Entry point + menu bar
├── src/
│ ├── audio_capture.py # ScreenCaptureKit system audio
│ ├── speech_recognizer.py # SFSpeechRecognizer + watchdog + ring buffer
│ ├── translator.py # OpenAI live document translation
│ ├── pipeline.py # Listener + Translator orchestrator
│ ├── overlay.py # WebKit floating panel (HTML/CSS/JS)
│ ├── tts.py # Piper (offline) / OpenAI TTS
│ └── config.py # JSON settings
├── models/ # Piper voice models (downloaded separately)
├── scripts/
│ ├── build_app.sh # Build .app bundle
│ ├── build_dmg.sh # Create DMG installer
│ ├── download_models.sh # Download TTS models
│ ├── notarize.sh # Apple notarization
│ ├── setup_wizard.swift # Native macOS setup wizard
│ └── launcher.c # Native .app launcher
├── assets/ # App icon + demo media
├── Makefile
├── requirements.txt
├── CONTRIBUTING.md
├── SECURITY.md
└── LICENSE
```

## Configuration

Settings are stored in `~/.live-translator.json` and can be changed from the in-app Settings panel:

```json
{
"openai_api_key": "sk-...",
"source_locale": "en-US",
"target_lang": "tr",
"model": "gpt-5.4-mini",
"tts_provider": "piper",
"tts_voice": "nova",
"tts_speed": 1.0
}
```

## Troubleshooting

| Problem | Solution |
|---------|----------|
| "Damaged and can't be opened" | Run `xattr -cr /Applications/Live\ Translator.app` |
| No audio detected | Grant Screen & System Audio Recording permission, restart app |
| STT stops working | Built-in watchdog auto-recovers within 10 seconds |
| Translation not appearing | Check your provider's API key in Settings (OpenAI or Gemini) |
| TTS not working | Check TTS provider in Settings |
| App not in dock | By design — it's a menu bar app (🌐) |

## Requirements

- **macOS 13 (Ventura)** or later
- **Python 3.11+** (auto-installed via setup wizard if missing)
- **OpenAI API key** ([get one here](https://platform.openai.com))

---


If Live Translator helps you, give it a ⭐ on GitHub — it helps others find it!



Star on GitHub

---

## Support the Project


Buy Me a Coffee

## License

MIT — see [LICENSE](LICENSE).

Copyright © 2025 [Umut Çetinkaya](https://umutcetinkaya.com)

## Credits

- [ScreenCaptureKit](https://developer.apple.com/documentation/screencapturekit) — macOS audio capture
- [SFSpeechRecognizer](https://developer.apple.com/documentation/speech) — on-device speech recognition
- [OpenAI API](https://platform.openai.com) — AI translation
- [Piper TTS](https://github.com/rhasspy/piper) — offline text-to-speech
- [PyObjC](https://pyobjc.readthedocs.io) — Python ↔ macOS bridge