# Ghost Pepper

Hold-to-talk speech-to-text for macOS that runs entirely on-device. Hold Control, speak, release — the transcription gets pasted into whatever text field has focus. Menu bar app, no dock icon, launches at login. No cloud APIs, no data leaves the machine.

## How it works

Speech recognition uses WhisperKit (Apple Silicon optimized Whisper). After transcription, a local LLM (Qwen 3.5, via LLM.swift) cleans up the text — removing filler words, handling self-corrections — before pasting via simulated keystrokes. The cleanup prompt is customizable.

Models download from Hugging Face on first use and cache locally.

### Speech models

- **Whisper tiny.en** (~75 MB) — fastest, English only
- **Whisper small.en** (~466 MB, default) — best accuracy, English only
- **Whisper small multilingual** (~466 MB) — multi-language
- **Parakeet v3** (~1.4 GB) — 25 languages via FluidAudio

### Cleanup models

- **Qwen 3.5 0.8B** (~535 MB, default) — ~1–2s
- **Qwen 3.5 2B** (~1.3 GB) — ~4–5s
- **Qwen 3.5 4B** (~2.8 GB) — ~5–7s

## Permissions

Needs Microphone (recording) and Accessibility (global hotkey + simulated paste). On managed/enterprise devices, IT can pre-approve via MDM PPPC payload.

## Limitations

- Apple Silicon only (M1+), macOS 14.0+
- No transcription logging — text is never written to disk, debug logs are in-memory only
- Global hotkey is Control only (not configurable to other keys from the README)

Free and MIT-licensed. The author notes it's "spicy to offer something for free that other apps have raised $80M to build."

Related: [[titit-local-ai]] makes the broader case for local models over cloud APIs — Ghost Pepper is a concrete example of that argument applied to speech-to-text.

970 stars, MIT license. Repo: https://github.com/matthartman/ghost-pepper
