opendub.ai
#ai-dubbing#omnivoice#open-source#bug-fix

I Fixed Another Bug in the Open-Source Dubbing Tool!

opendub · 2026-07-14 · 4 min read

This is another OmniVoice story. The short version: I found a bug that could freeze the whole app, I fixed it, and the fix shipped the next day in a new version (v0.3.15), with my GitHub name in the release notes. Getting there wasn’t exactly smooth, though.

Korean kept popping out of my Spanish dub

I was dubbing a Korean video into Spanish, and a few sentences came out untranslated. Right in the middle of all the Spanish voices, it would suddenly read a Korean sentence out loud, clear as day.

I dug into the cause with Claude. To mimic a voice, the app cuts short audio snippets out of the original video, and each snippet comes with a note saying “here’s what’s being said.” Turns out the two can drift apart: the audio is cut here, but the note describes a spot half a beat away. When they don’t match, the model gets confused and reads the note out loud instead of the translation.

I wrote up the cause and filed an issue, along with a PR containing my fix: every time the app makes an audio snippet, transcribe that snippet again, so the sound and the text are forced to match.

My first PR never got merged, closed by a matter of hours

The maintainer only saw my issue and fixed it himself within hours, the same fix, without ever seeing the PR I had already put up. So my PR didn’t make it in.

That was disappointing. I had brought the whole solution as working code, and I ended up as just the person who reported it. Still, he left a comment while closing it. He said my report was among the clearest the project had ever received, and apologized: not checking the open PRs was his mistake. Then he added one more thing. If I ever spotted something my code handled better than the merged version, I should send it in, and he would take it seriously.

The comment left while closing PR #1005

The comment left while closing PR #1005

Rereading the merged code, I found a gap

He said his code did the same thing as mine. I wanted to know if that was really true, and I had just been invited to send in anything that differed. So I put the two side by side and compared them. One spot was different.

The app has a transcription worker that turns audio into text, and it has an old quirk: every so often it goes silent, no answer at all. So whenever the app asks it to transcribe, it always sets a timer: no answer in time, give up and move on. But one spot in the newly merged code was missing that timer. If the worker goes silent right there, the whole app freezes like it’s dead. My code had the timer. The merged one didn’t.

This time it went in within a day

This time I opened a PR with everything in it: where the problem was, what happens if it stays, and a test that fails before the fix and passes after.

The next day it was accepted as-is, nothing to change. The comment said it was a real gap, that it followed the file’s existing style, that the tests were textbook, and that he had verified it himself. He also thanked me for taking that earlier invitation seriously.

The merge comment on PR #1031

The merge comment on PR #1031

And that same day, my name went into the v0.3.15 release notes.

The part of the v0.3.15 release notes that mentions my GitHub name

The part of the v0.3.15 release notes that mentions my GitHub name

I ran the video that started all this through the new version. This time, no Korean pops out.

Original (Korean)

With the bug: Korean slips out mid-dub

Fixed (v0.3.15): English all the way through

This dub is Korean to English. The bug showed up no matter which language you dubbed into.

What I learned

Fixing this bug taught me something: a closed PR isn’t the end. I calmly reread the code that got merged, spotted what everyone had missed, and brought it back politely, with evidence. A day later it was in the official release. If I had given up when my PR wasn’t merged, I would never have touched the code again, and none of it would have made it into the official version.

Working on open-source issues keeps teaching me things. So many people are contributing and building these tools together, and now I’m one of them. Using the app myself is how I find the bugs, which makes me want to contribute more. And the more I contribute, the more attached I get. I hope open source keeps getting livelier, with more people pitching in.

Is anyone else out there contributing to open source? Tell me your story in the comments.

If you’re curious about the code: here’s the merged PR #1031. The earlier chapters are in part 1 and part 2.

comments

Comments (0)

No comments yet — be the first.