Repository navigation
Releases: pstehlik/transcriber
Release list
v1.3.2 — Validate the model setting
Fixes a class of failure where a bad model name in Settings produced empty transcripts with no usable explanation.
What was wrong
The Transcription Command field is free-form, so the --model argument can be edited to name a Hugging Face repo that does not exist — one install was running mlx-community/whisper-high-mlx. Two things then conspired to hide the cause:
- Hugging Face answers 401, not 404, for a repo that is not there (so its API cannot be used to probe for private repos). The log therefore ended in
RepositoryNotFoundError: 401 … Invalid username or password, which reads like an authentication problem and is not one. - mlx_whisper catches the error per file, prints
Skipping <file> due to …, and still exits 0. The run was recorded as completed with an empty transcript.
Prevention
Settings will no longer save a command that cannot run. The command must contain [INPUT_FILE] and a --model <id>, and a model outside the built-in list is checked against Hugging Face before the save is written:
- One of the three listed models — saved immediately, no network call
- A real but unlisted repo (e.g.
whisper-large-v2-mlx) — still allowed - A repo Hugging Face does not have — rejected, with the model name quoted back
- Hugging Face unreachable — saved with a warning, so working offline never blocks a save
Recovery
For installs that already have a bad command on disk, the transcription log now explains it in plain language and says how to fix it:
"mlx-community/whisper-high-mlx" is not a model on Hugging Face, so nothing could be transcribed. Open Settings, pick a model from the list (this rewrites the --model argument), save, and run this file again.
The message is logged at error level, which expands the log panel automatically, and the run is now recorded as error instead of a completed-but-empty transcript.
v1.3.1 — Filter Whisper repetition loops
Fixes garbled transcript endings introduced by the turbo model in 1.3.0.
What was wrong
Whisper can fall into a repetition loop at the end of a file, appending dozens of copies of the last phrase — measured at 79x "Ciao." on a 94-second voice message. Turbo loops far more readily than the deeper models because its decoder is pruned to 4 layers, which is why this only surfaced after 1.3.0 made turbo the default.
The fix
Loop output is now filtered out at the stdout parse boundary. Three shapes are rejected:
- Zero-duration segments — start equals end, so no audio is spanned
- Segments past the end of the audio — Whisper zero-pads the final 30s window and decodes into the padding (a 63s file was emitting segments out to 01:21)
- Consecutive repeats of the previous segment's text
Dropped segments are counted and logged once at completion.
Decoding-flag workarounds were measured and rejected: --condition-on-previous-text False and --word-timestamps True both stop the loop but change transcribed words, and --compression-ratio-threshold has no effect at all. Filtering the output is strictly cheaper than degrading the decode.
Also fixed: audio duration is now read for Ogg/Opus files (WhatsApp voice notes), whose headers carry no duration — without it the past-the-end rule was silently inert on the app's most common input.
Install: download the DMG, drag Transcriber to Applications, open it. Requires Apple Silicon and macOS 14+.
v1.3.0
Changes
- Better transcription accuracy by default. The default model is now Whisper large-v3-turbo instead of small — noticeably more accurate, especially for non-English audio, at a modest speed cost. On a typical voice message you won't notice the extra time; you will notice the better text.
- Simplified model picker: Small / Turbo / Large. Tiny and Medium have been retired — Turbo beats Medium on size, speed, and accuracy alike, and Tiny wasn't accurate enough to be worth offering.
- Model sizes shown in Settings are now the real download sizes (480 MB / 1.6 GB / 3.1 GB), and the first-launch setup screen no longer understates what it downloads.
Upgrading
If you previously selected Tiny or Medium, you'll be moved to the closest replacement automatically (Small and Turbo respectively). If you deliberately chose Small, you stay on Small — change it in Settings any time.
The new default model is a ~1.6 GB download. Existing installs fetch it on the first transcription after upgrading, so that one run will be slower than usual.
Install
Download Transcriber-1.3.0-arm64.dmg, open it, and drag Transcriber to Applications. Apple Silicon + macOS 14+ required.
v1.2.1
Changes
- WhatsApp integration is now clearly marked as BETA in the config screen, with an updated warning that it relies on an unofficial WhatsApp Web protocol.
- DMG window layout: app icon and Applications shortcut are now positioned for a cleaner drag-to-install experience.
Install
Download Transcriber-1.2.1-arm64.dmg, open it, and drag Transcriber to Applications. Apple Silicon + macOS 14+ required.
v1.1.1
What's New
- Model selector — Choose transcription accuracy (Tiny / Small / Medium / Large) from Settings, with model info and pre-download
- Setup welcome screen — Clear explanation of what gets installed before setup begins, with a Start button
- Model pre-download — Language model downloads during first-launch setup so the first transcription starts instantly
- Code signing & notarization — DMG is now signed and notarized by Apple; no more Gatekeeper warnings
Fixes
- Stepper sync bug — Max parallel runs now correctly loads from saved config when reopening Settings
- Dependency upgrades — Electron 35 → 41, music-metadata updated; 0 npm audit vulnerabilities
Download
Download Transcriber-1.1.1-arm64.dmg, drag to Applications, and open. Requires Apple Silicon (M1+) and macOS 14 Sonoma or later.
v1.1.0
What's new
- WhatsApp voice message transcription — Link WhatsApp via QR code and incoming voice messages are automatically transcribed. Sender name is shown in history.
- Folder watcher — Watches ~/Downloads and ~/Documents for Telegram (.ogg), Signal (.m4a), and WhatsApp (.opus) voice messages and auto-transcribes new arrivals.
- Delete history — Delete individual transcriptions or clear all history.
- Auto-setup — First-launch setup screen handles venv creation, mlx-whisper install, and ffmpeg setup automatically.
- DMG packaging — Distributed as a macOS DMG (unsigned, right-click > Open on first launch).
Bug fixes & robustness
- WhatsApp reconnect no longer causes unhandled promise rejection on failure
- QR code rendering uses safe DOM methods instead of innerHTML
- Folder watcher errors are now logged instead of silently swallowed
- Safe IPC sends prevent crashes during app shutdown
Requirements
- Apple Silicon (M1 or later)
- macOS 14 Sonoma or later
- Xcode Command Line Tools (macOS prompts automatically)
Transcriber v1.0.0
Transcriber v1.0.0
Local audio transcription for macOS using MLX Whisper on Apple Silicon. No cloud, no uploads — everything runs on your Mac.
Features
- Drag-and-drop or Open Audio File — transcription starts immediately with real-time streaming text
- Auto-setup — Python venv, mlx_whisper, and ffmpeg are installed automatically on first launch
- Folder watcher — auto-transcribes WhatsApp, Telegram, and Signal voice messages saved to Downloads or Documents
- Transcription history — persisted in local SQLite, with delete individual or delete all
- Configurable — custom transcription command, adjustable parallel run limit (1–10)
- Supported formats — mp3, wav, flac, m4a, ogg, opus, wma, aac, aiff, webm, mp4
Requirements
- Apple Silicon (M1 or later)
- macOS 14 Sonoma or later
Install
Download Transcriber-1.0.0-arm64.dmg, open it, and drag Transcriber to Applications. The app is unsigned — on first launch, right-click and select "Open" to bypass Gatekeeper.
First launch installs dependencies and downloads the Whisper model (~1.5 GB). This takes 1–3 minutes.