Skip to main content

🎙️ WhatsApp Auto-Transcriber

A lightning-fast, privacy-focused tool that automatically transcribes incoming WhatsApp voice notes on macOS and Windows.

Why? WhatsApp's native transcription is often unavailable or slow. This tool provides a superior, 100% local alternative that works instantly the moment a voice note is downloaded, leveraging your hardware (GPU/NPU) for maximum speed.

CLI view of running wa-transcriber health

[!IMPORTANT] Desktop Only: This tool requires the official WhatsApp Desktop App (Store Version). It monitors the internal file system for new .opus files.

CI Python OpenAI Whisper Platform License Ask DeepWiki

✨ Features

  • ⚡️ Hardware Accelerated:

    • macOS: Native Metal Performance Shaders (MPS) for M1/M2/M3/M4 chips.
    • Windows: Native NVIDIA CUDA support for GeForce RTX cards.
  • 📂 Intelligent Monitoring: Uses a threaded Watchdog observer to detect voice notes instantly without locking your system.

  • 🏥 System Health Check: Includes a utility to analyze your RAM/VRAM and suggest the optimal AI model size to prevent crashes.

  • Smart Maintenance: Automatically cleans up AI models that haven't been used in 3 days (configurable) to save disk space.

  • Startup Backfill: Scans for missed voice notes from the last hour upon launch to ensure nothing is lost.

  • 📋 Auto-Clipboard & Logging:

    • Text is copied to clipboard (Cmd+V / Ctrl+V).
    • Transcripts are saved to daily logs (e.g., 2026-01-27_daily.log).

🚀 Prerequisites

1. Install FFmpeg

Whisper relies on FFmpeg for audio processing.

  • macOS: brew install ffmpeg
  • Windows: choco install ffmpeg (or download binaries from ffmpeg.org and add to PATH).

2. Python 3.10+

Ensure you have a modern Python version installed. You can download it from python.org.

🛠️ Installation

From PyPI (recommended)

Install the latest release with pip (use a venv if you like):

pip install wa-transcriber

Or install as an isolated CLI with uv:

uv tool install wa-transcriber

The package is published on PyPI. Dependencies include PyTorch and Whisper, so the first install may take a while and use significant disk space.

From source

Clone the repository and install from the checkout (for development or unreleased changes). Use a venv if you prefer.

git clone https://github.com/jpxoi/wa-transcriber.git
cd wa-transcriber
pip install .

For an editable install while hacking on the code: pip install -e .

If you use uv in the repo:

git clone https://github.com/jpxoi/wa-transcriber.git
cd wa-transcriber
uv sync

Run CLI commands with uv run wa-transcriber ... (for example uv run wa-transcriber health).

For day-to-day use of a stable build, prefer From PyPI above.

Run the Health Check (Crucial)

Before running the main program, run the included health check tool. This script analyzes your System RAM (CPU/MPS) or VRAM (NVIDIA) and calculates exactly which Whisper model your computer can handle safely.

wa-transcriber health
  • ✅ Verifies FFmpeg installation.
  • ✅ Detects Hardware Acceleration (CUDA vs MPS vs CPU).
  • ✅ Calculates memory overhead and suggests the best MODEL_SIZE.

⚙️ Configuration

Run the interactive setup wizard to configure the application:

wa-transcriber setup

This will guide you through:

  • Model Selection: choosing the appropriate Whisper model size.
  • Language: setting a preferred language or using auto-detection.
  • WhatsApp Path: automatically detecting or manually specifying the WhatsApp Media folder.
  • Hardware Limits: configuring RAM and VRAM usage limits.

To view your current configuration at any time, run:

wa-transcriber config

Configuration is stored in config.json in ~/.wa-transcriber/.

Model Selection Reference

The setup wizard will suggest a model based on your hardware, but you can choose any of the following:

Model VRAM/RAM Req Speed Accuracy Best For
tiny ~1 GB ⚡️ Instant Low Older laptops
base ~1 GB 🚀 Very Fast Decent Quick snippets
small ~2 GB 🏃 Fast Good General usage
medium ~5 GB ⚖️ Balanced Great Professional use
turbo ~6 GB 🏎️ Optimized Excellent M1/M2/M3 & RTX 3060+
large-v3 ~10 GB 🐌 Slow Perfect Heavy accents / Noisy audio

Advanced Settings

The following settings can be fine-tuned via the setup wizard or by manually editing config.json:

  • Scan Lookback: Number of hours to check for missed files on startup.
  • Model Cleanup: Automatically delete models unused for a set number of days.
  • Memory Limits: Adjust how aggressively the script uses System RAM or GPU VRAM.

🏃 Usage

Run the main script. It will initialize the model and start watching the folder.

wa-transcriber

Workflow:

  1. Script loads (shows a progress bar for model loading).
  2. Startup Scan: Checks for missed files from the last hour.
  3. "👀 Watching Folder" message appears.
  4. Receive a voice note in WhatsApp Desktop.
  5. Instant Result:
  • Console shows: ⚡️ [WORKING] Processing: audio_file.opus
  • Then: ✅ [DONE] Transcript: Hello world...
  • Clipboard: Updated automatically.

🛠️ CLI Reference

Command Description
wa-transcriber Starts the main transcription service.
wa-transcriber setup Runs the interactive configuration wizard.
wa-transcriber health Runs system diagnostics and hardware checks.
wa-transcriber config Displays the current configuration.
wa-transcriber reset Resets the application by removing all user data and configuration.
wa-transcriber logs audio Shows the last 50 lines of transcribed audio logs.
wa-transcriber logs app Shows the last 50 lines of application logs.

❓ Troubleshooting

  • "Clipboard unavailable": On Linux, you may need xclip or xsel. On Windows/Mac, this usually works out of the box.
  • "CUDA out of memory": Run wa-transcriber health and switch to a smaller model (e.g., from large to medium).
  • Script doesn't trigger: Ensure "Media Auto-Download" is ON in WhatsApp settings, or manually click the download arrow on the voice note.

🤝 Contributing

Pull requests are welcome. For major changes, please open an issue first.

📄 License

© 2026 Jean Paul Fernandez. Licensed under GPLv3.

Metadata

Release files for wa-transcriber 1.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wa-transcriber 1.3.5
File Size Uploaded Provenance
wa_transcriber-1.3.5.tar.gz 51.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for wa-transcriber 1.3.5
File Interpreter ABI Platform
wa_transcriber-1.3.5-py3-none-any.whl Python 3 none any Details

Total release size: 94.5 kB

Release files / wa_transcriber-1.3.5.tar.gz

Download URL wa_transcriber-1.3.5.tar.gz
Size 51.5 kB
Tags Source
SHA-256 checksum
How to use checksums
69b942df2aa0b84c4c928d39ee775c3d60487c48491dd6a882e2e0e46c1ab6a5
BLAKE2b-256 checksum
How to use checksums
37ab7f13af0ea666c95034e898bec6b7ceb5503cccc9072d778a76cfbbce9f96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.

Transparency log

Release files / wa_transcriber-1.3.5-py3-none-any.whl

Download URL wa_transcriber-1.3.5-py3-none-any.whl
Size 43.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6eda75d3a4f1055bd2cfe6dfd2511307ad8be21216bef128e264edc18f21955f
BLAKE2b-256 checksum
How to use checksums
f178cb9511cc40eee442f0f01359558d40b5c7c534cd7c38d209dbc2efaca662
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.

Transparency log

Security for wa-transcriber 1.3.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for wa_transcriber-1.3.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page