Calliope

Voice-to-text for macOS — speak and type into any app.

Calliope sits in your menu bar, listens when you hold a hotkey, transcribes your speech with Whisper, and types the result into whatever app is focused. No cloud, no API keys — everything runs locally on your Mac.

Installation

git clone https://github.com/yourname/calliope.git
cd calliope
pip install -e .

Usage

# First run — launches the setup wizard, then starts the app
calliope

# Re-run the setup wizard
calliope setup

# Launch with overrides
calliope --device 2 --model openai/whisper-large-v3 --debug

# Print version
calliope --version

Hotkeys

Action Default Description
Push-to-talk Ctrl+Shift (hold) Records while held, transcribes on release
Toggle Ctrl+Space Start/stop recording

Hotkeys are configurable via the setup wizard or ~/.config/calliope/config.yaml.

Permissions

Calliope needs two macOS permissions:

  • Accessibility — to type text into other apps (System Settings > Privacy & Security > Accessibility)
  • Microphone — to record audio (System Settings > Privacy & Security > Microphone)

The setup wizard checks for these and can open System Settings for you.

Configuration

Config lives at ~/.config/calliope/config.yaml:

device: null          # sounddevice index; null = system default
model: distil-whisper/distil-large-v3
hotkeys:
  ptt: ctrl+shift
  toggle: ctrl+space
context: ""           # domain-specific terms to help Whisper
debug: false

CLI flags override config values for that session.

Troubleshooting

"Status: Model load failed" Check that you have enough disk space and RAM. The default model needs ~1.5 GB. Run with --debug for detailed logs.

No text appears after transcribing Make sure Accessibility permission is granted. Restart Calliope after granting it.

Wrong microphone Run calliope setup to pick a different input device, or set device in the config file. Use python -m sounddevice to list devices.

Hotkeys not working Ensure no other app is capturing the same key combo. Customize hotkeys via calliope setup.

Remaining TODOs

  • LICENSE file
  • Unit tests
  • CI/CD pipeline
  • Homebrew formula
  • .app bundle for drag-and-drop install
  • Changelog
Description
A locally running voice transcription app built specifically for MacOS. Fully MLX accelerated, fully free.
Readme MIT 106 KiB
Languages
Python 100%