Skip to content

About

macOS menu bar app that reads selected text aloud with local MLX text to speech. Pure Swift, fully on device.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

33 Commits

Folders and files

Repository files navigation

ReadMe

ReadMe lives in your menu bar and reads any text on screen out loud, in a natural voice, completely on your Mac. Nothing you select is ever sent to the internet. No account, no subscription, no limits.

Select some text, press a shortcut, and listen.


For Normies

Get it

  1. Download the latest version from the Releases page.
  2. Unzip it and drag ReadMe into your Applications folder.
  3. Open it. A small speech bubble icon appears in your menu bar at the top right.

From then on ReadMe keeps itself up to date automatically.

The very first time you read something, ReadMe asks for Accessibility permission. It needs this to see the text you have selected in other apps. It also downloads the voice once, so the first read takes a little longer. After that everything is instant and offline.

Read something

  1. Select any text, in your browser, a document, an email, anywhere.
  2. Press Command Option R (or click the menu bar icon and choose Read Selection).
  3. Sit back and listen.

You can also copy text and choose Read Clipboard, handy when an app will not let you select cleanly.

While it is reading

Click the menu bar icon for the controls:

  • Play and pause
  • Stop
  • Skip back or forward five seconds
  • Jump to the next or previous sentence (Control Option Right or Left)
  • See how much has played

The icon gently animates while it speaks, so you know it is working even with the sound muted.

Make it yours

Open the menu and pick Settings to choose:

  • Voice: Ava or Leo
  • Speed: from slow to fast, with quick 1x, 1.25x, 1.5x, and 2x toggles right in the menu
  • Your keyboard shortcuts
  • Whether ReadMe starts when you log in

Other handy bits in the menu:

  • Speed: change how fast it reads, live, even mid sentence
  • Sleep Timer: stop reading after 15, 30, or 60 minutes
  • Export Last Read: save what you just heard as an audio file to keep or share

Why people like it

  • It sounds like a person, not a robot from the nineties.
  • It reads tidy. Headings, lists, and tables get natural pauses instead of running together.
  • It is private. Your words never leave your Mac.
  • It is free, with no caps, no trials, and no sign up.

For Nerds

ReadMe is pure Swift, no Python at runtime. Speech is the Marvis neural TTS model running on Apple MLX, with token level streaming so audio starts in well under a second and keeps generating while it plays. An optional local Gemma model can polish each chunk for more natural phrasing, pipelined a chunk ahead so it never adds delay.

How it handles text

  • A regex normalizer expands markdown, tables, URLs, emails, numbers, currency, times, units, and symbols into spoken words.
  • Structure becomes real silence: paragraph, line, list, and table row pauses are injected, since the model itself ignores newlines.
  • Browser selections are captured as HTML, so headings, tables, and lists keep their structure and images are skipped.
  • Dense number and identifier text is chunked short and watched for runaway output, to keep the model from drifting into garbled speech.

Build from source

Needs the Command Line Tools with Swift 6 (full Xcode is not required) and the Python mlx package for its prebuilt Metal shader library:

pip3 install mlx
make build      # debug build
make run        # build and run from terminal
make release    # release build
make bundle     # build ReadMe.app under .build/
make install    # copy ReadMe.app to ~/Applications and link the CLI
make icon       # regenerate the app icon
make test       # run the self tests

MLX needs a compiled mlx.metallib at runtime and CommandLineTools cannot compile Metal shaders, so the Makefile copies the prebuilt one from the Python mlx wheel. Keep mlx in the same minor series as the mlx core inside mlx-swift (currently 0.31.x).

Requirements to run: an Apple Silicon Mac on macOS 14 or later.

Command line

make install links the binary to /opt/homebrew/bin/readme:

readme -t "text to read"        speak text
readme -f notes.txt             speak a file
readme -t "text" -o out.m4a     write audio instead of playing
readme -f notes.txt -o out.wav  format inferred from the extension

Formats are m4a (small, easy to share) and wav (lossless).

Shortcuts

All recordable in Settings. Defaults:

  • Command Option R: read selection
  • Command Option P: pause and resume
  • Option Escape: read or stop, matching the macOS Spoken Content key
  • Control Option Right and Left: next and previous sentence

If Option Escape also triggers the system voice, turn off the built in one under System Settings, Accessibility, Spoken Content.

Privacy

Everything runs on device. The only network traffic is the one time voice download from Hugging Face and the update check against this repository. Debug Mode, which writes spoken content to the log for troubleshooting, is off by default.

More docs

License

MIT. See LICENSE.

About

macOS menu bar app that reads selected text aloud with local MLX text to speech. Pure Swift, fully on device.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages