Fast, on-device dictation for macOS, powered by Needle
Swift
2
5 commits
updated Oct 10, 2026
Vio is a macOS menu-bar app for local speech-to-text dictation. Hold ⌥Space, speak, and release to paste into the app you're using.
Transcription runs on your Mac's CPU with the 16.9 MB Whistle model and Needle engine, without server calls or telemetry.
Requires an Apple Silicon Mac with macOS 26+, Xcode 26+ with command line tools, and Python 3.11+.
git clone https://github.com/apvarun/vio.git
cd vio
make open
This builds and launches build/Vio.app. Use make app to build without launching. The app uses ad-hoc signing and is not notarized.
The engine and model are bundled. If asset verification fails, run make download to restore them, then retry.
Run make dmg to build the dark teal drag-to-Applications installer. Install its
packaging dependency with brew install create-dmg first. Local previews are not
notarized.
Run make release with SIGNING_IDENTITY and NOTARY_PROFILE configured to
produce a signed, notarized DMG and SHA-256 checksum. See the
release instructions for Keychain setup and publishing.
Without Accessibility access, Vio copies the transcript for you to paste manually. If pasting stops working after a rebuild, grant access again in System Settings › Privacy & Security.
Open Settings from the menu bar to change the shortcut, choose a language, add custom words, or launch at login. English is the default language. Turn off Hold to talk to press once to start recording and again to stop.
Optional transcript cleanup uses Apple's on-device Foundation Models to fix punctuation and grammar and remove fillers. It requires Apple Intelligence, is off by default, and can add up to eight seconds before pasting. If cleanup fails or times out, Vio delivers the original transcript. Model edits can make mistakes.
On an Apple M2 Pro with 32 GB RAM and macOS 27, a release build transcribed 3.98 seconds of generated English speech in 31 ms and 16.24 seconds in 127 ms. These are median engine-only timings; recording, decoding, cleanup, and pasting are excluded. See benchmark details and reproduction steps.
See CONTRIBUTING.md for setup, tests, and pull request guidance. Report bugs with reproduction steps and your macOS and Xcode versions. Don't include private recordings or transcripts.
Vio uses MIT. The bundled Needle engine and Whistle model by Cactus Compute retain Apache-2.0. See third-party notices.
Fast, on-device dictation for macOS, powered by Needle
Swift
2
5 commits
updated Oct 10, 2026
Vio is a macOS menu-bar app for local speech-to-text dictation. Hold ⌥Space, speak, and release to paste into the app you're using.
Transcription runs on your Mac's CPU with the 16.9 MB Whistle model and Needle engine, without server calls or telemetry.
Requires an Apple Silicon Mac with macOS 26+, Xcode 26+ with command line tools, and Python 3.11+.
git clone https://github.com/apvarun/vio.git
cd vio
make open
This builds and launches build/Vio.app. Use make app to build without launching. The app uses ad-hoc signing and is not notarized.
The engine and model are bundled. If asset verification fails, run make download to restore them, then retry.
Run make dmg to build the dark teal drag-to-Applications installer. Install its
packaging dependency with brew install create-dmg first. Local previews are not
notarized.
Run make release with SIGNING_IDENTITY and NOTARY_PROFILE configured to
produce a signed, notarized DMG and SHA-256 checksum. See the
release instructions for Keychain setup and publishing.
Without Accessibility access, Vio copies the transcript for you to paste manually. If pasting stops working after a rebuild, grant access again in System Settings › Privacy & Security.
Open Settings from the menu bar to change the shortcut, choose a language, add custom words, or launch at login. English is the default language. Turn off Hold to talk to press once to start recording and again to stop.
Optional transcript cleanup uses Apple's on-device Foundation Models to fix punctuation and grammar and remove fillers. It requires Apple Intelligence, is off by default, and can add up to eight seconds before pasting. If cleanup fails or times out, Vio delivers the original transcript. Model edits can make mistakes.
On an Apple M2 Pro with 32 GB RAM and macOS 27, a release build transcribed 3.98 seconds of generated English speech in 31 ms and 16.24 seconds in 127 ms. These are median engine-only timings; recording, decoding, cleanup, and pasting are excluded. See benchmark details and reproduction steps.
See CONTRIBUTING.md for setup, tests, and pull request guidance. Report bugs with reproduction steps and your macOS and Xcode versions. Don't include private recordings or transcripts.
Vio uses MIT. The bundled Needle engine and Whistle model by Cactus Compute retain Apache-2.0. See third-party notices.