The last test for a voice isn't a benchmark. It's a blind listen.
Transcription Studio now synthesizes speech on-device, cloning a voice from a few seconds of reference audio. The engine that won ran the same model weights as the Python stack it replaced — on 346 MB instead of 2.7 GB.
Transcription Studio has spent months turning audio into text on a Mac with nothing leaving the machine. On 2 August 2026 it started going the other way. Hand it a sentence and it speaks — in a voice cloned from a few seconds of reference audio you supply, with no training run and no upload. One native app, one local service, both directions of audio.
We already had synthesis before this. It ran through a Python stack borrowed from the open-source world: a virtual environment, a second runtime beside our own, 2.7 GB on disk, 1.5 GB of memory once it woke up, and about four seconds before the first audio came back. It worked. It was also rented — someone else’s runtime, doing one job, that could move under us at any release.
Going native usually means accepting a different model, and a different model means a different voice. That is the part that stops most ports before they start. It didn’t apply here. An open-source Swift package ships a Core ML port of the exact model we were already running, gated by fixture tests against the Python pipeline it came from — same weights, same 48 kHz output, inside the runtime our app already used for speech recognition. The voice was the same voice by construction.
The gate was an ear
Nine engines were benched on the same renders, one of them the incumbent. The measured table is real, and it decided nothing.
The decision was four clips, blind-ordered and played back with no labels. The Core ML port was picked on the short sentence and on the long passage — over the Python original running identical weights. Parity had been the hope; preferring the port to the thing it was ported from is what made it a finding rather than an assumption. The deliberate could-it-sound-better candidate, at roughly seven times the compute cost, lost on the only axis that was ever the gate.
Then the rest of it fell out. Disk: 2.7 GB to 346 MB. Peak memory: 1,540 MB to 636 MB. First audio for a short note in the same warm-process test: about 4.3 seconds to about 1.4, and roughly 0.3 through the always-on local service where the model stays resident.
The Python stack was then deleted. Not disabled, not left behind a flag as a fallback — removed, with its virtual environment and cached weights, about 5.6 GB off the machine. A fallback nobody exercises is not a fallback; it is a second system quietly rotting.
What it refuses to do
The cloning engine speaks English and returns an error for anything else. Its phonemizer is English-parity, so another language wouldn’t come out accented — it would come out wrong, and confidently wrong is the more expensive failure.
It won’t trust a label it can derive, either. The model truncates a reference clip to five seconds but still tries to speak whatever the accompanying transcript claims is in it, so a stale transcript makes it say words that aren’t there. Rather than trust text a person typed next to the clip, the app transcribes the clip itself with word timestamps and trims audio and text to match.
And the two models never load each other’s weight: recognition and synthesis hold separate idle clocks, so a day of transcribing never pages in the voice.
Each of those is the same decision in a different place. A local system earns trust by being specific about what it will not attempt.
Running it is not the same as selling it
Transcription Studio is not on the App Store. It is a native macOS and iOS app FCT built and uses daily; the synthesis path described here shipped on 2 August and has run in production here since. The models are open weights we run on our own hardware.
That is the reason the week was worth spending. The model can be rented. The machine it runs on, the boundary it runs inside, and the decision about what leaves the building should not be.
Frequently asked questions
What does voice cloning mean here?
Zero-shot cloning: you hand the app a few seconds of reference audio and it speaks new text in that voice, with no training run and no model to fine-tune. The reference clip stays on your machine and the synthesis happens there too. It is the same idea as the transcription side of the app, pointed the other direction.
Why replace something that already worked?
The old path worked and was rented — a Python virtual environment and a second runtime sitting beside our own to do one job, 2.7 GB on disk and 1.5 GB of memory when it woke up. Every dependency like that is a thing you don't control that can move under you. The replacement runs the same model weights inside the runtime the app already used for speech recognition, so the count of things we depend on went down rather than up.
How was the winner actually chosen?
By ear, blind. Nine engines were measured on the same renders, and the measured table decided nothing on its own. Four clips were played back unlabelled and the Core ML port was picked on both the short sentence and the long passage — including over the Python original running identical weights. A candidate that could have sounded better at roughly seven times the compute cost lost on the only axis that was ever the gate.
Can I get Transcription Studio?
Not yet. It is not on the App Store. It is a native Mac and iOS app FCT built and runs every day as its own daily driver, and the local service behind it is what powers our internal transcription and voice work. We would rather say that plainly than announce a date we haven't earned.
