π€ The audio recorder that makes WhatsApp voice messages actually bearable
The Problem: WhatsApp Web's
built-in recorder sucks, poor quality, compression hell -> Your professional microphone? Has No Power Here! π§
The Solution: A clean browser-based recorder that creates high-quality WebM files, paired with a smart FFmpeg watchdog that auto-converts everything for WhatsApp in the background.
The Result: Professional audio quality for WhatsApp, zero hassle. π―
β
Clean WebM Opus @ 320kbps recording
β
Auto-numbered files (1.webm, 2.webm, 3.webm...)
β
Background FFmpeg conversion to WhatsApp-ready .ogg
β
Runs as system services - survives reboots
β
One-click installation with automatic service setup
β
Cross-platform support (Arch Linux & Debian/Ubuntu)
β
One-time setup, then forget about it
Want to try the web app first? No problem!
# Clone and test the web app
git clone https://github.com/yourusername/whatsapp-audio-studio.git
cd whatsapp-audio-studio
npm install
npm start
- Open
http://localhost:3000
- Grant microphone permissions
- Test recording functionality
- Choose a temporary output folder for testing
Note: Without the installer, you won't have automatic .ogg conversion - the watchdog service needs to be properly installed for that.
The installer handles everything automatically:
- Installs dependencies (ffmpeg, inotify-tools, Node.js)
- Sets up both React server AND watchdog as system services
- Configures automatic startup on boot
- Creates the audio output folder
- Configures user permissions
# After cloning the repository
sudo ./installer.sh
The installer will:
- β Check and install all dependencies
- β
Create the watchdog folder at
~/Music/WhatsappMessages/
- β Install npm dependencies
- β Create systemd services for both web server and watchdog
- β Configure services to run as your user
- β Ask if you want services to start automatically on boot
- β Start both services immediately
Interactive Options:
- Choose whether to enable React server on boot
- Choose whether to enable watchdog service on boot
- Access Web App β Open
http://localhost:3000
- Configure Output β Set audio folder to
~/Music/WhatsappMessages/
- Record β App creates numbered .webm files (1.webm, 2.webm, 3.webm...)
- Auto-convert β Watchdog turns them into .ogg files for WhatsApp
- Upload β Drag .ogg files directly to WhatsApp
Record: 1.webm, 2.webm, 3.webm... (browser app)
β (automatic conversion)
Result: 1.ogg, 2.ogg, 3.ogg... (watchdog service)
- Output Folder: You MUST set the web app's output folder to
~/Music/WhatsappMessages/
- Don't Move/Delete: Never move or delete the
~/Music/WhatsappMessages/
folder - the watchdog service depends on it - File Detection: The watchdog only processes .webm files placed in this exact folder
- Open
http://localhost:3000
- In the web app settings, set output folder to:
/home/YOURUSERNAME/Music/WhatsappMessages/
- Grant microphone permissions when prompted
Both the web server and watchdog run as systemd services:
# Check if services are running
sudo systemctl status whatsapp-audio-server.service
sudo systemctl status audio-webm-watcher.service
# Monitor logs in real-time
journalctl -u whatsapp-audio-server.service -f
journalctl -u audio-webm-watcher.service -f
# Check watchdog activity
tail -f /tmp/watchdog.log
# Restart if needed
sudo systemctl restart whatsapp-audio-server.service
sudo systemctl restart audio-webm-watcher.service
# Enable services to start on boot
sudo systemctl enable whatsapp-audio-server.service
sudo systemctl enable audio-webm-watcher.service
# Disable autostart
sudo systemctl disable whatsapp-audio-server.service
sudo systemctl disable audio-webm-watcher.service
Clean separation of concerns:
- Web App (React): Pure audio recording, clean numbered output
- System Service: Automatic FFmpeg processing via inotify + systemd
- Zero maintenance: Set it up once, runs forever
whatsapp-audio-studio/
βββ src/ # React recording app
βββ public/ # Web app assets
βββ webm-ffmpeg-watchdog/ # Auto-conversion service
β βββ watch-whatsapp-folder.sh # inotify watchdog
β βββ ffmpeg-converter.sh # conversion wrapper
β βββ audio-webm-watcher.service # systemd service
βββ installer.sh # Automated installer
βββ uninstaller.sh # Clean removal
βββ package.json
# Check if server is running
sudo systemctl status whatsapp-audio-server.service
# Check for port conflicts
netstat -tlnp | grep :3000
# Check watchdog service
sudo systemctl status audio-webm-watcher.service
# Check watchdog logs
tail -f /tmp/watchdog.log
# Verify folder permissions
ls -la ~/Music/WhatsappMessages/
# Re-run installer to fix permissions
sudo ./installer.sh
Supported Distributions:
- Arch Linux (with pacman)
- Debian/Ubuntu (with apt)
- Other distributions: manual dependency installation required
Dependencies (installed automatically):
- Node.js v16+
- ffmpeg
- inotify-tools
- npm
Want to remove everything cleanly?
sudo ./uninstaller.sh
The uninstaller will:
- Stop and remove systemd services
- Remove watchdog scripts
- Optionally remove dependencies
- Optionally delete audio files and logs
- Clean up npm dependencies
- First Time: Run the quick test to familiarize yourself with the interface
- Production: Use the installer for permanent setup
- Quality: The app records at 320kbps Opus - much better than WhatsApp's default
- Workflow: Record multiple messages, they auto-convert in background
- Upload: Use the .ogg files for WhatsApp - they maintain quality
That's it. No manual conversion, no file management, no thinking required. π
For technical details about the watchdog service, see webm-ffmpeg-watchdog/README.md