Skip to content

Repository files navigation

Yuwp

Yuwp is local dictation for macOS. Press a hotkey, speak, and Yuwp inserts the text into the app you were already using.

  • Runs locally on Apple Silicon with Swift + MLX (Qwen3-ASR)
  • Uses a global hotkey to start/stop dictation
  • Injects text into most apps (AX API, terminal key events, clipboard fallback)
  • No cloud API required after model download

Requirements

  • macOS 14+
  • Apple Silicon

Install

Download the latest notarized release assets:

Build from source:

git clone https://github.com/duh17/yuwp.git
cd yuwp
xcodebuild -downloadComponent MetalToolchain   # one-time on fresh machines
scripts/run.sh

scripts/run.sh builds a signed app bundle and launches it from /Applications/Yuwp.app.

First launch

  1. Open Yuwp from the menu bar.
  2. Click Grant Accessibility Permission and allow Yuwp in Privacy & Security.
  3. Press the hotkey once to trigger the Microphone permission prompt.
  4. Open Settings… → Transcription and download/select a model.

Usage

  • Default shortcut: Ctrl+`
  • Press once to start dictation, press again to stop
  • Configure shortcut, model, server mode, recording, mic panel, and chimes in Settings…

CLI / Server

Build CLIs:

swift build -c release --product yuwp-asr
swift build -c release --product yuwp-tts
bash scripts/build_mlx_metallib.sh release

Fresh app-bundle / DMG installs also include:

/Applications/Yuwp.app/Contents/MacOS/yuwp-asr
/Applications/Yuwp.app/Contents/MacOS/yuwp-tts

Transcribe a file:

.build/arm64-apple-macosx/release/yuwp-asr transcribe Tests/fixtures/jfk.wav
# or from an installed app bundle / DMG
/Applications/Yuwp.app/Contents/MacOS/yuwp-asr transcribe Tests/fixtures/jfk.wav

Run standalone ASR HTTP server (default transport is stdio, so pass --transport http):

.build/arm64-apple-macosx/release/yuwp-asr serve --model <asr-model-dir> --transport http --host 127.0.0.1 --port 7936
curl -sf http://127.0.0.1:7936/v1/info | jq .

Run standalone TTS HTTP server:

.build/arm64-apple-macosx/release/yuwp-tts serve --transport http --model <qwen3-tts-model-dir> --host 127.0.0.1 --port 7937
curl -sf http://127.0.0.1:7937/v1/info | jq .

Generate speech directly from the CLI:

.build/arm64-apple-macosx/release/yuwp-tts --model <qwen3-tts-model-dir> --text "Hello from Yuwp" --out /tmp/hello.wav
# or from an installed app bundle / DMG
/Applications/Yuwp.app/Contents/MacOS/yuwp-tts --model <qwen3-tts-model-dir> --text "Hello from Yuwp" --out /tmp/hello.wav

TTS exposes POST /v1/audio/speech for full WAV responses and POST /v1/audio/speech/stream for chunked NDJSON audio events (metadata, audio, done, error) with base64 pcm_s16le chunks.

Development

swift build
swift test
scripts/build.sh
scripts/run.sh

Fresh clone note: swift test works on a clean clone. scripts/build.sh / scripts/run.sh require the Metal toolchain to produce mlx.metallib.

Benchmarks

Benchmark tooling lives under benchmarks/.

uv run benchmarks/cli.py --help

Privacy

  • Private by default: audio processing and transcription run locally on your Mac.
  • Recording is off by default. Audio is only saved if you explicitly enable Save Recordings.
  • Diagnostic logging is off by default and can be enabled manually in Settings when troubleshooting.

Acknowledgments

License

  • MIT
  • Third-party notices
  • Binary app bundles and release DMGs include these notices plus vendored upstream license texts under OpenSource/

About

System-wide voice dictation for macOS. On-device ASR with Qwen3-ASR via mlx-audio.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages