DEV Community

Cover image for Meet Gwen, a small surface app for translation/dictation
Manuel Blanco
Manuel Blanco

Posted on AI-assisted

Meet Gwen, a small surface app for translation/dictation

I have created something for people that don't like to type-in so much or that have their hands full. And it's something that I use very much in my everyday workflow, and that I like to share with you today. It's open-source and MIT, and you can download it, set it up yourself, see what you can do with it, and let me know if you find it useful.

Gwen is a macOS menu bar app that pastes speech into the app where your cursor is. Hold a key, talk, and release it. Gwen also translates selected text, or speech, in place.

Macs already ship a usable local transcription and translation stack. whisper.cpp can run on 127.0.0.1, and macOS 15 and later includes Apple's on-device Translation framework. Gwen does not add another speech model. It adds the UI and hotkeys that make that stack usable in any app, without a Whisper Flow subscription or another paid dictation service.

Speech-to-text stays on the local whisper.cpp server. Punctuation uses local rules. Translation stays on the device. Gwen has no account, no cloud API, and no subscription.

Prerequisites

  • A Mac
  • macOS 15 or later, if you want translation
  • Git
  • The tools that ./bin/gwen setup installs. The published steps do not list exact versions.

Install and run

Clone the repo, then set up, build, and open the HUD:

git clone https://github.com/mblancodev/gwen
cd gwen

./bin/gwen setup
./bin/gwen build
./bin/gwen install
Enter fullscreen mode Exit fullscreen mode

License: MIT. Source: https://github.com/mblancodev/gwen - View Gwen

Key bindings

Key Action
Hold ⌃ Dictate, then paste when you release the key
⌃⌃ or "Hey Gwen" Start hands-free dictation
Tap ⌃⇧ Translate the selected text in place
Hold ⌃, then tap ⇧ twice Translate what you say

Dictation works in any app that accepts pasted text.

"Hey Gwen", in your voice

The first time Gwen runs, she asks you to say "Hey Gwen" three times and remembers how the recognizer writes it when you say it. Accents turn a fixed wake word into "hey when" or "hey Glenn"; teaching it once fixes that. A small sound confirms the wake word landed, so you know when to start talking. You can retrain it, or switch it off, in Settings.

Other languages

  • One Language setting decides what Gwen translates into. It is the same value in Settings, in the menu, and on the chip in the bar.
  • When you dictate in a language other than English, the bar shows only the waveform while you talk and pastes the finished text at the end, instead of showing half-recognized words along the way.

How it is built

A Swift menu bar app owns the UI and hotkeys. A Python process owns the microphone, Whisper, and pasting.

Most of the code was written with AI coding agents. Three project rules kept that workable:

  • AGENTS.md maps each change to a file and a symbol to grep, so an agent does not have to rediscover the repo.
  • gwen mock bar plays a scripted dictation through the real UI without a microphone. Use it to check a UI change.
  • The rule "Nothing leaves the Mac by default" is written into the project, so a later change is less likely to add a cloud dependency.

Troubleshooting

The source post does not list error text. If a step fails, capture the command and the full terminal output before changing anything.

Symptom Likely cause What to do
Paste does not appear The front app does not accept paste, or the cursor is not in an editable field Click an editable field, then dictate again
Translation does nothing macOS is older than 15, or no text is selected Check the macOS version. Select text before tapping ⌃⇧
No speech is captured Microphone permission is denied Allow microphone access for Gwen in System Settings, then retry

Top comments (0)