Skip to content

moona3k/macparakeet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,045 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MacParakeet app icon

MacParakeet

Fast voice app for Mac with fully local speech and optional AI. Free and open-source.

There are many voice transcription/dictation apps, but this one is mine.

macparakeet.com

Download DMG

Ask DeepWiki GPL-3.0 License macOS 14.2+ Swift 6 CI status Apple Silicon only

MacParakeet — Transcribe tab with YouTube, file drop, and Record Meeting tile

MacParakeet — Transcription library with thumbnails

MacParakeet — YouTube transcript with synced video playback and timestamped transcript, summary, and chat tabs

MacParakeet — Dictation Stats with streak heatmap and top apps

MacParakeet — Live meeting recording with floating pill and Notes/Transcript/Ask panel

MacParakeet — Ask tab summarizing a live meeting with quick-prompt starters


MacParakeet runs NVIDIA's Parakeet TDT on Apple's Neural Engine via FluidAudio CoreML. The current stable release includes system-wide dictation, file/URL transcription, meeting recording with selectable microphone/system capture, meeting calendar support, Parakeet v3/v2/Unified model selection, optional local Nemotron Beta and WhisperKit recognition, and Transforms for selected-text rewrites. Current main adds opt-in Cohere Transcribe and other unreleased development work. All speech recognition happens on your Mac.

Release status

The notarized DMG is the stable release channel.

Channel Status Includes
Stable DMG Recommended for normal use Dictation, file/video/media URL and podcast transcription, meeting recording with selectable mic/system capture and audio-retention controls, meeting calendar reminders and opt-in auto-start, Transforms, VAD-guided meeting live-preview chunking, Parakeet v3/v2/Unified model selection, optional Nemotron Beta and WhisperKit, exports, vocabulary, AI features
main branch Development Latest stable release plus Cohere Transcribe, meeting echo-cancellation/cleaned-mic artifact work for the next release train, recognition-time custom vocabulary boosting, and developer-gated in-process MLX local LLM groundwork that is compiled/tested but hidden from normal users

Meeting calendar support is live in the stable DMG. MacParakeet reads upcoming meetings from the local macOS Calendar store through EventKit, can show reminders, and can optionally start a recording after a countdown. Auto-start defaults to .off and must be opted into; recordings still stop manually.

What it does

Dictation — Press a hotkey in any app, speak, text gets pasted. Hold for push-to-talk, or tap the hands-free shortcut to start and stop longer dictations. Works system-wide. The default uses Fn, but Settings -> Dictation can bind external-keyboard-friendly keys such as F13/F19 or End, modifier+key shortcuts, or modifier-only chords like Control+Option. A beta setting can pause supported Now Playing media while you dictate and resume it when capture stops.

File & URL transcription — Drag one or many audio/video files, drop a folder, use the multi-select picker, or paste any video or podcast link. YouTube, X, Vimeo, TikTok, Instagram, Facebook, Apple Podcasts, and any other site yt-dlp supports all work — there's no fixed list; the card recognizes the platform and shows its mark as you paste. Apple Podcasts links resolve through the iTunes lookup API to the episode's audio enclosure (no scraping), then download and transcribe locally just like a YouTube video. The CLI also does freetext podcast searchmacparakeet-cli transcribe --podcast "Lex Fridman episode 400" searches the iTunes directory, parses the show's RSS feed, picks the episode, and transcribes it. Local-file batches run sequentially, keep finished results in the Library, and can be cancelled as a group. Full transcript output includes word-level timestamps and speaker labels when the selected speech engine provides timings; Cohere produces plain text only. Completion chime/banner and export to 7 formats (TXT, Markdown, SRT, VTT, DOCX, PDF, JSON) are supported. Assign global hotkeys to trigger File or URL transcription from anywhere.

Meeting recording — Record system audio and microphone together, or pick microphone-only or system-only capture (microphone-only needs no Screen Recording permission). See a live local transcript preview, take notes during the call, then save the finalized transcript to the library with export, prompts, and chat. Choose how long to keep the source audio: keep it, auto-delete after a set number of days, or remove it right after transcription.

Meeting calendar support — Grant Calendar access to get local reminders for upcoming meetings or opt into auto-start. MacParakeet uses calendars already configured in macOS Calendar through EventKit; it does not add Google or Microsoft sign-ins, and recordings still stop manually.

Text cleanup — Filler word removal, custom word replacements, text snippets with triggers. Deterministic pipeline, no LLM needed.

