I like the idea of running my own AI. No bill, no data leaving my house. So when I needed to clean up a long transcript, I tried the local way first. The result changed my mind about when “free and local” is worth it.
The Need: Speech-to-Text Gets Names Wrong
Whisper turns a Korean sermon into text very well, but it makes a certain kind of mistake. It hears Bible words as ordinary words. A town name becomes a nonsense word. A book of the Bible becomes a different book. And one example I like: the Korean word for Psalms, sipyeon (시편), sounds almost like “ten pyeon” (10편). Whisper wrote “10” where the speaker said “Psalms”.
If you want a searchable archive, these errors matter. People search for the names.
My established fix is two steps with an AI model. Step 1 cleans general speech errors. Step 2 compares the text with a Korean Bible text, to fix quoted verses and book names. I have used Gemini for this before.
This time I wanted to try the same job with a local model, so that nothing is sent to the cloud.
The Proof: Same Episode, Two Models
One episode, 299 segments (30-second pieces of text). The same two-step method.
| Local Qwen2.5 32B | Gemini 2.5 Flash | |
|---|---|---|
| Segments changed | 56 of 299 | 104 of 299 |
| Time | about 50 minutes | 2.3 minutes |
| Cost | $0 | $0.086 (22 API calls) |
| Bible chapters used as reference | 7 of 9 (ran out of room) | 9 of 9 |
The numbers are not the whole story. The kind of errors differed.
Where Gemini was better:
- The transcript said “John 14” for the passage about walking on water. The right book is Matthew 14. Gemini fixed it. Qwen left the wrong book.
- Gemini turned “10편” back into “Psalms 19”, “Psalm 107”, and “the Psalms passage”. Qwen left the 10 alone, or deleted it.
- Gemini changed the speaker’s loose reading of a verse to the real wording of the Bible text, which is the point of step 2. Qwen made fewer of these changes.
What Qwen got wrong, that Gemini didn’t:
- It turned a Korean word into a few random Cyrillic letters, once.
- It changed Jesus-nim to Jesus, which drops the honorific the speaker used. That is the model changing how the person talks.
- It changed an ordinary Korean word into Chinese characters.
The Qwen model did fix real errors too, including the town name and several misheard book names. It is not useless. But I would not publish its output without reading it, and I would publish Gemini’s after a quick check.
The Story: Why I Insisted on Local
When Claude first proposed the usual Gemini method, I stopped it:
💬 Prompt that worked “No. The reason I’m using the GPU server is to do this correction with the local Qwen model, without using Gemini.”
The experiment showed me that “private” and “better” are different goals, and I should decide which one a job needs. For text that must stay at home, such as a private audio recording, I would accept a worse result to keep the data local. For a sermon episode, the privacy argument is weaker.
I also ran into the speed problem early:
💬 Prompt that worked “Isn’t it getting too slow?”
The first run used the largest model, Qwen2.5 72B. It took about 6 minutes per batch, and after an hour it had finished only one of two steps (batch 10 of 11). The whole job would have taken 2 to 3 hours. Claude agreed it was impractical and restarted with the 32B model, at about 2 to 2.5 minutes per batch.
The next day I asked for the established method, so I could compare:
💬 Prompt that worked “Please correct it using the Gemini API, the way we set up before.”
The How: How I Compared Them
Setup: The GPU server is an NVIDIA GB10 machine that someone lent me access to. It runs Ollama, with Qwen2.5 in 14B, 32B and 72B sizes. The 32B model uses about 28GB of memory. My PC runs the scripts and talks to the server over an SSH tunnel.
- Run both methods on the same transcript, saving each result as its own file. Never overwrite the original.
- Count changed segments for each. A model that changes more is not always better, and one that changes less is not always safer.
- Read the differences, not the files. I made a three-way text file: original, Qwen, Gemini, side by side for every changed segment. I looked for the four kinds of errors above.
- Add the cost. Time and money are results too.
Note for next time: when a local model’s job is to fix text, tell it not to change the speaker’s wording, the honorifics, or the script (no Chinese characters), and check the output for those three problems.
I did not run Qwen again with that stricter rule. Claude suggested it: the same run again, about 30 to 40 minutes. It might remove the honorific and character problems. I don’t know whether it would fix the wrong-book error, which looks like a gap in knowledge, not in instructions.
Where I Landed
For this job, I will use Gemini. It was much faster, the cost was 9 cents, and it got the walking-on-water passage into the right gospel.
I will use the local model when the text must not leave the house, and I will accept that I’ll need to check its work.