Martin Beck

Open source · MIT

Tools

Two Mac tools I built for my own use and put on GitHub. Each one runs on your own OpenAI API key.

Murmur

Dictation for the Mac. Press a hotkey, speak, and polished text lands in the app you're typing in.

Language
Swift
Needs
Apple Silicon, macOS 14 or later
License
MIT
  • Press option space anywhere and talk. Murmur transcribes the parts you've finished saying while you keep going.
  • A small language model cleans up the transcript by removing filler words, applying your self-corrections and adding punctuation. Then the text is pasted at your cursor and your old clipboard is put back.
  • The whole app is about half a megabyte of native Swift and lives in the menu bar. It has no account, no server and no telemetry.
  • You pay OpenAI for what you dictate, and $1 buys about 140 minutes of it.

Build from source

git clone https://github.com/martin-gbeck/murmur
cd murmur
./packaging/build.sh
cp -r dist/Murmur.app /Applications/

Building needs only the Xcode Command Line Tools. You can also download Murmur.zip from the releases page. On first launch Murmur asks for your OpenAI API key and keeps it in the macOS Keychain.

Spool

A menu bar app that reads text aloud. Select text anywhere, press ctrl space, and Spool reads it with OpenAI's text-to-speech.

Language
Rust and Swift
Needs
macOS 14 or later, Rust, Xcode's Swift toolchain
License
MIT
  • Long texts are split into chunks and queued, so playback starts after the first chunk.
  • The engine is a Rust daemon that owns the OpenAI connection, the queue and the audio output. It listens on a unix socket, so the app, the rust-tts command line or your own scripts can feed it.
  • The SwiftUI player shows the queue and a transcript that follows along, and it has speed control and media keys.

Install

git clone https://github.com/martin-gbeck/spool
cd spool
./build.sh

Command line

rust-tts speak "Hello there"     # or pipe text in: pbpaste | rust-tts speak
rust-tts pause | play | toggle | skip | previous | restart | stop
rust-tts seek 15                 # seconds, negative to go back
rust-tts speed 1.25
rust-tts queue | status

The build puts Spool.app in /Applications and links rust-tts into ~/.local/bin. By default the API key is read from the OPENAI_API_KEY environment variable.