Releases: lordbasex/macdub
Release list
MacDub 0.4.4
History
- Times per sentence for dubbing too: each sentence shows transcription · audio · total — from the end of the sentence to its text, from the text to the translated voice (translation and speech), and the whole way — like live translation conversations already did. Hover them for the translation step on its own. The end of a sentence is taken from the last pause in the captured audio, so it shows when the video pauses between sentences.
- Copy a line: right-click any sentence in History, in both tabs, to copy it, its original or its translation. Exports of the whole session are still in Export.
Install
MacDub-0.4.4.dmg, or brew upgrade --cask macdub. Not notarized yet: right-click › Open the first time. The Meet extension is unchanged.
MacDub 0.4.3
Faster dubbing with SpeechAnalyzer
Dubbing on macOS 26+ now uses SpeechAnalyzer's fast results, which live translation already used. On the 30-minute benchmark (report):
| SpeechAnalyzer (dubbing) | 0.4.2 | 0.4.3 |
|---|---|---|
| Latency, median · p90 · max | 2.3 · 4.1 · 12.4 s | 0.7 · 2.3 · 9.3 s |
| Sentences spoken whole | 84.9 % | 87.8 % |
| Word error rate | 9.8 % | 10.3 % |
| Words lost | 1.3 % | 1.4 % |
The translated voice starts three times sooner, still in whole sentences, for half a point of word error rate. SFSpeechRecognizer (macOS 15, and the fallback) is unchanged.
The benchmark measures what the app does; --no-fast-results runs it the old way.
Install
MacDub-0.4.3.dmg, or brew upgrade --cask macdub. Not notarized yet: right-click › Open the first time. The Meet extension is unchanged.
MacDub 0.4.2
Fixes
- History keeps the times of each sentence. Sessions were saved with whole seconds, so a live translation conversation reopened in History showed its transcription · audio · total times as 1,0 / 0,0 s. They are now saved with milliseconds; sessions saved before still open.
- A live translation conversation is always saved, however it was started.
- No more "Transcription 0,0 s" for a sentence recognized while its speaker was still talking: its end is not known yet, so it is not shown.
README
New English screenshots of every screen — Live translation (setup and a conversation), History with both tabs, Settings › Voice with Personal Voice, Settings › Extensions — and a new tour GIF, all made from real recognition and translation.
Install
MacDub-0.4.2.dmg, or brew upgrade --cask macdub. Not notarized yet: right-click › Open the first time. The Meet extension is unchanged since 0.4.1 (it ships inside the app: Settings › Extensions).
MacDub 0.4.1
Live translation (beta)
A new section under Dubbing: talk with people in another language through Google Meet, Zoom or any call app.
- What you say reaches them translated, in the voice you choose — your own Personal Voice included — through a virtual microphone.
- What they say reaches your headphones in your language, with the original turned down.
- About 1.8 s from the end of a sentence to its translated voice (measured on an M1): two SpeechAnalyzers run at once with fast results, and each sentence is closed at a 0.5 s pause.
- Chat-style view: a "…" bubble while someone speaks, and for every sentence its transcription · audio · total times.
- Pick the microphone, the languages (those on your Mac first, 👤 where your Personal Voice speaks), and a voice for each side.
- The virtual microphone is BlackHole (free, open source): MacDub installs it with one click, Homebrew included if needed.
Needs macOS 26 or later and headphones.
Google Meet extension
Settings › Extensions › Install in Chrome…
- Switches Meet's microphone to the translated voice by itself while live translation runs, and gives yours back when it stops. Meet's mute is always respected.
- Can post your translation in the meeting chat, and translates the chat messages the others write.
- Talks only to MacDub on your Mac (127.0.0.1).
Until it is in the Chrome Web Store it installs in developer mode: the steps are in Settings › Extensions. After updating MacDub, press ↻ on the extension's card in chrome://extensions.
History
- Dubbing and Live translation tabs.
- Conversations are saved with who said what, their timings, and both sides' audio in one take. Play them back, tap a sentence to jump to it, and export them as audio + subtitles, .srt, .md or .txt — each line says who spoke.
- Your earlier sessions open as before.
Install
MacDub-0.4.1.dmg, or brew upgrade --cask macdub. Not notarized yet: right-click › Open the first time. MacDub-Meet-extension-0.4.1.zip is the same extension that ships inside the app.
MacDub 0.4.0
Dub with your own voice
MacDub can now speak with the Personal Voice you recorded in System Settings › Accessibility › Personal Voice. Allow it once in Settings › Voice › Personal Voice › Allow…, and it appears first in the voice list (👤). Available on every macOS MacDub runs on (Personal Voice exists since macOS 14). A Personal Voice speaks the languages macOS made it available in. Apps cannot create one, so Create in System Settings… opens the pane where you record it.
SFSpeechRecognizer: fewer lost words, whole sentences
SFSpeechRecognizer is the only engine on macOS 15 and the fallback on macOS 26+. Its segmentation was rewritten. On the 30-minute benchmark, same audio and Mac as 0.3.1 (report):
| 0.3.1 | 0.4.0 | |
|---|---|---|
| Words lost | 14.7 % | 7.1 % |
| Word error rate | 36.3 % | 22.9 % |
| Sentences spoken whole | 55 % | 61 % |
| Latency, median · p90 · max | 1.1 · 3.2 · 22.3 s | 1.0 · 2.4 · 8.9 s |
| Words spoken twice | 7 | 0 |
- A transcript the recognizer restarts inside a task after a pause is no longer lost, and a late revision of it is no longer spoken again.
- Rotated recognition runs finish their audio instead of being cancelled, so no words are dropped at the seam.
- Sentence ends also come from pauses in the audio; a pause in the text alone no longer restarts recognition while someone is still talking.
SpeechAnalyzer (macOS 26+) is unchanged.
Fixes
- Segments starting with a stray comma, or made of a lone period, are gone.
- A long unpunctuated sentence could wait 13 s before being spoken; it now goes out after at most 8 s.
Install
MacDub-0.4.0.dmg, or brew upgrade --cask macdub. Not notarized yet: right-click › Open the first time.
MacDub 0.3.1
Security fixes (MCP server)
Update if you use MacDub's MCP server, especially its HTTP transport.
- DNS rebinding: the HTTP transport accepted any origin containing
localhost(http://localhost.evil.com). Host and Origin must now name this machine exactly. - Path traversal:
delete_session,get_sessionandexport_sessionused the session id as a path, so an id like../../Claude/claude_desktop_configcould delete another app's settings. Ids must now be session ids. get_audio_snippetdeleted whateverpathnamed before writing; it now writes.wavfiles only and needsoverwrite: trueto replace one.- A negative
Content-Lengthcrashed the HTTP server; requests are now bounded (4 MB). - Add to Claude Desktop no longer overwrites a config it can't parse (it used to drop your other servers), and keeps a backup.
Fixes
- SpeechAnalyzer: a sentence it holds back (it sometimes merges two) is spoken after at most ~10–12 s instead of up to 20 s — benchmark update.
- Summaries with Claude Code or Codex: no more hang with long CLI output, and a CLI that exits early (not logged in) can no longer crash MacDub.
- Stopping while dubbing is still starting no longer leaves capture running.
- A data race between audio capture and the SpeechAnalyzer → SFSpeechRecognizer fallback.
Accessibility
VoiceOver now announces the sidebar, Start/Stop, Settings, every icon button and the controls of the Dubbing, Subtitles and AI & MCP screens by name (they were announced as "button").
Install
MacDub-0.3.1.dmg, or brew upgrade --cask macdub. Not notarized yet: right-click › Open the first time.
MacDub 0.3.0
Whole sentences with SpeechAnalyzer
On macOS 26, MacDub now translates and speaks whole, corrected sentences instead of fragments, so the dubbed voice no longer sounds cut.
SpeechAnalyzer's volatile results arrive fast but rough: doubled pieces ("the speecheech analyzer"), words cut mid-way, sentences split wherever a burst of text ended. Its final result for the same audio is a whole, punctuated sentence. MacDub now segments finals only and shows the volatile text live; if a final is late, sentences the volatile text has already completed go out after 5 s.
Measured on an Apple M1 with 28 minutes of speech (report):
| SpeechAnalyzer | SFSpeechRecognizer | |
|---|---|---|
| Sentences spoken whole | 92 % (was 35 %) | 49 % |
| Word error rate | 9.7 % | 31.6 % |
Questions ending in ? |
19/26 | 5/22 |
| Latency, median · p90 | 2.3 s · 4.1 s | 1.1 s · 3.1 s |
| Speech service CPU | 5.4 % | 22.7 % |
Fixes
- Crash with SpeechAnalyzer (
EXC_BREAKPOINTinSpeechRecognizerWorker) when audio arrived before the analyzer's format was known. - Apple Intelligence summaries of long sessions failed with exceededContextWindowSize; the transcript is now fitted to the model's 4,096-token window with its own tokenizer.
- Decimals follow your locale (
3,2 s), language names readespañol (es)instead ofespañol (latino, España), the voice menu no longer repeats the quality in English, missing Spanish/Portuguese translations added.
New
- Settings › Permissions › Reset permissions and relaunch — forgets MacDub's Screen & System Audio Recording and Speech Recognition grants and lets macOS ask again, no Terminal needed.
- Only one MacDub at a time; relaunches (also after a factory reset) wait for the old copy to quit.
- Recognition benchmark anyone can run —
make benchmarkwritesdocs/benchmarks/<date>-<chip>.md. Results from M2, M3, M4, M5 and M6 are very welcome as pull requests. - MCP
export_sessionalso acceptsid. - CI builds and tests against the macOS 15, 26 and 27 SDKs.
Install
Download MacDub-0.3.0.dmg, open it and drag MacDub to Applications, or brew install --cask macdub from the tap. Not notarized yet: right-click › Open the first time. macOS 15 or later; SpeechAnalyzer and Apple Intelligence need macOS 26.
MacDub 0.2.0
MacDub 0.1.0
Full Changelog: https://github.com/lordbasex/macdub/commits/v0.1.0