AI features — Optional summaries, chat, AI formatter, and Transforms for rewriting selected text through your configured provider. Connect any cloud provider (OpenAI, Anthropic, Gemini, OpenRouter), local runtime (Ollama, LM Studio), OpenAI-compatible endpoint, or CLI tool (Claude Code, Codex). Entirely opt-in.

Limitations

  • Apple Silicon only (M1/M2/M3/M4)
  • Parakeet is best for English and its 25 supported European languages (v3 auto-detects among them); the v3 default is not a CJK/Korean engine
  • Nemotron is Beta while real-world quality is benchmarked
  • Nemotron, WhisperKit, and Cohere Transcribe require separate local model downloads before first use
  • Cohere is batch-only: it can be used for dictation after recording stops, file transcription, and meeting finalization, but it does not show live dictation preview or meeting live-preview chunks and does not provide word timestamps/speaker labels

ASR benchmarks

The current ASR benchmark lives in benchmarks/asr/. It scores every engine through the same normalizer, uses full LibriSpeech test-clean + test-other for English, uses capped FLEURS slices for multilingual coverage, and reports hardware-specific speed/memory on an Apple M4 Pro with 48 GB RAM on macOS 15. Run benchmarks/asr/run_all.sh verify to re-score the committed hypotheses and validate the benchmark contract.

English accuracy, full LibriSpeech sets:

Engine Runtime Macro WER test-clean WER test-other WER
Cohere Transcribe q8 FluidAudio CoreML 2.07% 1.49% 2.65%
Parakeet Unified FluidAudio CoreML 2.38% 1.64% 3.13%
Parakeet v2 FluidAudio CoreML 2.57% 1.86% 3.27%
Whisper large-v3 turbo WhisperKit 3.00% 1.96% 4.04%
Parakeet v3 default FluidAudio CoreML 3.22% 2.31% 4.14%
Nemotron English Beta FluidAudio CoreML 3.70% 2.40% 5.01%
Nemotron Multilingual Beta FluidAudio CoreML 5.17% 3.17% 7.16%

Multilingual coverage, FLEURS first 150 utterances per language. English is WER; Korean, Japanese, and Chinese are CER:

Engine en ko ja zh Notes
Cohere Transcribe q8 4.69 7.15 5.56 12.49 Best Japanese; clean English/Korean/Chinese are statistical ties with the best alternative
Whisper large-v3 turbo 5.71 6.37 13.42 11.56 Light broad-language fallback
Nemotron Multilingual Beta 7.08 9.32 15.29 19.47 Still Beta by quality evidence
Parakeet v3 default 4.40 171.2 159.2 124.1 Works for supported European languages; fails CJK/Korean here by romanizing output

Speed and memory, same Apple M4 Pro micro-benchmark:

Engine family Cold start Steady throughput Peak RSS
Parakeet v2/v3/Unified 0.38-0.93 s ~81-93x realtime 115-131 MB
Nemotron EN/Multilingual Beta 0.70-0.87 s ~57-61x realtime 141-142 MB
Whisper large-v3 turbo 2.29 s ~14x realtime 274 MB
Cohere Transcribe q8 ~73 s ~11x realtime ~11.6 GB

Cohere is the most accurate on-device engine in this benchmark, but its statistically clear wins are noisy English and Japanese. Clean English, Korean, and Chinese are ties with the best alternative under the paired-bootstrap test. Parakeet remains the default because it is fast, low-memory, timestamped, and strong on supported languages. Cohere is opt-in for accuracy-critical batch work on 16 GB+ Macs. The Cohere speed/memory row is a reference measurement; see benchmarks/asr/ for method notes.

Get it

Download: Grab the notarized DMG or visit macparakeet.com. Drag to Applications, done.

First launch downloads the default Parakeet CoreML build (~465 MB) plus speaker-detection assets (~130 MB) as needed. Parakeet v2 and v3 cache independently if you install both. Everything works fully offline after that.

The DMG is the stable release.

Mac app (Homebrew cask):

brew install --cask macparakeet

This is the official homebrew/cask entry — no tap required. It installs the same notarized DMG as the direct download, and in-app updates continue through Sparkle.

Standalone CLI (Homebrew):

brew install moona3k/tap/macparakeet-cli
macparakeet-cli --version
macparakeet-cli health --json

The Homebrew formula installs the public macparakeet-cli surface plus Homebrew-managed ffmpeg and yt-dlp. It shares the same local database and model cache as the app.

Build from source:

git clone https://github.com/moona3k/macparakeet.git
cd macparakeet
swift test
scripts/dev/run_app.sh    # build, sign, launch

The dev script creates a signed .app bundle so macOS grants mic and accessibility permissions. It disables target-level Xcode signing, then signs the finished bundle with the best available local identity. Override with MACPARAKEET_CODESIGN_IDENTITY="Your Identity" if needed.

Command line and agent automation

macparakeet-cli is the public automation surface for MacParakeet: the canonical Swift-native interface to Parakeet TDT on Apple Silicon, plus the scriptable entry point for MacParakeet's local library, model cache, prompts, meetings, and JSON contracts. Use integrations/README.md for the agent-facing automation guide and Sources/CLI/CHANGELOG.md for compatibility notes.

Discover the current machine-readable command catalog:

macparakeet-cli spec --json
macparakeet-cli health --json

Transcribe files, folders, media URLs, or podcasts:

macparakeet-cli transcribe /path/to/audio.mp3
macparakeet-cli transcribe /path/to/audio.mp3 --format transcript --no-history
macparakeet-cli transcribe lecture1.m4a lecture2.m4a --output-dir Transcripts --format transcript
macparakeet-cli transcribe --podcast "Lex Fridman episode 400" --format json
macparakeet-cli transcribe /path/to/meeting.m4a --engine nemotron --language auto --format json
macparakeet-cli transcribe /path/to/japanese.m4a --engine cohere --language ja --format json
macparakeet-cli transcribe /path/to/korean.mp3 --engine whisper --language ko --format json

Manage local models and shared app/CLI defaults:

macparakeet-cli models download nemotron-multilingual-1120ms
macparakeet-cli models download cohere-transcribe
macparakeet-cli models download whisper-large-v3-v20240930-turbo-632MB
macparakeet-cli models list
macparakeet-cli models select parakeet-v3
macparakeet-cli config set parakeet-model v2
macparakeet-cli models status

Inspect and update local history, saved meetings, and agent-readable artifacts:

macparakeet-cli history transcriptions --json
macparakeet-cli retranscribe <id-or-prefix-or-title> --update --json
macparakeet-cli meetings list --json
macparakeet-cli meetings show <meeting-id> --json
macparakeet-cli meetings artifact <meeting-id> --json
macparakeet-cli meetings export <meeting-id> --stdout --format json

Use --format transcript for transcript-only stdout in shell pipelines. Add --no-history when you want a one-off transcription without saving a completed row to MacParakeet history. Multiple inputs or --output-dir write one transcript file per input. models list and models select inspect or update the shared speech default used by the app and --engine app-default; Parakeet rows are parakeet-v3, parakeet-v2, and parakeet-unified, Nemotron rows are nemotron-multilingual-1120ms and nemotron-english-1120ms, Cohere is cohere-transcribe, and Whisper rows use the configured whisper-* model id. The Nemotron, Cohere, and Whisper CLI commands above require their local models to be downloaded first. When developing from source, prefix the same commands with swift run.

Tech stack

Layer Choice
STT Parakeet via FluidAudio CoreML (v3 multilingual default, v2 English-only opt-in, unified English-only punctuated opt-in) + optional local Nemotron Beta, Cohere Transcribe, and WhisperKit engines
STT orchestration Shared runtime + explicit scheduler with a reserved dictation slot and a shared meeting/file slot; speech-engine routing and meeting-session pinning
Language Swift 6 language mode (package tools-version 5.9) + SwiftUI
Database SQLite via GRDB
Auto-updates Sparkle 2
Media URLs yt-dlp
Podcasts Apple Podcasts via iTunes lookup API + native enclosure downloader
Platform macOS 14.2+, Apple Silicon

Vocabulary

The Vocabulary panel controls how dictated text is cleaned up before pasting. No AI involved — it's a fast, deterministic pipeline that runs in under 1ms.

You choose between two processing modes:

  • Raw — Paste exactly what the speech engine produces, no changes
  • Clean (default) — Run the text through a multi-step pipeline before pasting

