logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·01.11.26
← Back to news

Show HN: Qwen Scribe – local transcription and dictation for Apple Silicon

Original article
github.com|27 points|9 comments|by sidclaw|Jul 29, 2026

Qwen Scribe: Local Transcription & Dictation for Apple Silicon

CI status Latest release Apache-2.0 license macOS 14 or newer on Apple Silicon All processing happens on-device

Qwen Scribe is a privacy-focused tool designed for Apple Silicon Macs, providing system-wide dictation and audio/video transcription. It leverages the Qwen3-ASR model via mlx-qwen3-asr, utilizing the Mac's Metal GPU for high-performance, local processing.

[!IMPORTANT] Currently, releases are provided as source-only. Because the app builds are not yet notarized or signed with a Developer ID, users must compile the application locally. Official signed binaries are slated for the v0.2v0.2v0.2 release.

🛠️ System Architecture

The following diagram illustrates how Qwen Scribe handles audio input to produce text:

✨ Key Highlights

  • Local Transcription: A dedicated web interface allowing you to drag-and-drop media files for transcription.
  • Model Flexibility:
    • 1.7B model: Optimized for high accuracy.
    • 0.6B model: Optimized for maximum speed.
  • Advanced Controls: Includes automatic language detection, the ability to force a specific language, vocabulary hints, word-level timestamps, and .srt file exports.
  • Transcript Management: A local history system that allows you to reopen, delete specific entries, or wipe all history.
  • System-Wide Dictation:
    • Action: Hold the right Command (Cmd\text{Cmd}Cmd) key →\rightarrow→ Speak →\rightarrow→ Release.
    • Result: The audio is transcribed locally and pasted directly at your cursor.
  • User Experience: A non-intrusive HUD displays current states: Listening, Transcribing, Success, or Failure.
  • Security: The API is restricted to localhost with strict browser-origin and host checks.

📋 Requirements

To run Qwen Scribe, your system must meet the following specifications:

RequirementSpecification
HardwareApple Silicon Mac
OSmacOS 14+ (required by MLX)
PythonNative version 3.12+3.12+3.12+
Dependenciesffmpeg (for non-WAV files) & Xcode Command Line Tools

Memory Footprint

The unified memory requirements are approximately:

  • 1.7B Model: ≈3.4 GB\approx 3.4\text{ GB}≈3.4 GB
  • 0.6B Model: ≈1.2 GB\approx 1.2\text{ GB}≈1.2 GB (Note: These figures exclude general application overhead.)

🚀 Installation and Setup

Building the App

Follow these steps to get the application running from the source:

  • Clone the repository or download the source.
  • Install dependencies and build the app:
make app
open "dist/Qwen Scribe.app"
  • (Optional) Move Qwen Scribe.app from dist/ to your /Applications folder.

Note: On first launch, the app will automatically download the necessary model weights and Python dependencies. If macOS Gatekeeper blocks the app, right-click the binary and select Open.

Alternative: Terminal Execution

If you prefer not to use the .app wrapper:

./run.sh
# Then navigate to http://127.0.0.1:8990 in your browser

🔐 Permissions & Privacy

For the system-wide dictation feature to function, you must grant the following permissions in System Settings →\rightarrow→ Privacy & Security:

  1. Microphone: To capture your voice while the right Command key is held.
  2. Input Monitoring: To detect the modifier key while other apps are in focus.
  3. Accessibility: To programmatically paste the transcribed text into the active field.

Warning: If Accessibility is not granted, the app will simply copy the text to your clipboard and report a failure instead of pasting.

Data Storage Locations

All data remains on your device:

Data TypePath
Transcripts~/Library/Application Support/Qwen Scribe/transcripts
Runtime Data~/Library/Application Support/Qwen Scribe/runtime
Logs~/Library/Logs/QwenScribe.log
Models~/.cache/huggingface/hub

Note: Transcripts are stored as unencrypted JSON. Standard deletion is not a secure erase.

⚙️ Configuration

The server.py script recognizes the following environment variables:

VariableDefault ValueDescription
QWEN_SCRIBE_DATA_DIR~/Library/Application Support/Qwen ScribeHistory storage path
QWEN_SCRIBE_MODEL_DIR./modelsPath for local quantized models
QWEN_SCRIBE_PORT8990Local server port (only for ./run.sh)

[!TIP] The Mac app and dictation helper are hardcoded to 127.0.0.1:8990. Changing the port via environment variables will break the dictation helper's connection.

🛠️ Development

To contribute or test the software, use the following commands:

# Initialize virtual environment and install locked dependencies
make setup 

# Execute lightweight API tests
make test