{"id":48608114,"url":"https://github.com/pxinnovative/px-dictate","last_synced_at":"2026-04-09T00:13:05.331Z","repository":{"id":343548110,"uuid":"1178153857","full_name":"pxinnovative/px-dictate","owner":"pxinnovative","description":"Free \u0026 open-source voice-to-text for macOS — 100% local, private, no cloud. Powered by Whisper AI.","archived":false,"fork":false,"pushed_at":"2026-03-27T02:23:51.000Z","size":302,"stargazers_count":1,"open_issues_count":11,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-27T09:41:01.132Z","etag":null,"topics":["dictation","local-ai","macos","menu-bar-app","open-source","privacy","speech-to-text","vibecoding","voice-to-text","whisper"],"latest_commit_sha":null,"homepage":"https://github.com/pxinnovative/px-dictate","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pxinnovative.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-10T18:36:59.000Z","updated_at":"2026-03-27T02:23:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pxinnovative/px-dictate","commit_stats":null,"previous_names":["pxinnovative/px-dictate"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/pxinnovative/px-dictate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pxinnovative%2Fpx-dictate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pxinnovative%2Fpx-dictate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pxinnovative%2Fpx-dictate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pxinnovative%2Fpx-dictate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pxinnovative","download_url":"https://codeload.github.com/pxinnovative/px-dictate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pxinnovative%2Fpx-dictate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dictation","local-ai","macos","menu-bar-app","open-source","privacy","speech-to-text","vibecoding","voice-to-text","whisper"],"created_at":"2026-04-09T00:13:05.240Z","updated_at":"2026-04-09T00:13:05.325Z","avatar_url":"https://github.com/pxinnovative.png","language":"Python","funding_links":["https://buymeacoffee.com/pxinnovative"],"categories":[],"sub_categories":[],"readme":"# PX Dictate\n\n**Free \u0026 open-source voice-to-text for macOS — 100% local, private, no cloud.**\n\nPowered by [Whisper](https://github.com/ggerganov/whisper.cpp). Hold a key, speak, and your words appear wherever your cursor is. No subscription. No data leaves your Mac. Free and open-source.\n\nPerfect for vibecoding, writing, meetings, brainstorming, journaling — anything where your voice is faster than your keyboard.\n\n---\n\n## Features\n\n- **Local transcription** — Whisper AI runs entirely on your Mac. Zero data leaves your device.\n- **Floating widget** — Frosted glass pill that follows you across spaces, even fullscreen.\n- **Smart hotkeys** — Hold `fn` to record, tap `Control` to pause \u0026 process segments.\n- **Multi-language** — Auto-detects English, Spanish, French \u0026 more per segment.\n- **Auto-paste** — Transcribed text is automatically pasted into your active app.\n- **Session recording** — Save audio (MP3) and timestamped transcripts per session.\n- **History** — Last 10 transcriptions accessible from the menu bar.\n- **Privacy by design** — Audio deleted immediately after transcription (unless you choose to save).\n\n## System Requirements\n\n- **macOS** 10.15 Catalina or later\n- **Minimum:** 8GB RAM, any Mac 2018+ (Intel or Apple Silicon)\n- **Recommended:** 16GB RAM, Apple Silicon (M1/M2/M3/M4) for fastest transcription\n- ~500MB disk space for the Whisper model\n\n\u003e **Older or low-RAM Mac?** A future update will add an OpenAI Whisper API option — cloud-based transcription at ~$0.006/minute. All you'll need is an OpenAI account.\n\n## First Run — Permissions\n\nThe first time you open PX Dictate, macOS will ask for these permissions. **All are required for core functionality:**\n\n| Permission | Why |\n|------------|-----|\n| **Microphone** | To record your voice |\n| **Accessibility** | To paste transcribed text into your active app |\n| **Notifications** | To show status updates (optional but recommended) |\n\nGo to **System Settings \u003e Privacy \u0026 Security** to grant each one. You may need to restart the app after granting permissions.\n\nYou'll also need to change one keyboard setting:\n- **System Settings \u003e Keyboard \u003e Press fn key to \u003e \"Do Nothing\"**\n\nThis lets PX Dictate capture the `fn` key as a hotkey.\n\n## Quick Start\n\n### Option A: One-Command Installer (recommended)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/pxinnovative/px-dictate/master/install.sh | bash\n```\n\nThe installer walks you through each step with confirmations. It will:\n1. Check your system (macOS, Python, architecture)\n2. Install Homebrew (if needed)\n3. Install dependencies (`whisper-cpp`, `portaudio`, `ffmpeg`, Python packages)\n4. Download a Whisper model (you choose the size)\n5. Build and install PX Dictate.app\n\nFlags: `--yes` (skip confirmations), `--model small` (pre-select model), `--no-build` (deps only).\n\n### Option B: Manual Install\n\n#### Prerequisites\n\n- **Python 3.9+** (pre-installed on macOS)\n- **[Homebrew](https://brew.sh)** (macOS package manager)\n\n#### 1. Install dependencies\n\n```bash\nbrew install whisper-cpp portaudio ffmpeg\npip3 install pyaudio rumps pyobjc\n```\n\n#### 2. Download the Whisper model (~465MB, one-time)\n\n```bash\nmkdir -p ~/.px-dictate/models\ncurl -L -o ~/.px-dictate/models/ggml-small.bin \\\n  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin\n```\n\n#### 3. Run\n\n```bash\npython3 px_dictate_app.py\n```\n\nLook for the 🎙️ icon in your menu bar. That's PX Dictate.\n\n\u003e **First run?** macOS will ask for Microphone, Accessibility, and Notification permissions. Grant all of them, then restart the app. See [First Run — Permissions](#first-run--permissions) above.\n\n## Keyboard Shortcuts\n\n| Action | How |\n|--------|-----|\n| **Start recording** | Short press `fn` (0.5-1.5s) or click the widget |\n| **Stop recording** | Press `fn` again, `ESC`, or click the widget |\n| **Hold-to-record** | Hold `fn` for 1.5s+ — release to stop |\n| **Pause \u0026 process** | Tap `Control` (solo, no other key) |\n| **Resume** | Tap `Control` again |\n\n## Settings\n\nAll settings are available in the menu bar dropdown and persist across restarts. Configuration is stored in `~/Library/Application Support/PX Dictate/`.\n\n### Environment Variables (optional)\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `WHISPER_MODEL` | `~/.px-dictate/models/ggml-small.bin` | Path to Whisper model |\n| `WHISPER_CLI` | `whisper-cli` | Path to whisper-cpp binary |\n| `PX_DICTATE_LANG` | `auto` | Default language |\n| `PX_DICTATE_SENSITIVITY` | `8.0` | Mic sensitivity multiplier |\n\n## Build as .app\n\n```bash\npython3 setup.py py2app\n# Output: dist/PX Dictate.app\n```\n\n## Local vs Cloud Transcription\n\n|  | Local (default) | OpenAI Whisper API |\n|--|-----------------|-------------------|\n| **Privacy** | 100% on your Mac | Audio sent to OpenAI |\n| **Cost** | Free | ~$0.006/minute |\n| **Speed** | 2-5s (Apple Silicon), 5-15s (Intel) | 1-3s |\n| **Requires** | 8GB+ RAM, whisper-cpp | OpenAI API key |\n| **Internet** | Not needed | Required |\n\n\u003e Note: OpenAI API option is planned for a future release. Today, everything runs 100% locally.\n\n## Why PX Dictate?\n\n| | PX Dictate | Wispr | SuperWhisper | Others |\n|--|----------|-------|-------------|--------|\n| **Price** | **Free** | Paid subscription | Paid | Varies |\n| **Privacy** | 100% local | Cloud | Local option | Cloud |\n| **Open source** | Yes (AGPL-3.0) | No | No | Varies |\n| **Vibecoding ready** | Yes | Yes | Yes | No |\n| **Customizable** | Fully — it's your code | No | Limited | No |\n\nYou own the code. You own your data. No vendor lock-in. No surprise pricing changes. No \"we updated our privacy policy\" emails.\n\n## Community\n\n- Star this repo if PX Dictate is useful to you\n- Join the conversation in [GitHub Issues](../../issues)\n- Share your experience — we want to hear how you use it\n- PRs welcome — see [CONTRIBUTING.md](CONTRIBUTING.md)\n\nThis is the first open-source project from PX Innovative. We're building in public and we want your input.\n\n## Roadmap\n\n### v1.1 — Completed\n- [x] Theme system — 3 themes: Glass (default), Classic, Minimal with light/dark mode support\n- [x] Minimum recording duration — prevents Whisper hallucinations on short recordings\n- [x] Voice Isolation tip — onboarding wizard page + Help menu guidance\n- [x] Check for Updates — manual + auto-check on launch (once/day)\n- [x] Configurable hotkeys — fn, Option, F5, Ctrl+Opt+V, or any custom key\n- [x] 4 trigger modes — double-tap, short hold, long hold, tap-to-stop (all keys)\n- [x] Custom Key — learn mode detects any key and assigns all 4 modes\n- [x] ESC to cancel — discards recording or in-progress transcription\n- [x] Silence detection — alerts at 5s and 10s, auto-cancel with countdown\n- [x] Whisper hallucination filter — 3-layer protection (energy check + bracket filter + blocklist)\n- [x] Light mode support — readable text in macOS light appearance\n- [x] SF Symbols — modern monochrome icons in menu bar and floating pill (Glass/Minimal)\n- [x] Transcription progress bar — blue bar fills during Whisper processing ([#18](../../issues/18))\n- [x] Recording timer — mm:ss counter, pauses with recording\n- [x] VU meter — 4-color zones with logarithmic compression, sensitivity calibrated\n- [x] Onboarding wizard redesign — 6→3 pages, no scroll, page dots ([#6](../../issues/6))\n\n### v1.2 — In Progress\n- [ ] Self-contained .dmg installer ([#1](../../issues/1))\n- [ ] Python 3.8 minimum support ([#3](../../issues/3))\n- [ ] Custom vocabulary / domain-specific terms ([#5](../../issues/5))\n- [x] Figlet ASCII banner for installer ([#7](../../issues/7))\n- [ ] Wake word detection — \"Hey Dictate\" ([#13](../../issues/13))\n- [ ] Audio waveform visualization — animated alternative to VU meter ([#14](../../issues/14))\n- [ ] Transcript preview in pill — 2-line animated text ([#16](../../issues/16))\n- [ ] Claude Code skills — /dictate-setup and /dictate included in repo ([#17](../../issues/17))\n- [ ] Mic sensitivity slider in menu ([#19](../../issues/19))\n- [ ] Icon alignment polish — perfect centering of SF Symbols in pill buttons ([#20](../../issues/20))\n- [ ] Mid-recording silence detection — auto-stop \u0026 auto-pause ([#21](../../issues/21))\n- [ ] Configurable silence detection timeouts ([#22](../../issues/22))\n\n### Future\n- [ ] OpenAI Whisper API fallback for older Macs\n- [ ] Homebrew cask (`brew install --cask px-dictate`)\n- [ ] Code signing \u0026 notarization (Apple Developer)\n- [ ] Mac App Store release\n\n## Support\n\n- **Bug reports:** [GitHub Issues](../../issues)\n- **Buy me a coffee:** [buymeacoffee.com/pxinnovative](https://buymeacoffee.com/pxinnovative)\n- **Star the repo** — it helps more than you think\n\n## License\n\n[AGPL-3.0](LICENSE) — free to use, modify, and distribute. If you distribute a modified version, you must share the source.\n\n\"PX Dictate\" is a trademark of PX Innovative Solutions Inc. — see [TRADEMARK.md](TRADEMARK.md).\n\n---\n\nMade with 🎙️ by [Victor Kerber](https://github.com/pxinnovative) @ [PX Innovative Solutions Inc.](https://pxinnovative.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpxinnovative%2Fpx-dictate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpxinnovative%2Fpx-dictate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpxinnovative%2Fpx-dictate/lists"}