Skip to content

josephvore/murmur

Repository files navigation

Murmur

On-device, push-to-talk voice-to-text for macOS. Hold a key, speak, release — the transcript lands in whatever app has focus. Capture and transcription run entirely on your Mac; the only part that can reach the network is an optional cleanup pass you control.

A free, open-source alternative to Wispr Flow, Superwhisper, and MacWhisper.

Why Murmur

  • Fast and local. Apple's SpeechAnalyzer streams live partials while you talk; on release, Parakeet TDT re-reads the audio for a markedly more accurate final. Both models run on the Neural Engine, on your machine.
  • Private by default. No audio ever leaves your Mac. The optional polish pass sends only text, and only when you enable it (see On-device vs. cloud).
  • It learns your words. A glossary, learned corrections, and snippet expansion fix the names and jargon that generic recognizers keep getting wrong.
  • Yours to change. Readable Lua plus a small Swift daemon. MIT-licensed.

How it works

Speech-to-text runs locally through ~/bin/hs-dictate, a small Swift daemon. While you speak, Apple's SpeechAnalyzer / SpeechTranscriber (macOS 26) streams live partials into an on-screen pill. On stop, Parakeet TDT re-reads the take's audio for a more accurate final transcript (CoreML on the Neural Engine), falling back to Apple's text automatically. Both models come from the FluidAudio SwiftPM package and download on first run (~570MB) to ~/Library/Application Support/FluidAudio/.

The daemon stays warm between takes with the models loaded and the mic engine hot, so takes start instantly and work offline.

Hotkeys

Key Action
Hold Right ⌘, speak, release Push-to-talk: transcribe and paste
Tap Right ⌘ Hands-free: keep listening until you tap Right ⌘ again
Esc Cancel the current take and discard it

Murmur watches Right ⌘ with its own flagsChanged event tap. A short press counts as a tap (hands-free); a longer press is a hold. Pressing any other key while Right ⌘ is down means you were typing a normal ⌘-shortcut, so dictation silently cancels and the shortcut goes through untouched.

Requirements

Murmur does not install these for you — see the links.

  • macOS 26 or later (for SpeechAnalyzer).
  • Hammerspoon — the automation host Murmur runs in.
  • Xcode Command Line Tools (Swift 6 toolchain) to build the daemon.
  • ~570MB free for the on-device models (downloaded on first run).

Install

git clone https://github.com/josephvore/murmur.git ~/murmur
~/murmur/install.sh

The installer symlinks the Lua modules into ~/.hammerspoon, copies the example data, ensures ~/.hammerspoon/init.lua starts Murmur (without touching the rest of your config), and builds the Swift daemon into ~/bin/hs-dictate. If the Swift toolchain isn't ready yet, everything else still installs — build the daemon later with:

~/.hammerspoon/murmur/hs-dictate/build.sh

Permissions

macOS prompts the first time things run. Grant Hammerspoon:

  • Accessibility — to paste and to read the surrounding context.
  • Microphone — to capture audio.

On-device vs. cloud

Capture and transcription are fully on-device — no audio ever leaves your Mac.

The optional polish pass is the only exception. When enabled, it sends the transcript text to a cloud LLM to fix fillers, false starts, and punctuation (the Wispr-Flow-style cleanup). Murmur delegates this to its sibling app Hone (part of the Loadout suite), which talks to OpenAI / Groq / Cerebras using a key from your macOS Keychain.

  • With Hone installed and a key set — every take gets the cloud polish.
  • Without it — Murmur runs fully on-device: local cleanup only, nothing sent to the network. Words are never lost; they're just less polished.

To force fully-local operation even with Hone present, use the Literal profile or set autoRefine = false at the top of murmur.lua.

Cleanup profiles

  • Auto — pick the treatment based on context.
  • Prompt — tuned for prompts and instructions.
  • Message — tuned for chat and email.
  • Literal — no cloud polish; local cleanup only, fully on-device.

Data files

Your personal dictation data lives in ~/.hammerspoon/murmur/:

  • dictation_glossary.txt — canonical spellings of names and terms.
  • dictation_corrections.tsv — learned "wrong → right" replacements.
  • dictation_snippets.tsv — text expansions.

Murmur auto-learns frequently-seen proper nouns into the glossary so the recognizer stops mishearing them. These files are copied on install and are never overwritten on re-install, so your edits and learned terms stay put.

Tests

Pure-Lua replay tests for the cleanup pipeline (no Hammerspoon required):

lua ./tests/test_murmur.lua

About

Murmur is part of the Loadout suite of free, open-source macOS utilities, which remains the source of truth for the shared code. This repository is the standalone home for the dictation app. Licensed under MIT.

About

Free, on-device push-to-talk dictation for macOS — high-accuracy local speech-to-text (Parakeet) with optional LLM polish. An open-source Wispr Flow alternative.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors