better-voice logo

better-voice

Voice dictation with the screen context you point at.

SwiftSwiftMIT 263 41
Website GitHub

What is it?

What it is

An experimental open-source macOS menu-bar app that transcribes speech locally and captures the full screen when the user circles a UI element with the pointer, inserting the transcript and screenshots into the active text field.

Why it exists

To enable hands-free dictation with visual context, allowing quick notes or detailed explanations that include captured UI screenshots, while keeping all processing on-device for privacy and instant feedback.

Who should use it

macOS users on Apple Silicon (macOS 14+) seeking a privacy-focused, local voice dictation tool with screen context capture, especially developers or writers who want to circle UI elements while speaking and have transcripts inserted directly into text fields

Who should avoid it

Users on Intel Macs, those requiring notarized software, individuals uncomfortable with granting Accessibility and Screen Recording permissions, or anyone needing cloud-based transcription services

How it works

A quick walkthrough in plain English

How better-voice works

Step 1 of 3

You interact with it

Open better-voice, send a request, or connect it to your stack.

Features

Voice dictation with on-device transcription via FluidAudio/Parakeet local model
Menu-bar macOS app that captures screen context by detecting pointer circles around UI elements
Two dictation modes: hold-to-record quick notes (Option key) and toggle long explanations (Command+Option)
Customizable global keyboard shortcuts with multiple trigger styles including hold, tap-to-toggle, and double-tap-to-toggle
Adjustable circle detection threshold (340° default) and configurable hold delay (50–500 ms)
Multi-language dictation support with separate multilingual model download (~500 MB)
Grammar cleanup beta feature using local t5-tiny-gec-hone ONNX model for English transcript polishing
Developer vocabulary pass that fixes casing for terms like GitHub, JavaScript, JSON and recognizes spoken acronyms
User-editable vocabulary.json file for custom term replacements with phrase-priority matching
Automatic transcript insertion into focused text fields via Accessibility permission
Combined text and screenshot pasting with dual Cmd+V sequence handling
Live settings panel showing microphone, permissions, and model status with error recovery window
Native audio feedback sounds for recording start/stop confirmation
Session archiving on Desktop with 7-day retention and 500 MB storage cap
20-minute maximum recording length with safe termination
Automatic microphone selection preferring external inputs with manual override
Built-in guided first-launch setup wizard for permissions and configuration

Advantages

  • Complete privacy through local transcription with no cloud dependency for speech-to-text
  • Free and open-source under MIT license unlike proprietary alternatives like Wispr Flow
  • Unique visual context capture via circle gestures preserves referenced UI in transcripts
  • Combines dictation with screenshots in a single workflow reducing context switching
  • Recoverable sessions with 7-day retention allow retrieval of lost work
  • Clear documentation with troubleshooting section addressing common permission issues
  • Preloaded cached grammar model eliminates first-recording initialization delay
  • Customizable vocabulary handles domain-specific terminology beyond built-in developer terms
  • Forgiving circle detection does not require precise drawing
  • Multiple trigger style options accommodate different user preferences
  • Build script handles signing and process management simplifying development workflow
  • Architecture documentation available for contributors
  • Visual clipboard behavior feedback through native sounds
  • Screen Recording permission is optional making basic functionality work without invasive access

Disadvantages

  • Experimental release not notarized with Developer ID requiring Gatekeeper bypass on first launch
  • Apple Silicon only with macOS 14+ requirement excluding Intel Mac users
  • Requires multiple macOS permissions including Microphone and Accessibility which may concern privacy-conscious users
  • Grammar cleanup is English-only and greyed out for other languages
  • English grammar model can introduce incorrect rewrites when applied to non-English text
  • Notarization incomplete means friction during installation and updates
  • 500 MB local speech model download required on first use
  • Models stored separately consume significant disk space for multilingual use
  • Circles capture entire screen content beneath pointer which may inadvertently include sensitive information
  • Developer vocabulary file editing required for non-standard terms like internal service names
  • Recording automatically discards sessions under 2.5 seconds which may frustrate some users
  • Limited to Swift/Xcode toolchain for development reducing contributor pool
  • No cloud sync of vocabulary or settings across devices
  • Circle-based UI reference is less precise than traditional screenshot region selection
  • Long explanation mode leaves images on clipboard which could be confusing
  • License is MIT but the project is described as experimental and unaffiliated with established alternatives
  • No mention of formal test coverage or CI despite test command availability
  • Build process requires local Apple code-signing identity creating barriers for contributors

Installation

native

git clone https://github.com/TarunTomar122/better-voice.git
cd better-voice
./scripts/build-app.sh

FAQ

How do I start a quick voice note versus a long explanation?

Hold the Option key (⌥) for a quick note — recording starts after a short hold delay and finishes when you release. Press Command+Option (⌘⌥) for a long explanation, then press the same combination again to finish.

How do I capture screen context while recording?

While recording, circle any important UI with your pointer. A blue trail follows your movement and a pulse confirms each capture. Each circle captures the complete display beneath the pointer, and multiple circles produce screenshots in the order you referenced them.

Where is the local speech model downloaded and how large is it?

The local speech model is downloaded once on first launch and is roughly 500 MB. It is cached separately from the app and stored locally for offline transcription.

How do I add custom vocabulary terms like kubectl or nginx?

Edit the file at ~/Library/Application Support/BetterVoice/vocabulary.json. The key is what the transcript says and the value is what you meant. Phrases of several words work, and saving the file is enough — it is re-read on your next recording.

What permissions does BetterVoice need on macOS?

BetterVoice requires Microphone and Accessibility permissions for transcription and inserting text into the selected field. Screen Recording is optional but needed for capturing visual context when you circle UI elements.

How do I install BetterVoice from source?

Clone the repository, navigate to the project directory, and run ./scripts/build-app.sh. The script builds, signs, and opens the app, then walks through the one-time model download and permission setup.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for better-voice

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare