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.4.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.4-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: minidic-1.0.4.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for minidic-1.0.4.tar.gz
Algorithm Hash digest
SHA256 77175188b54e299d5823af910c54e0e4f40025bb00d756f9b87bde8d7f4a8833
MD5 e4ee4208c2ef5b3f6b9d9c0ff964c61c
BLAKE2b-256 d2fd55f16f9f3bcabd909246aef2c45c5628f6fabf1b4f190f52ac4376ffc918

See more details on using hashes here.

Provenance

The following attestation bundles were made for minidic-1.0.4.tar.gz:

Publisher: publish.yml on goofansu/minidic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: minidic-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for minidic-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 da109660eb208e5c3fb5ae040b49c6cdd4314d60d7530acf99cd18e314c6cebb
MD5 f94697b6005bc72877846a90e6554547
BLAKE2b-256 7aa79431596a67255314739177188eb5a023b645d79655668782e05ecc968aba

See more details on using hashes here.

Provenance

The following attestation bundles were made for minidic-1.0.4-py3-none-any.whl:

Publisher: publish.yml on goofansu/minidic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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