Four open-source voice clones, one laptop, and the one that stuck
I wanted narration in my own voice for a side project, with no microphone session per script. This is what I tried, what I measured, and why I switched twice.
The first narration my laptop produced sounded like a GPS reading a datasheet. Every word was right. Nothing about it sounded like a person.
I had a side project that needed a lot of spoken explanation, in my own voice, and I did not want to sit at a microphone for every script. So the job was simple to say: take a recording of me, and make any new script come out sounding like I said it. On one 24 GB Mac. Open-source models only.
Which text-to-speech model actually does that well? I tried four.
The short version
- To clone your own voice on a laptop: Chatterbox-Turbo. It is where I ended up.
- For quick drafts, no cloning: Kokoro. Tiny, instant, a very good stranger.
- Qwen3-TTS cost me the most time for the least gain. Original Chatterbox sounded great but was too slow to live with.
The rest is how I got there, including the parts I got wrong.
THE RULES OF THE GAME
What “good” had to mean
Before comparing anything I wrote down what I could not live with. A voice that was not mine, so no generic presets. Anything that needed a cloud API or a bill. And anything that took hours, because an edit to one sentence should not cost an afternoon.
That gave me four contenders, in the order I met them.
TRY 1 · KOKORO
The fast one that can’t be me
Kokoro was the easy win. It read about 17 seconds of audio in roughly 5 seconds of wall-clock, with no complaints and a clean transcript. For checking that a pipeline works end to end, it is perfect.
It just cannot be me. It picks from a set of preset voices rather than learning one from a recording, which is the part people call voice cloning. The pitch tells the story: its voice sits at about 198 Hz, while my reference recording sits at about 163 Hz. Same words, a different person.
TRY 2 · QWEN3-TTS
Cloning that sounded like a GPS
Qwen3-TTS takes a short clip of you and continues it the way a language model continues a sentence, which is why it is called in-context cloning. It worked on the first run. The pitch was close to mine and the transcript was clean (a 2% word error rate in my fresh test).
My verdict by ear was blunter: very robotic. Then the practical problems stacked up.
- It ate the machine. On a 24 GB laptop with a browser open, the process was killed with no error and no output. I only found out because the file was missing.
- Two knobs did nothing. I spent a while tuning a style prompt and a speed setting. Reading the source showed this checkpoint ignores both. Check before you tune.
- Pacing followed punctuation. The model is autoregressive, so it takes its rhythm from the text. A 51-word sentence with no commas gave average pauses of 219 ms. Normal punctuation gave 325 ms. There was nowhere to breathe.
- It copied my pauses, even mid-word. My reference clip had a pause roughly every 1.3 seconds. In a long run, about 9% of generated words had a dropout inside them. “Developers” came out as “devel…opers”.
I patched around it by finding word times with Whisper and splicing silence in by hand. That moved the share of silence from 12.5% to 24.8%, against 22% in my own natural speech. It sounded better. It also meant I was now compensating for the model instead of using it.
Get Abhishek Selokar’s stories in your inbox
Join Medium for free to get updates from this writer.
A lesson in not trusting one sample
I tried three different reference clips and saw speaking rates differ by 3.7%. That looked like a finding. It was noise: the model samples at temperature 0.9, and I had one run per clip. What did repeat was that the longest clip gave the most pitch variation (F0 spread 33 vs 23). Longer references, more music in the voice.
TRY 3 · CHATTERBOX
The one I picked in a blind test
I gave the same 20-second passage to Qwen3 and Chatterbox and listened without knowing which was which. I picked Chatterbox. The numbers agreed with my ears: speaker similarity to my reference was 0.949 against 0.863 for Qwen3. (That similarity score is from an earlier test on the same hardware. I did not re-run that method for this post.)
In my fresh test on a different passage, the Chatterbox take also moved more like a person: its pitch swung about 4.8 semitones around the middle, against 3.4 for Qwen3 and about 6.3 in my own reference. Not monotone.
So why did I leave it? Two reasons, and neither was the voice.
Rhythm. It spoke fast inside short phrases, around 215 to 220 words a minute, then stopped. Phrases averaged about 1.5 seconds. Add the pauses my own code inserted between sentences, and the whole thing went fast, stop, fast, stop. My best guess is that the low guidance setting I used to keep it from sounding flat also made it burst. I never isolated that, so call it a hypothesis.
TRY 4 · CHATTERBOX-TURBO
The shift
Resemble AI, who make Chatterbox, ship a distilled sibling. It is 350M parameters instead of 500M, its audio decoder runs in one or two steps instead of ten, it is MIT-licensed, and it clones from roughly ten seconds of reference. It also loses some controls: there is no guidance or exaggeration knob to turn, and it is English-only.
In my earlier 20-second test, Turbo matched the original on similarity (both 0.949), roughly halved the word error rate (1.9% against 3.8%), and generated about 18 seconds of audio in about 50 seconds when warm. That is the difference between a whole narration in minutes and a whole narration overnight.
THE HONEST BITS
Where this advice stops
I did not test everything. F5-TTS, Fish/OpenAudio, VibeVoice and IndexTTS2 are on my reading list, and I skipped them on licence and availability grounds without running them. I have no numbers on them, so I am not ranking them. IndexTTS2 is the one I would try next, because it lets you control duration, which could let you time speech to what is on screen.
Not for everyone. Turbo is English-only. Check every model’s licence before commercial use; I only verified Turbo’s (MIT) and I would not rely on my memory for the rest. And if you need hours of audio overnight and don’t care about edits, the original Chatterbox is still lovely.
TAKEAWAYS
What I’d tell the next person
- Write down your one deal-breaker first. Mine was “sounds robotic”. Comparisons without that turn into spreadsheets of near-ties.
- Use three judges: your ear, a similarity score, and a transcript. Each one catches something the others miss.
- One take is an anecdote. Generate a few, auto-check them, keep the best.
- Read the source before tuning a knob. Two of my “settings” were doing nothing.
- Wall-clock is a quality metric. A model that takes seven hours teaches you to stop editing, and your output gets worse.
- Rhythm is a pipeline problem as much as a model problem. My inserted pauses did more damage than the voice did.
Where this stands: I’m narrating with Turbo now, and the plan is to run every take through a Whisper check before it goes anywhere. The next thing I want to test is a clean multi-seed comparison, which would turn “one run each” into error bars.