The Clean pipeline applies these steps in order:

  1. Filler removal — Strips "um", "uh", and sentence-start fillers like "so", "well", "like"
  2. Custom words — Applies your word replacement rules (e.g., "aye pee eye" becomes "API", or "kubernetes" gets capitalized to "Kubernetes"). Case-insensitive, whole-word matching. Words can be toggled on/off without deleting.
  3. Voice Return — If you've defined one or more trigger phrases (e.g., "press return" or "zatwierdź") and speak one at the end of a dictation, it's stripped from the output and a Return keypress is simulated after paste
  4. Snippet expansion — Replaces short trigger phrases with longer text (e.g., "my signature" expands to "Best regards, David"). Triggers are natural language phrases because that's what the speech engine outputs. Matched longest-first to prevent collisions.
  5. Whitespace cleanup — Collapses spaces, fixes punctuation spacing, capitalizes the first letter

Every dictation stores both the raw and clean transcript so you can always see what changed.

AI Features

AI features are entirely opt-in and separate from speech recognition — transcription is always local. The LLM only sees transcript text, never audio.

What it does:

  • Summarize — After a transcription finishes, click Summarize and pick a prompt ("Summary", "Action Items & Decisions", "Chapter Breakdown", etc.) or write your own. The LLM processes the transcript and streams back a summary. You can generate multiple summaries per transcript, each in its own tab. Prompts marked as auto-run generate summaries automatically for new transcriptions.
  • Chat — Ask questions about a transcript in a multi-turn chat interface. The LLM answers based on the transcript content.
  • AI formatter — Optionally run your dictation and file transcripts through your AI provider to clean up grammar, punctuation, and paragraphing. Toggle on/off, customize the prompt, or reset to default.
  • Transforms — Select text in any app and press a bound Transform hotkey, such as Control-Option-1 for Polish, to rewrite the selection through your configured LLM provider.

Supported providers:

Type Options
Cloud Anthropic (Claude), OpenAI, Google Gemini, OpenRouter
Local Ollama, LM Studio
Custom OpenAI-Compatible (any API-shaped endpoint — vLLM, LocalAI, LiteLLM, llama.cpp server, third-party hosts)
CLI subprocess Claude Code, Codex, or another configured command

Setup: In Settings → AI Provider, pick a provider, enter an API key (cloud) or confirm the local server/CLI command is available, select a model, and hit Test Connection. Cloud providers store keys in the macOS Keychain. Ollama and LM Studio can keep LLM inference on-device. CLI subprocess providers run the configured command locally, but that command may contact its own cloud service.

Privacy

All speech recognition runs locally. Parakeet uses the Neural Engine; optional Nemotron Beta, Cohere Transcribe, and WhisperKit engines also run on-device. Your audio never leaves your Mac.

  • No cloud STT. The model runs on-device. No audio is transmitted.
  • No accounts. No login, no email, no registration.
  • Opt-out telemetry. Non-identifying usage analytics and crash reporting go to a self-hosted endpoint only when telemetry is enabled. No persistent IDs, no IP storage, and no transcript/audio content is transmitted. Source code is right here — verify it yourself.
  • Temp files cleaned up. Audio deleted after transcription unless you save it. Saved meeting audio follows your retention setting (kept by default).

What does use the network: AI summaries, chat/Meeting Ask, AI Formatter, and Transforms connect to configured LLM providers, or to whatever service a configured CLI tool chooses to use, when you choose them. Sparkle checks for app updates. Media URL transcription downloads via yt-dlp; Apple Podcasts links query the public iTunes lookup API to find the episode audio, then download it. Telemetry and crash reports go to our self-hosted server unless you opt out. Core dictation and transcription stay fully offline.

Note: Builds from source also send telemetry by default. Opt out in Settings or set MACPARAKEET_TELEMETRY_URL to override.

Contributing

  • Report bugsOpen an issue with steps to reproduce and relevant logs or screenshots.
  • Discuss new work first — For features or behavior changes, open an issue before starting a PR so we can agree on scope and product fit.
  • Submit scoped PRs — Once the issue direction is clear, fork, make the scoped changes, run swift test, and link the issue in the PR.
  • Read the specs — Architecture decisions and feature specs live in spec/
  • Using a coding agent? Point it at AGENTS.md — the canonical build/test commands, code style, repo conventions, and links to deeper context for Claude Code, Codex, and friends.

Support

MacParakeet is free and open source. If it's useful to you, consider sponsoring.

License

GPL-3.0. Free software. Full license.

About

Fast, local voice app for Mac — system-wide dictation, file & YouTube transcription, and meeting recording. Powered by Parakeet TDT on Apple Silicon. Free and open-source.

Topics

Resources

License

Stars

469 stars

Watchers

3 watching

Forks

Sponsor this project

 

Packages

 
 
 

Contributors

Languages