Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EchoMeet 🔊

A native macOS app for real-time meeting transcription and translation. Captures system audio (browser, meeting apps — including Bluetooth headset output) and microphone, transcribes with on-device speech recognition, and translates to Chinese via OpenAI-compatible APIs.

Features

  • System Audio Capture — Uses ScreenCaptureKit to capture audio from any app (Chrome, Safari, Teams, Zoom, etc.), including audio routed to Bluetooth headphones. Core Audio process taps cannot capture Bluetooth A2DP output; ScreenCaptureKit captures the decoded system mix instead.
  • Microphone Mixing — Microphone audio is blended in with energy gating: when the mic is quiet (you're not speaking), system audio passes through untouched so meeting speech is never diluted.
  • On-Device Speech Recognition — Powered by macOS 26 SpeechAnalyzer/SpeechTranscriber (progressive transcription) for free, real-time, offline transcription.
  • Chinese Translation — Integrates with any OpenAI-compatible API (OpenAI, DeepSeek, Ollama, LM Studio, etc.)
  • Native SwiftUI Interface — Clean, Notion-like experience with one-click start/stop
  • Export — Save transcripts as Markdown with original text and Chinese translation side by side
  • Privacy First — All API keys stored locally via UserDefaults, no telemetry, no cloud relay

Requirements

  • macOS 26+ (SpeechAnalyzer / ScreenCaptureKit)
  • Xcode 26+ or Swift 6 command line tools
  • Screen Recording permission — required by ScreenCaptureKit to capture system audio (System Settings → Privacy & Security → Screen Recording)
  • An OpenAI-compatible API key for translation (optional — transcription works without it)

Build & Run

cd native/MeetingTranslatorApp
swift build

# Create .app bundle
mkdir -p .build/EchoMeet.app/Contents/MacOS
cp .build/debug/EchoMeet .build/EchoMeet.app/Contents/MacOS/
cp MeetingTranslatorApp/Info.plist .build/EchoMeet.app/Contents/
codesign --force --deep --sign - .build/EchoMeet.app

# Launch
open .build/EchoMeet.app

Note: The app must be code-signed with a stable identity (Apple Development certificate) for the Screen Recording permission to persist. Re-signing with a different identity (or ad-hoc codesign -s -) invalidates the TCC grant and ScreenCaptureKit will fail with "no display available" until you re-authorize in System Settings.

On first launch, macOS will prompt for Microphone, Speech Recognition, and Screen Recording permissions. If prompts don't appear, go to System Settings → Privacy & Security.

How It Works

  1. System audio is captured via ScreenCaptureKit (SCStream with capturesAudio = true) — this is the same path screen recorders use, so it works with every output device including Bluetooth.
  2. Microphone is captured with a dedicated AVAudioEngine tap.
  3. Both streams are resampled to 16 kHz Int16 and mixed in 256 ms windows with energy gating.
  4. The mixed stream feeds macOS 26 SpeechAnalyzer for progressive on-device transcription.
  5. Completed sentences are translated (optional) and appended to the transcript.

Debugging

Launch with -autoStart to begin capture automatically without UI interaction (useful for automated testing):

open .build/EchoMeet.app --args -autoStart

Runtime diagnostics are written to ~/Library/Application Support/EchoMeet/debug.log (frame counts, RMS levels, recognition events).

About

EchoMeet — Native macOS app for real-time meeting transcription & Chinese translation. Core Audio Process Tap + SFSpeechRecognizer + OpenAI-compatible API.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages