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.2.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.2-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wa_transcriber-1.3.2.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.2.tar.gz
Algorithm Hash digest
SHA256 dabb07076622988ce42b47e2c10bbe66e3f45aafccd1007fb16cf6e96eebe022
MD5 8709767dfd3cf99fd109896deaba0e2e
BLAKE2b-256 f60e13405b720c2eefae2e9989c2620917d61678e58ec48b8f1d9cc354f3a4d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for wa_transcriber-1.3.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: wa_transcriber-1.3.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6140057b19bb0a838c6f6d82d5e683f9bb4689b0859dbd760e09738eba9c6844
MD5 b1726ed9c055089e2e84acbf807cc268
BLAKE2b-256 e931be9ae5e9f358209c8a3c836665bbf19da25bf13ac62bdac2dc5dcb12e63a

See more details on using hashes here.

Provenance

The following attestation bundles were made for wa_transcriber-1.3.2-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