{"id":51297051,"url":"https://github.com/harshpreet931/undertone","last_synced_at":"2026-06-30T15:32:26.154Z","repository":{"id":364309458,"uuid":"1267258799","full_name":"harshpreet931/undertone","owner":"harshpreet931","description":"Fully local voice dictation for macOS, press a hotkey, speak, and punctuated text appears at your cursor. Parakeet on the Neural Engine + optional local LLM rewrite modes. No cloud, no subscription, audio never leaves your Mac.","archived":false,"fork":false,"pushed_at":"2026-06-12T13:20:04.000Z","size":133,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T15:14:02.855Z","etag":null,"topics":["apple-silicon","coreml","dictation","llm","local-first","macos","menu-bar","neural-engine","offline","on-device","parakeet","privacy","productivity","speech-to-text","stt","swift","swiftui","transcription","voice-to-text","whisper"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/harshpreet931.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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-06-12T11:23:06.000Z","updated_at":"2026-06-12T13:20:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/harshpreet931/undertone","commit_stats":null,"previous_names":["harshpreet931/undertone"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/harshpreet931/undertone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshpreet931%2Fundertone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshpreet931%2Fundertone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshpreet931%2Fundertone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshpreet931%2Fundertone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harshpreet931","download_url":"https://codeload.github.com/harshpreet931/undertone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harshpreet931%2Fundertone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34973611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["apple-silicon","coreml","dictation","llm","local-first","macos","menu-bar","neural-engine","offline","on-device","parakeet","privacy","productivity","speech-to-text","stt","swift","swiftui","transcription","voice-to-text","whisper"],"created_at":"2026-06-30T15:32:25.131Z","updated_at":"2026-06-30T15:32:26.141Z","avatar_url":"https://github.com/harshpreet931.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Resources/logo.svg\" width=\"128\" alt=\"Undertone logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eUndertone\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eSystem-wide voice dictation for macOS. Fully local — audio never leaves your Mac.\u003c/strong\u003e\n\u003c/p\u003e\n\nPress a hotkey anywhere, speak, and properly punctuated text appears at your\ncursor. Transcription runs on the Neural Engine (NVIDIA Parakeet TDT v3 via\nCore ML), with optional post-processing by any local LLM — rewrite dictation\nas a chat message, an email, bullet notes, or a precise prompt for a coding\nagent. No accounts, no cloud, no telemetry.\n\n## Features\n\n- **Dictate anywhere** — tap ⌘⇧Space to start/stop, or hold it like a\n  walkie-talkie; Esc cancels. Text is inserted into whatever app has focus.\n- **Live floating HUD** — a translucent capsule with a real waveform, a timer,\n  and your words appearing as you speak; it morphs through transcribe →\n  enhance → insert and flashes the outcome.\n- **Two engines, one picker** — Parakeet v3 (default: ~110× realtime on the\n  Neural Engine, punctuation built in, 25 European languages) or Whisper via\n  WhisperKit (100 languages, custom-vocabulary biasing, model sizes from Tiny\n  to Large v3 Turbo).\n- **AI modes** — per-task prompts (Message, Email, Notes, Prompt) powered by\n  any OpenAI-compatible local server (Ollama, LM Studio, llama-server), with\n  per-app auto-switching: dictating in Slack can use Message mode, in Mail,\n  Email mode. Plain transcription needs no LLM at all.\n- **Custom vocabulary** — bias recognition toward names and jargon; optional\n  hard-correction rules (\"just pay\" → \"Juspay\").\n- **History \u0026 stats** — searchable local history of every dictation, plus\n  words dictated, speaking WPM, and time saved vs typing.\n- **Guided setup** — live permission checks and one-click model downloads, so\n  the first dictation never stalls on a surprise.\n\n## Download\n\nGrab the latest **[Undertone.dmg](https://github.com/harshpreet931/undertone/releases/latest/download/Undertone.dmg)**,\nopen it, and drag Undertone to Applications.\n\nThe build is open source but not yet notarized by Apple, so on first launch\nmacOS Gatekeeper will refuse to open it. Clear the quarantine flag once:\n\n```sh\nxattr -dr com.apple.quarantine /Applications/Undertone.app\nopen /Applications/Undertone.app\n```\n\n(Building from source — see [below](#build--install) — skips this step\nentirely, since locally-built apps aren't quarantined.)\n\n## Requirements\n\n- macOS 14.4+, Apple Silicon\n- Xcode 15.4+ command-line tools (only needed to build from source)\n- Optional: [Ollama](https://ollama.com) (or LM Studio / llama-server) for the\n  AI modes — dictation works without it\n\n## Build \u0026 install\n\n```sh\nmake app                                 # build + assemble + ad-hoc sign dist/Undertone.app\ncp -R dist/Undertone.app /Applications   # install\nopen /Applications/Undertone.app         # a waveform icon appears in the menu bar\n```\n\nThe Setup window opens on first launch: grant Microphone and Accessibility,\ndownload the speech model (~500 MB, one time), and dictate. Everything runs\noffline from then on.\n\nTCC permissions (microphone, Accessibility) require a real signed `.app`\nbundle, which is why `make app` exists — running the bare SwiftPM binary won't\nget stable permission grants. Xcode users can also `open Package.swift`.\n\n## Architecture\n\nStart with [ARCHITECTURE.md](ARCHITECTURE.md) — component deep-dives,\ntechnology trade-offs, the permissions model, and the phased roadmap. The code\nunder `Sources/` mirrors it one-to-one.\n\n## Attribution\n\nSpeech recognition is powered by [NVIDIA Parakeet TDT 0.6B v3](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3)\n(CC-BY-4.0) running on the Neural Engine via [FluidAudio](https://github.com/FluidInference/FluidAudio)\n(Apache 2.0), with [OpenAI Whisper](https://github.com/openai/whisper) via\n[WhisperKit](https://github.com/argmaxinc/WhisperKit) (MIT) as the selectable\nmultilingual / custom-vocabulary engine. Global shortcuts by\n[KeyboardShortcuts](https://github.com/sindresorhus/KeyboardShortcuts) (MIT).\nInspired by [Superwhisper](https://superwhisper.com) — if you want a polished\ncommercial product rather than a hackable local one, go buy it.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshpreet931%2Fundertone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharshpreet931%2Fundertone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshpreet931%2Fundertone/lists"}