Skip to content

hasso5703/talkink

Repository files navigation

Talkink — Say it. It's written.

Talkink

Push-to-talk dictation for macOS, 100% on-device. Hold a key, speak, release — your text is transcribed locally and pasted right at your cursor. Pick your engine: Qwen3-ASR, NVIDIA Nemotron 3.5 or Voxtral Mini — all running via MLX.

macOS Apple Silicon License

🌐 talkink.app — website & one-click download


Hold a key, speak, release — the text is pasted at the cursor

Why Talkink

  • 🔒 Local & private — your voice and text never leave your Mac. No cloud, no subscription.
  • Fast — ~30–40× faster than real time on a MacBook Air M4 (8-bit model).
  • 🌍 Multilingual — auto-detects across the model's ~40 locales; 9 fixed locales selectable (EN/FR/DE/ES/IT/PT/TR/AR/NL). Punctuation & capitalization included.
  • ⌨️ Paste anywhere — auto-pastes at the cursor; always on the clipboard as a fallback.
  • 📜 History — every transcription is kept locally and is searchable / re-copyable in-app.
  • 🟢 Open source (MIT), 100% native Swift — no Python at runtime.

How it works

  1. Talkink lives in the menu bar (no Dock icon).
  2. Hold the push-to-talk key (Right Option ⌥ by default) → recording starts.
  3. Speak.
  4. Release → local transcription in a fraction of a second → text is pasted at your cursor (if Accessibility is granted) and copied to the clipboard.
  5. It's also saved to History in case you need it again.

A floating pill (NVIDIA green) shows the state: recording → transcribing → done.

Screenshots

Settings & permissions    Menu bar

The recording pill, reacting to your voice:

Recording pill

Install

Requirements: Apple Silicon Mac (M1–M5), macOS 14 or later.

1. Download & install

  1. Download Talkink.dmg from the latest release.
  2. Open it and drag Talkink onto the Applications folder, then eject the disk image.
  3. Launch Talkink from Applications. No security warning — Talkink is signed and notarized by Apple (since v0.3.0).

Is it safe? Yes, twice over: the download is notarized by Apple (scanned and ticketed), and Talkink is fully open source — you can read every line in this repo and build it yourself.

Coming from Söyle (Talkink's former name, ≤ v0.3.3)? Your settings and history carry over automatically. If push-to-talk stops responding, remove the old Söyle entries from System Settings → Privacy & Security → Input Monitoring and Accessibility (− button), then add Talkink and enable it — one time.

2. Grant permissions (the onboarding window guides you)

Permission Why Note
Microphone To hear you
Input Monitoring Detect the push-to-talk key everywhere On macOS 26 you may need to add Talkink yourself: “+” or drag Talkink.app into the list (Talkink opens the pane and a Finder window for you)
Accessibility (optional) Paste at the cursor Skip it and Talkink just copies to the clipboard (paste with ⌘V)

3. Use it

On the first transcription, Talkink downloads the model (~1.2 GB) once — you'll see "Loading model…". After that: hold Right Option ⌥, speak, release → your text appears at the cursor and on the clipboard. That's it. 🎤


Build from source (developers)

git clone https://github.com/hasso5703/talkink.git
cd talkink
scripts/build_app.sh Release
open dist/Talkink.app

Requires full Xcode 16+ (the Metal compiler is needed — see BUILDING.md). A locally built app is signed with your own (or an ad-hoc) identity and runs directly.

Settings

Menu bar → Open TalkinkSettings tab:

  • Push-to-talk key — Right Option (default), Left Option, Right Control, or Fn / 🌐.
  • Language — Auto (detect) or a fixed locale.
  • Modelbf16 (default, best quality) or 8-bit (fastest).
  • Auto-paste at cursor, feedback sounds, launch at login, check for updates.

Network activity

Talkink's transcription is 100% on-device. The only network calls are:

  1. First-run model download (~2.5 GB for the recommended Qwen3-ASR 1.7B; other catalog options range from 760 MB to 4.1 GB) from Hugging Face into ~/.cache/huggingface. Downloads are resumable — quit anytime, it continues where it stopped.
  2. Update check (optional, toggle in Settings) — a request to the GitHub Releases API at launch. No usage telemetry is sent.

Troubleshooting

  • Push-to-talk does nothing → grant Input Monitoring (System Settings → Privacy & Security → Input Monitoring). Talkink re-arms itself within a few seconds; relaunch it if the key still does nothing.
  • Talkink doesn't appear in the Input Monitoring list → a macOS 26 issue that hits many apps (Karabiner-Elements included): answering the permission prompt doesn't register the app. Click “+” in the list (or drag Talkink.app into it), then enable the toggle.
  • After updating from an old version (Söyle ≤ v0.2.0), the key/auto-paste stopped working (toggles look on but do nothing) → macOS ties permissions to the app's code signature, and early builds were signed differently. In System Settings → Privacy & Security, remove the old Söyle entries from Input Monitoring and Accessibility (− button), then add Talkink and enable it. One time — the identity has been stable since v0.3.0.
  • It stopped working after rebuilding from source → ad-hoc signatures change each build; run scripts/dev_sign_setup.sh once to create a stable local signing identity so grants persist.
  • Using Fn / 🌐 as the key → set System Settings → Keyboard → "Press 🌐 to" = Do Nothing.
  • Model download stalls → check your connection and ~/.cache/huggingface.

Tech stack & credits

Component Role License
Qwen3-ASR Default model (1.7B / 0.6B, 30 languages) Apache 2.0
NVIDIA Nemotron 3.5 ASR Lightest/fastest option (cache-aware FastConformer-RNNT, 600M) NVIDIA model license (OpenMDW-1.1) — see model card
Voxtral Mini Alternative engine (4B, 13 languages, auto-detect) Apache 2.0
mlx-audio-swift Native Swift/MLX STT implementations (Prince Canuma) MIT
mlx-community MLX-converted weights (8-bit / bf16 / 4-bit) per model license
MLX Compute on Apple Silicon (Apple) MIT

Each downloaded model is governed by its own license (see the model cards). By using Talkink you agree to the license of the model(s) you download.

Roadmap

  • Live text while you speak (streaming generateStream)
  • Notarized + Sparkle in-app auto-update (v0.3.0)
  • Homebrew cask
  • Custom dictionary (proper nouns, jargon)
  • Hands-free toggle mode

License

Talkink's code is MIT. See the table above for component and model licenses.

About

Talk. Ink. — Push-to-talk dictation for macOS, 100% on-device. Pick your model: Qwen3-ASR, NVIDIA Nemotron or Voxtral, all via Apple MLX.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors