Real-time speech translation, English ⇄ German.
A native macOS app that listens to your mic, transcribes what you say, and translates it as you speak — without sending audio to a server, without API keys, and without downloading any models of its own.
Built for clarity and speed.
The whole pipeline is Apple's system frameworks, wired up with structured concurrency. No third-party Swift dependencies.
Two-column transcript
Source and translation share a single scroll, vertically aligned, with the active in-progress line pinned at the top.
On-device only
Apple's speech recognizer + Translation framework do the work. No keys, no cloud, no data leaves the Mac.
One-click direction
Toggle EN ⇄ DE in the status bar. Engines and translation session reincarnate with the new locale instantly.
Diagnostics
Optional bottom pane with a live mic-peak meter and a 30 s sliding latency chart, redrawn via SwiftUI's TimelineView.
Debug log built in
Every event in a ring buffer inside the app, plus mirrored to os.log so log stream works the way you'd expect.
Export to .txt
Save the transcript with timestamps. Choose source-only, translation-only, or both paired side-by-side.
One pipeline. Three frameworks.
Audio is captured on the audio thread, republished as an AsyncStream, fed to Apple's speech recognizer, then each finalized utterance is translated and paired back to the source row.
Build from source.
No package managers to set up. Just clone, run the build script, open the bundle.
| Requirement | Notes |
|---|---|
| macOS 15 (Sequoia) or later | The Translation framework needs 15+. |
| Xcode + Swift 6 | swift --version should report Swift 6.x. |
| Dictation enabled | System Settings → Keyboard → Dictation. Without it the recognizer errors with "Siri and Dictation are disabled". |
| EN ⇄ DE translation pair | macOS prompts to download on first use. |