{"id":50454677,"url":"https://github.com/umutcetinkaya/live-translator","last_synced_at":"2026-06-09T00:01:17.801Z","repository":{"id":348113754,"uuid":"1196237476","full_name":"umutcetinkaya/live-translator","owner":"umutcetinkaya","description":"Real-time system audio translation for macOS. Translate any audio playing on your Mac — YouTube, podcasts, meetings — live on screen.","archived":false,"fork":false,"pushed_at":"2026-03-30T20:49:09.000Z","size":1130,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-30T22:13:07.665Z","etag":null,"topics":["gpt","live-translator","macos","openai","piper-tts","real-time","screencapturekit","simultaneous-translation","speech-recognition","subtitle","text-to-speech","translation"],"latest_commit_sha":null,"homepage":"https://buymeacoffee.com/umutcetinkaya","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/umutcetinkaya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-30T14:00:32.000Z","updated_at":"2026-03-30T20:49:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/umutcetinkaya/live-translator","commit_stats":null,"previous_names":["umutcetinkaya/live-translator"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/umutcetinkaya/live-translator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umutcetinkaya%2Flive-translator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umutcetinkaya%2Flive-translator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umutcetinkaya%2Flive-translator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umutcetinkaya%2Flive-translator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/umutcetinkaya","download_url":"https://codeload.github.com/umutcetinkaya/live-translator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umutcetinkaya%2Flive-translator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34085321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gpt","live-translator","macos","openai","piper-tts","real-time","screencapturekit","simultaneous-translation","speech-recognition","subtitle","text-to-speech","translation"],"created_at":"2026-06-01T02:00:21.372Z","updated_at":"2026-06-09T00:01:17.795Z","avatar_url":"https://github.com/umutcetinkaya.png","language":"Python","funding_links":["https://buymeacoffee.com/umutcetinkaya"],"categories":["翻訳ツール"],"sub_categories":["オーディオ録音・処理"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/icon.iconset/icon_256x256.png\" width=\"128\" height=\"128\" alt=\"Live Translator\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eLive Translator\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eReal-time system audio translation for macOS\u003c/strong\u003e\u003cbr\u003e\n  Translate any audio playing on your Mac — YouTube, podcasts, meetings, movies — live on screen.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/umutcetinkaya/live-translator/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/umutcetinkaya/live-translator?style=flat-square\u0026color=brightgreen\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/umutcetinkaya/live-translator/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/umutcetinkaya/live-translator?style=flat-square\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/macOS-13%2B-blue?style=flat-square\" alt=\"macOS\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3.11%2B-yellow?style=flat-square\" alt=\"Python\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/umutcetinkaya/live-translator/releases/latest/download/LiveTranslator-v0.1.0-macOS.dmg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/⬇_Download_DMG-brightgreen?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"Download\" height=\"36\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://buymeacoffee.com/umutcetinkaya\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Buy_Me_a_Coffee-☕-orange?style=for-the-badge\" alt=\"Buy Me a Coffee\" height=\"36\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Why?\n\nYou'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**.\n\nLive 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.\n\nIt'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.\n\n```\nSystem Audio → Speech Recognition → AI Translation → Live Overlay\n(ScreenCaptureKit)  (SFSpeechRecognizer)  (OpenAI GPT)     (WebKit Panel)\n```\n\n## Demo\n\n### 🇬🇧 English → 🇹🇷 Turkish\n\u003cimg src=\"assets/videos/en-to-tr-demo.gif\" width=\"100%\" alt=\"English to Turkish demo\"\u003e\n\n### 🇯🇵 Japanese → 🇹🇷 Turkish\n\u003cimg src=\"assets/videos/jp-to-tr-demo.gif\" width=\"100%\" alt=\"Japanese to Turkish demo\"\u003e\n\n### 🇸🇦 Arabic → 🇹🇷 Turkish\n\u003cimg src=\"assets/videos/ar-to-tr-demo.gif\" width=\"100%\" alt=\"Arabic to Turkish demo\"\u003e\n\n### 🇸🇦 Arabic → Multi Language\n\u003cimg src=\"assets/videos/ar-to-multi-lang-demo.gif\" width=\"100%\" alt=\"Arabic to Multi Language demo\"\u003e\n\n## Features\n\n- **Real-time translation** of any audio on your Mac\n- **11 source languages** — English, German, French, Spanish, Italian, Japanese, Chinese, Korean, Russian, Arabic, Portuguese\n- **12 target languages** — translate into any supported language\n- **Context-aware AI** — maintains full conversation context, never loses track\n- **Live document model** — translation grows like a live document, new parts highlighted\n- **Text-to-Speech** — hear translations read aloud (Piper offline, OpenAI or Gemini voices)\n- **Multi-provider** — choose OpenAI or Google Gemini; just add your API key\n- **Latest AI models** — GPT-5.5, GPT-5.4 mini/nano, Gemini 2.5 Flash, Gemini 3.5 Flash, and more\n- **Floating overlay** — dark-themed panel, draggable, always on top\n- **In-app settings** — provider, API keys, model, TTS, languages — all configurable from the UI\n- **No audio drivers needed** — uses ScreenCaptureKit (macOS 13+)\n- **On-device STT** (default) — speech recognition works without internet; audio never leaves your Mac\n- **Optional realtime mode** — lower latency via OpenAI's Realtime Translation model; audio is streamed to the provider\n- **Auto-recovery** — watchdog detects and recovers from stuck states\n- **Menu bar app** — runs quietly with 🌐 icon in menu bar\n\n## What's New in v0.1.0\n\n- **Multi-provider architecture** — pick OpenAI or Google Gemini for translation; switch any time from Settings.\n- **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.\n- **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.\n- **Dynamic system-audio capture** — audio sources opened *after* the app starts are now captured automatically.\n- **Redesigned Settings** — grouped sections, provider-aware fields, dual API keys, and clearer controls.\n- **More robust** — graceful fallback and clear messaging when a provider, key, or connection fails; \"no audio detected\" hint when the source is silent.\n\n## Install\n\n### Option 1: DMG (Recommended)\n\n\u003ca href=\"https://github.com/umutcetinkaya/live-translator/releases/latest/download/LiveTranslator-v0.1.0-macOS.dmg\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/⬇_Download_DMG-brightgreen?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"Download DMG\"\u003e\n\u003c/a\u003e\n\n1. Download → Open DMG → Drag to **Applications**\n2. Launch → Setup wizard guides you through everything\n3. Enter your **OpenAI API key** ([get one here](https://platform.openai.com))\n4. Grant **Screen \u0026 System Audio Recording** permission when prompted\n5. Play any audio → translations appear live\n\n\u003e **First launch:** If macOS blocks the app, right-click → Open, or run `xattr -cr /Applications/Live\\ Translator.app`\n\n### Option 2: Homebrew\n\n```bash\nbrew tap umutcetinkaya/tap\nbrew install --cask live-translator\n```\n\n### Option 3: From Source\n\n```bash\ngit clone https://github.com/umutcetinkaya/live-translator.git\ncd live-translator\nmake install    # Create venv + install deps\nmake models     # Download TTS voice models (~580MB)\nmake run        # Launch\n```\n\n## Quick Start\n\n1. Launch → floating panel appears + 🌐 in menu bar\n2. Click **⚙ Settings** → enter your OpenAI API key\n3. Select **source language** (what's being spoken) and **target language** (what you want to read)\n4. Play any audio → translations appear in real-time\n5. New translations are **highlighted** so you always know what just changed\n\n### Controls\n\n| Control | Action |\n|---------|--------|\n| Source / Target dropdowns | Change languages |\n| ⚙ Settings | API key, model, TTS provider, voice, speed |\n| TTS Off / On | Toggle text-to-speech |\n| Clear | Reset translation history |\n| ✕ | Quit |\n| Menu bar 🌐 | Pause, Show/Hide, Quit |\n\n## Text-to-Speech\n\n| Provider | Pros | Cons |\n|----------|------|------|\n| **Piper** (default) | Free, offline, fast | Robotic voice |\n| **OpenAI TTS** | Natural voices (Nova, Shimmer, Alloy, Echo, Fable, Onyx) | Costs money |\n| **Gemini TTS** | Natural voices via Gemini | Costs money |\n\nTTS plays through the same process — the app's own voice is automatically filtered from capture. No feedback loops.\n\n## Supported Models\n\nPick a provider in Settings, paste its API key, and the model list updates automatically.\n\n**OpenAI**\n\n| Model | Speed | Cost | Best For |\n|-------|-------|------|----------|\n| GPT-5.4 mini | ⚡ Fastest | ¢ | Daily use (default) |\n| GPT-5.4 nano | ⚡ Fastest | ¢ | Budget |\n| GPT-5.5 | 🚀 Fast | $$ | Latest + Quality |\n\n**Google Gemini**\n\n| Model | Speed | Cost | Best For |\n|-------|-------|------|----------|\n| Gemini 2.5 Flash | ⚡ Fastest | ¢ | Daily use |\n| Gemini 2.5 Flash-Lite | ⚡ Fastest | ¢ | Budget |\n| Gemini 3.5 Flash | 🚀 Fast | $$ | Latest + Quality |\n\n\u003e **Recommendation:** GPT-4o Mini or GPT-4.1 Nano for real-time translation (fast + cheap).\n\n## How It Works\n\nLive Translator runs two independent agents in parallel:\n\n1. **Listener** — continuously captures system audio via ScreenCaptureKit and transcribes it on-device using SFSpeechRecognizer\n2. **Translator** — every ~3 seconds, takes the full accumulated transcript and sends it to your chosen provider (OpenAI or Gemini)\n\nThe 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.\n\nThis means:\n- Context is never lost\n- Incomplete sentences get refined next cycle\n- The translation reads as a coherent, flowing document\n- No disconnected fragments\n\n### Realtime mode (optional)\n\nBy 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.\n\n## Architecture\n\n```\nlive-translator/\n├── main.py                      # Entry point + menu bar\n├── src/\n│   ├── audio_capture.py         # ScreenCaptureKit system audio\n│   ├── speech_recognizer.py     # SFSpeechRecognizer + watchdog + ring buffer\n│   ├── translator.py            # OpenAI live document translation\n│   ├── pipeline.py              # Listener + Translator orchestrator\n│   ├── overlay.py               # WebKit floating panel (HTML/CSS/JS)\n│   ├── tts.py                   # Piper (offline) / OpenAI TTS\n│   └── config.py                # JSON settings\n├── models/                      # Piper voice models (downloaded separately)\n├── scripts/\n│   ├── build_app.sh             # Build .app bundle\n│   ├── build_dmg.sh             # Create DMG installer\n│   ├── download_models.sh       # Download TTS models\n│   ├── notarize.sh              # Apple notarization\n│   ├── setup_wizard.swift       # Native macOS setup wizard\n│   └── launcher.c               # Native .app launcher\n├── assets/                      # App icon + demo media\n├── Makefile\n├── requirements.txt\n├── CONTRIBUTING.md\n├── SECURITY.md\n└── LICENSE\n```\n\n## Configuration\n\nSettings are stored in `~/.live-translator.json` and can be changed from the in-app Settings panel:\n\n```json\n{\n  \"openai_api_key\": \"sk-...\",\n  \"source_locale\": \"en-US\",\n  \"target_lang\": \"tr\",\n  \"model\": \"gpt-5.4-mini\",\n  \"tts_provider\": \"piper\",\n  \"tts_voice\": \"nova\",\n  \"tts_speed\": 1.0\n}\n```\n\n## Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| \"Damaged and can't be opened\" | Run `xattr -cr /Applications/Live\\ Translator.app` |\n| No audio detected | Grant Screen \u0026 System Audio Recording permission, restart app |\n| STT stops working | Built-in watchdog auto-recovers within 10 seconds |\n| Translation not appearing | Check your provider's API key in Settings (OpenAI or Gemini) |\n| TTS not working | Check TTS provider in Settings |\n| App not in dock | By design — it's a menu bar app (🌐) |\n\n## Requirements\n\n- **macOS 13 (Ventura)** or later\n- **Python 3.11+** (auto-installed via setup wizard if missing)\n- **OpenAI API key** ([get one here](https://platform.openai.com))\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eIf Live Translator helps you, give it a ⭐ on GitHub — it helps others find it!\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/umutcetinkaya/live-translator\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/umutcetinkaya/live-translator?style=social\" alt=\"Star on GitHub\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Support the Project\n\n\u003ca href=\"https://buymeacoffee.com/umutcetinkaya\"\u003e\n  \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" height=\"48\" alt=\"Buy Me a Coffee\"\u003e\n\u003c/a\u003e\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nCopyright © 2025 [Umut Çetinkaya](https://umutcetinkaya.com)\n\n## Credits\n\n- [ScreenCaptureKit](https://developer.apple.com/documentation/screencapturekit) — macOS audio capture\n- [SFSpeechRecognizer](https://developer.apple.com/documentation/speech) — on-device speech recognition\n- [OpenAI API](https://platform.openai.com) — AI translation\n- [Piper TTS](https://github.com/rhasspy/piper) — offline text-to-speech\n- [PyObjC](https://pyobjc.readthedocs.io) — Python ↔ macOS bridge\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumutcetinkaya%2Flive-translator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumutcetinkaya%2Flive-translator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumutcetinkaya%2Flive-translator/lists"}