GitHub - furybee/dictea: Intelligent voice dictation for macOS. Press a shortcut to start, speak, press again — your text is transcribed and pasted instantly. · GitHub
Skip to content

Repository files navigation

Dictea

Tauri Rust React TypeScript macOS License

image

Intelligent voice dictation for macOS. Press a shortcut to start, speak, press again — your text is transcribed and pasted instantly.

Features

  • Toggle dictationCmd+Shift+Space to start recording, press again to transcribe and paste
  • Cancel anytimeCmd+Shift+C to cancel without pasting
  • 5 STT engines — OpenAI, Groq, Voxtral (Mistral), Gemini (Google), or Parakeet (100% local) — switch freely in settings
  • AI reformulation — Clean up grammar, remove hesitations and repetitions
  • Auto-translation — Translate to French, English, Spanish, German, Italian, or Portuguese
  • Floating overlay — Minimal animated pill with real-time audio waveform
  • Native macOS look — Dark glassmorphism theme, animated gradients, transparent title bar
  • Bilingual UI — English and French

STT Engines

Engine Transcription model Reformulation model API key
OpenAI gpt-transcribe gpt-4o-mini platform.openai.com
Groq whisper-large-v3-turbo llama-3.3-70b-versatile console.groq.com
Voxtral (Mistral) voxtral-mini-2602 mistral-small-latest console.mistral.ai
Gemini (Google) gemini-3.5-transcribe gemini-2.5-flash-lite aistudio.google.com
Parakeet (NVIDIA, local) parakeet-tdt-0.6b-v3 via ONNX Runtime provider of your choice (optional) none — model (~670 MB) downloaded from the settings

Parakeet runs 100% locally: no audio ever leaves your machine. It supports 25 European languages with automatic language detection. The model is loaded at startup so the first dictation is instant. Reformulation and translation stay optional — pick any chat provider in the settings, or leave its key empty and the transcription is pasted as-is (still fully local).

Reformulation provider

Transcription and reformulation are two separate steps, and the settings let you pick who does the second one regardless of who did the first. It defaults to Automatic, which follows the STT engine — the behaviour before it was configurable.

Naming one explicitly is what makes the interesting combinations possible: cloud transcription with on-device rewriting, or a cheap transcriber paired with a stronger rewriter. Leave the chosen provider's key empty and the transcription is simply pasted as-is.

Fully local dictation (macOS 26+)

Pairing Parakeet with Apple Intelligence as the reformulation provider keeps the entire pipeline on the machine — audio and text alike, no API key, no network. It uses the model built into macOS through the FoundationModels framework, so there is nothing extra to download.

It needs macOS 26 or later on a device with Apple Intelligence enabled; the option is hidden elsewhere. If the model turns out to be unavailable at dictation time, the raw transcription is pasted and the reason is shown — it is never quietly sent to an online service instead.

Installation

Download the latest release from GitHub Releases.

Platform File
macOS .dmg
Windows .msi
Linux .deb, .AppImage

macOS: The app is not notarized by Apple, so Gatekeeper blocks it on first launch. After installing, run:

xattr -cr /Applications/Dictea.app

Then open the app normally.

Permissions across updates

Builds are signed with a stable self-signed certificate. It does nothing for Gatekeeper — the app still comes from an unidentified developer — but it keeps the app's code identity constant from one version to the next, so the Microphone and Accessibility permissions you grant survive updates.

They did not before: an ad-hoc signature pins the app's identity to the hash of that exact binary, so every update looked like a different app to macOS and dropped the grants. The microphone re-prompted, Accessibility did not — it just denied silently, and the automatic paste stopped working with no explanation.

Moving to the signed builds changes the identity one last time, so the permissions have to be granted once more. In the Accessibility settings, remove Dictea from the list and add it back; unchecking and rechecking leaves the stale entry in place.

Development

Prerequisites

  • macOS 10.15+
  • Rustrustup.rs
  • Node.js 18+ and pnpm

Install & run

make install   # Install dependencies
make dev       # Development mode (hot reload)

Build for production

make build

The .dmg and .app bundle will be in src-tauri/target/release/bundle/.

Keyboard shortcuts

Shortcut Action
Cmd + Shift + Space Start / stop & paste
Cmd + Shift + C Cancel (no paste)

Architecture

src-tauri/src/
├── lib.rs              # App state, Tauri commands, config, shortcuts
├── audio/              # Microphone capture (cpal, 48kHz → 16kHz)
├── stt/                # STT engines (OpenAI, Groq, Voxtral, Gemini, Parakeet)
└── pipeline/           # Real-time streaming pipeline

ui/
├── App.tsx             # Root component with i18n provider
├── components/
│   ├── SettingsView.tsx    # Settings layout + sidebar
│   ├── OverlayView.tsx     # Floating waveform pill
│   └── pages/              # Dictation, Engine, Shortcut, Settings
├── hooks/useConfig.ts      # Config loading & auto-save
├── i18n/                   # FR + EN translations
└── types.ts                # Shared types & constants

Tech stack

Component Technology
Desktop framework Tauri v2
Backend Rust
Frontend React 19, TypeScript, Vite
Audio capture cpal
HTTP client reqwest
Icons lucide-react
Fonts Great Vibes, Nunito

Make commands

Command Description
make dev Dev mode with hot reload
make build Production build
make install Install dependencies
make clean Clean build artifacts
make kill Kill running processes
make logs Tail application logs
make release VERSION=x.y.z Tag & push a release

Releases are signed with the certificate produced by scripts/generate-signing-cert.sh (run once, stored as the APPLE_CERTIFICATE and APPLE_CERTIFICATE_PASSWORD repository secrets). The workflow only signs when those secrets exist.

Config is stored in ~/Library/Application Support/com.dictea.app/.

Support

Enjoy Dictea? Help keep it free and ad-free.

Buy me a coffee
💳 Donate by card
🅿️ PayPal

The same links are in the app, under Settings.

License

MIT

About

Intelligent voice dictation for macOS. Press a shortcut to start, speak, press again — your text is transcribed and pasted instantly.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages