Free, local speech-to-text for macOS

Hold a key, speak, and Senti types your words into whatever app you are in. Audio never leaves your Mac, and text comes back in about 0.2 to 0.8 seconds.

A field of blue points shaped like low ridges, the shape of sound over time
  • Dictateright Option
  • Promptright Command
  • CommandFn
  • ContextControl Option V
State
Idle
Audio goes to
127.0.0.1
Model
large-v3-turbo
Typical time
0.2 to 0.8 s
00:00

Senti types where your cursor is

Hold right Option and a small pill shows a live waveform while you speak. Let go and the text lands in the app in front. The menu-bar icon sets the speed and restarts the engine.

4 modes on 4 keys. Dictate needs no API key.

Types your speech as text

Hold right Option and speak. Senti drops filler words, fixes capitals and types the rest. Fully local.

Turns speech into a prompt

Hold right Command and say a rough idea. Senti writes it as a prompt for the app you will paste into.

Rewrites the selected text

Select text, hold Fn and say what to change, such as “make this a bullet list”.

Drafts text from your screen

Press Control, Option and V. Senti reads a screenshot with your instruction and writes at the cursor.

From your voice to text in 4 steps

  1. Hammerspoon records your speech

    While you hold the key, sox records the microphone. Let go and the recording stops.

  2. whisper.cpp turns speech into text

    A whisper.cpp server on 127.0.0.1 keeps the model in memory, so it answers in under a second.

  3. Senti cleans up the words

    It strips filler words, fixes capitals and applies your dictionary, so “cloud md” becomes CLAUDE.md.

  4. The text lands at the cursor

    Senti pastes into the app in front. The audio is deleted when the turn ends, even when it fails.

Prompts written for the app in front

Writes the prompt for each app

Senti reads which app is in front. The same request comes out tagged for Claude and shorter for ChatGPT.

Keeps one context per app window

4 terminals are 4 contexts, read from each window title. No screenshots and no extra API call.

Reads your notes if you allow it

Off by default. Turned on, Prompt mode reads a capped digest from the folders you list, and logs every use.

AI models and prices

Dictation is free and needs no key. Prompt, Command and Context call OpenAI with your own API key, kept in ~/.config/senti/openai-key and readable only by you. It goes to OpenAI and nowhere else.

The default is gpt-6-luna: a prompt rewrite takes about 2 seconds and costs a fraction of a cent. For harder prompts, set WF_TEXT_MODEL and WF_VISION_MODEL in ~/.config/senti/config.sh.

Model and what to use it forPrice per 1 million tokens, in and out
OpenAIgpt-6-lunaThe default. Fast, and the cheapest$0.10 in, $0.50 out
OpenAIgpt-6.1-terraA step up for trickier prompts and screenshots$1.00 in, $5.00 out
OpenAIgpt-6.1-solComplex prompts, near top-tier quality$2.00 in, $10.00 out
OpenAIgpt-6-astraThe most capable, for when quality matters more than cost$10.00 in, $50.00 out

US dollars per 1 million tokens. Prices checked 11 November 2026 on OpenAI's pricing page.

Your speech stays on your Mac

Dictation is transcribed on 127.0.0.1. The AI modes send text, and a small screenshot when screen context is on, only when you press their key.

  • Speech never goes on a command line.
  • Audio and screenshots are deleted when each turn ends, failures included, with a 60-second backstop.
  • The log stores no transcripts.
Read the privacy notes

$0

for dictation, with no API key

2 s

a prompt rewrite in Prompt mode

574 MB

speech model, checked against its checksum

Install Senti with 2 commands

You need a Mac with Apple Silicon and Homebrew. The installer adds whisper-cpp, sox, resvg and Hammerspoon with Homebrew and downloads the speech model (574 MB), checked against its checksum. Leave out --yes and it asks before each step.

Terminal
$ git clone https://github.com/Leonardo-Engineering/Senti.git ~/code/senti
$ cd ~/code/senti && ./install.sh --yes
→ missing tools
    brew install whisper-cpp sox resvg
    brew install --cask hammerspoon
→ speech model (ggml-large-v3-turbo-q5_0.bin, 574 MB, runs on this Mac)
  ✓ model verified
→ scripts, config, dictionary, prompts
→ microphone-permission helper (Swift/AVFoundation)
→ Hammerspoon config
→ warm-whisper launchd service
→ icons (vector → resvg → iconutil)
→ Senti.app (menu-bar launcher)

Does my speech leave my Mac?

No. Dictation runs on a whisper.cpp server bound to 127.0.0.1. Only the AI modes send text, when you press their key.

Does Senti need an OpenAI API key?

Only for Prompt, Command and Context. Dictation is free and needs no key.

What does Senti cost?

Dictation is free. The AI modes call gpt-6-luna at $0.10 in and $0.50 out per million tokens. A prompt rewrite costs a fraction of a cent.

Which Macs run Senti?

Macs with Apple Silicon and Homebrew. Xcode Command Line Tools are optional; they build the microphone prompt helper.

Can Senti learn words it gets wrong?

Yes. Add a line to replacements.txt with what it hears and what to type, such as cloud md|CLAUDE.md. Every dictation applies it.

Which speech model should I use?

base.en answers in about 0.3 seconds. large-v3-turbo is slower and better with names. Switch in the menu bar.