Skip to main content

Automated local WhatsApp voice note transcriber

Project description

🎙️ 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

Clone the repository

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

Install the package

This will install the package in your system's Python environment. You can also use a virtual environment if you prefer.

pip install .

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.

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

wa_transcriber-1.3.1.tar.gz (50.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wa_transcriber-1.3.1-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file wa_transcriber-1.3.1.tar.gz.

File metadata

  • Download URL: wa_transcriber-1.3.1.tar.gz
  • Upload date:
  • Size: 50.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wa_transcriber-1.3.1.tar.gz
Algorithm Hash digest
SHA256 edcb5836fd5ef8f31a47e8b5e17addc60c0371cfc80803dfc392537cec0374f3
MD5 d5ac390f9e003e56c24b374445baca47
BLAKE2b-256 d46eec64ac729c28cf132549fde2272a11ed072692d3b096f5fece352b2a2005

See more details on using hashes here.

Provenance

The following attestation bundles were made for wa_transcriber-1.3.1.tar.gz:

Publisher: publish.yml on jpxoi/wa-transcriber

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

File details

Details for the file wa_transcriber-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: wa_transcriber-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 42.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wa_transcriber-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d3deb3e80df398b9d30a8e87e0fc98f8050adc4c33deb6438bab215fe98204c0
MD5 4644932acca39b7532c80f733637a251
BLAKE2b-256 c3724645a30a216cf0e2ae0015f71749aff409c5e7b9762fbf4295d2396cb19d

See more details on using hashes here.

Provenance

The following attestation bundles were made for wa_transcriber-1.3.1-py3-none-any.whl:

Publisher: publish.yml on jpxoi/wa-transcriber

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