A dication tool powered by Parakeet
Project description
Parakeet Dictation (macOS)
Local, fast, privacy-friendly dictation for macOS using NVIDIA Parakeet (MLX on Apple Silicon) with a push-to-talk hotkey.
Bonus: speak commands to rewrite selected text via AWS Bedrock (Claude).
Table of Contents
- Why this project?
- Features
- Demo
- Requirements
- Installation
- Configuration
- Usage
- Permissions (macOS)
- Run in the background
- Troubleshooting
- Development
- Roadmap
- FAQ
- Credits
- License
Why this project?
Parakeet Dictation gives you on-device speech-to-text on macOS with a single push-to-talk key (Globe/Function). It’s built to be:
- Private: Audio is processed locally on your Mac.
- Fast: Parakeet models are optimized and run great on Apple Silicon via MLX.
- Practical: Dictate into any app, or select text and say how to transform it (“make this more professional”, “translate to Spanish”, etc.)-the app rewrites it via AWS Bedrock and pastes it in place.
Features
- 🖥️ Menu bar app (stays out of your way)
- 🎙️ Push-to-talk: Press the Globe / Fn key to start recording, press again to transcribe & paste
- ⚡ Local ASR with NVIDIA Parakeet (Apple Silicon via MLX)
- ⌨️ Auto-paste at cursor in the foreground app
- ✨ Voice-driven text editing (optional): when text is selected, your speech is treated as an instruction and the selection is replaced with the result (via AWS Bedrock → Claude)
- ✅ Clear recording status via the menu bar icon
- 🧰 Simple background mode (no UI) for power users
Demo
Add a short GIF here showing:
- Globe key down → speaking → Globe key up → text appears
- Selecting text → Globe key → “make this friendlier” → selection is replaced
Requirements
- macOS 12+ (Apple Silicon recommended for speed)
- Python 3.10+
- Microphone
- Accessibility permission (to paste text programmatically)
- PortAudio (for PyAudio)
- Optional (for AI edits): AWS account with Bedrock access (Claude)
Installation
1. Install system deps
brew install portaudio ffmpeg
2. Clone & install Python deps
git clone https://github.com/osadalakmal/parakeet-dictation.git
cd parakeet-dictation
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Configuration
cp .env.example .env
Edit .env with your AWS region and credentials if you want Bedrock-powered editing.
Usage
Push-to-talk dictation
- Launch the app (see Development or Background sections below).
- Press the Globe (🌐) / Function key to start recording.
- Speak normally.
- Press the key again to stop. The app will transcribe and paste the text at your current cursor position.
Voice-driven text editing (Claude via Bedrock)
- Select text in any app.
- Press the Globe / Fn key and speak an instruction, e.g.:
- “Make this more professional”
- “Fix the grammar”
- “Summarize this”
- “Translate to Spanish”
- Press the key again to stop. The selected text will be replaced with the edited version.
When no text is selected, your speech is treated as dictation and the text is inserted normally.
Menu bar controls
- Start/Stop Listening - toggles recording
- Settings - (future) configuration UI
- Quit - exits the app
Permissions (macOS)
- Microphone: System Settings → Privacy & Security → Microphone → allow your Terminal/app
- Accessibility: System Settings → Privacy & Security → Accessibility → allow your Terminal/app
Without Accessibility permission, the app cannot paste text for you.
Run in the background
pip install -r requirements.txt
nohup ./run.sh >/dev/null 2>&1 & disown
Stop it later:
ps aux | grep 'src/main.py'
kill -9 <PID>
Troubleshooting
- No audio: ensure
portaudiois installed - Nothing pastes: check Accessibility permissions
- Bedrock errors: check AWS credentials and region
- High CPU usage: first run warms up the model
Development
python src/main.py
- Menu bar UI via
rumps - Hotkey via
pynput - Audio capture via
pyaudio - ASR via
parakeet-mlx - Optional Claude-powered edits via Bedrock
Roadmap
- Preferences UI
- Streaming/partial results
- macOS app packaging
- Latency/quality settings
- Crash logging
FAQ
Does dictation send audio to the cloud? No. Local only. Editing uses Bedrock if enabled.
What languages are supported? English.
Intel Macs? Works but slower.
Credits
- Parakeet MLX (NVIDIA Parakeet on Apple Silicon)
- Originally forked from a Whisper-based dictation app
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parakeet_dictation-0.1.6.tar.gz.
File metadata
- Download URL: parakeet_dictation-0.1.6.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7047b8cb3720c9d68f46ee87c9c8a5bd4fdd7c6ee2cb749ce074faccc8961fe1
|
|
| MD5 |
f800acf62448c327958c4b6aee95bc2e
|
|
| BLAKE2b-256 |
05f5d115e3579782cacae91ba2474055bec4692dfd48bd7f80ad11a334b767f2
|
Provenance
The following attestation bundles were made for parakeet_dictation-0.1.6.tar.gz:
Publisher:
publish-to-pypi.yml on osadalakmal/parakeet-dictation
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parakeet_dictation-0.1.6.tar.gz -
Subject digest:
7047b8cb3720c9d68f46ee87c9c8a5bd4fdd7c6ee2cb749ce074faccc8961fe1 - Sigstore transparency entry: 581958792
- Sigstore integration time:
-
Permalink:
osadalakmal/parakeet-dictation@40c91b025a8cb20b215236c621b2c81d707c755d -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/osadalakmal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@40c91b025a8cb20b215236c621b2c81d707c755d -
Trigger Event:
release
-
Statement type:
File details
Details for the file parakeet_dictation-0.1.6-py3-none-any.whl.
File metadata
- Download URL: parakeet_dictation-0.1.6-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
067f65b3dba9d538e5b3c3460b1334eaf7568227bc10a9c8f0c3f3dcb1c27ebc
|
|
| MD5 |
3e39b198ca9674dd7769d7670224eab8
|
|
| BLAKE2b-256 |
76aaca68319174854a18a62ac8838f18385fd99e912b89a5ec2c9f220196d6f0
|
Provenance
The following attestation bundles were made for parakeet_dictation-0.1.6-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on osadalakmal/parakeet-dictation
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parakeet_dictation-0.1.6-py3-none-any.whl -
Subject digest:
067f65b3dba9d538e5b3c3460b1334eaf7568227bc10a9c8f0c3f3dcb1c27ebc - Sigstore transparency entry: 581958802
- Sigstore integration time:
-
Permalink:
osadalakmal/parakeet-dictation@40c91b025a8cb20b215236c621b2c81d707c755d -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/osadalakmal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@40c91b025a8cb20b215236c621b2c81d707c755d -
Trigger Event:
release
-
Statement type: