Skip to main content

Tiny macOS dictation tool on your menubar

Project description

minidic

A tiny macOS dictation tool for fast voice input from the menu bar or terminal.

Install

minidic is published on PyPI for macOS users.

uv tool install minidic

To upgrade an existing install:

uv tool upgrade minidic

The first run will download mlx-community/parakeet-tdt-0.6b-v3.

uv tool installs minidic to ~/.local/bin/minidic. Make sure ~/.local/bin is on your PATH.

Usage

On first use, macOS will prompt for the permissions required by minidic. In general, you need to grant these permissions to the terminal app you use to run the commands:

  • Microphone — needed to capture live audio for dictation
  • Accessibility — needed to inject the transcribed text into the active app and handle global hotkeys in menu bar mode

To use --gemini, set GEMINI_API_KEY in your environment before running minidic.

Console

Run an interactive dictation session in the terminal. This records from your microphone, transcribes locally, and inserts the final text into the active app.

minidic console
minidic console --gemini

Transcribe

Transcribe an existing audio file from disk instead of recording live microphone input.

minidic transcribe path/to/file.wav
minidic transcribe --gemini path/to/file.wav

Menubar

Run minidic as a menu bar app with a background daemon and global F5 hotkey for push-to-toggle dictation.

minidic menubar

Menu bar icon (stopped) Menu bar icon (running)

  1. Start the menu bar app.
  2. Optionally choose a max recording length from Duration in the menu.
  3. Click Start daemon (or Stop daemon to stop it).
  4. Press F5 to toggle start/stop dictation (captured globally; other apps will not receive F5 while daemon is running).

Technique overview

minidic captures microphone audio, normalizes it to 16 kHz, and runs local speech-to-text with streaming-style decoding.

Models used

  • ASR model: parakeet-mlx for on-device audio transcription on Apple Silicon / MLX
  • LLM model: gemini-3.1-flash-lite-preview for optional transcript cleanup (thinking disabled)

High-level pipeline

  1. Capture mic audio with sounddevice
  2. Resample to 16 kHz with soxr (when needed)
  3. Transcribe with parakeet-mlx on-device
  4. Smooth transcription by default with local regex cleanup (remove filler words like um, uh, etc.)
  5. Further smooth with Gemini when GEMINI_API_KEY is set and Gemini mode is enabled (via --gemini for console/transcribe, or via the menu bar toggle)
  6. Inject text into the active app on macOS

The daemon mode is hotkey-driven and lazily loads/unloads the model to reduce idle resource usage.

Directory structure

~/.minidic/
├── settings.json          # persisted runtime config such as Gemini and duration settings
└── recordings/            # saved WAV recordings captured during dictation/transcription

~/.local/state/minidic/
├── daemon.log             # daemon logs
├── daemon.pid             # daemon process ID
├── daemon.state           # current daemon state: idle, recording, transcribing
├── menubar.log            # menu bar app logs
└── menubar.pid            # menu bar process ID

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

minidic-1.0.3.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

minidic-1.0.3-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file minidic-1.0.3.tar.gz.

File metadata

  • Download URL: minidic-1.0.3.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for minidic-1.0.3.tar.gz
Algorithm Hash digest
SHA256 ef03add79c44ada001b3a4a1952e9e2e074a2af28740dc3d7c8d8f7ede09e482
MD5 5ada58eb83f8ad0977de5ebd6c7cca63
BLAKE2b-256 d768d496468ba2e9f98bc87b6e60eba3b50228e27fcfffa1bd6b13223598adb3

See more details on using hashes here.

File details

Details for the file minidic-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: minidic-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for minidic-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a7c36010adb50310d241c70cf75a8604303dd8ed3747e1dc97a62cab708bdc10
MD5 869df4ea43a7e36ef34e3e6f3a5385e5
BLAKE2b-256 f7346941da4f4f2883b87fae44fdefca870ba8bc82cc9070aee9646ea7fec3d9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page