オープンソースの吹き替えツールのバグ、また直しました!
今回も OmniVoice の話です。先に結論から言うと、アプリ全体が止まってしまいかねないバグを見つけて直して、それが翌日の新バージョン(v0.3.15)に入りました。リリースノートには私の GitHub の名前も一緒に。ただ、ここまで来るのは、すんなりとはいきませんでした。
スペイン語の吹き替えから韓国語が飛び出してきた
韓国語の動画をスペイン語に吹き替えていたら、いくつかの文が翻訳されずにそのまま出てきたんです。スペイン語の声が続く中で、突然、韓国語の文章をはっきり読み上げるんですよ。
Claude と一緒に原因を探ってみました。このアプリは声をまねするために、元の動画から短い音声の切れ端を切り出して使うんですが、その切れ端と、「ここではこう言っている」と書き留めてあるメモが、たまにずれてしまうことがあるみたいなんです。音はここで切ったのに、メモの中身は半歩ずれた場所のもの、みたいな。そうやってずれると、モデルが混乱して、翻訳文の代わりにそのメモをそのまま読み上げてしまうんですね。
原因をまとめてイシューとして報告して、直したコードも PR で一緒に出しました。音声の切れ端を作るたびに、その切れ端をもう一度文字起こしし直して、音と文字を強制的に一致させる、という内容です。
最初の PR はマージされず、数時間差でクローズ
作者さんが私のイシューだけを見て、数時間のうちに同じ内容を自分で直して反映してしまったんです。私が出しておいた PR には気づかないまま。というわけで、私の PR は取り込まれませんでした。
正直、悔しかったです。解決策までコードにして持っていったのに、結局「報告しただけの人」になってしまったので。それでも、クローズするときにこんなコメントを残してくれました。私の報告はこのプロジェクトに来た中でも一番わかりやすい部類だと言ってくれて、開いている PR を確認しなかったのは自分のミスだと謝ってもくれたんです。そして、ひとこと付け加えてくれました。マージしたコードより私のコードのほうがうまく処理している部分を見つけたら、いつでも送ってほしい、真剣に見るから、と。
PR #1005 をクローズするときに残されたコメント
採用されたコードを読み直していたら、穴を見つけた
作者さんいわく、自分のコードは私のと機能的に同じ、とのことでした。本当に同じなのか気になったし、違いを見つけたら送ってほしいという招待を受けたばかりでもありました。そこで二つのコードを並べて比べてみたんです。一か所だけ、違っていました。
このアプリには、音声を文字に起こしてくれる書き起こし係がいるんですが、この係、ごくたまに、うんともすんとも言わなくなる持病があるんです。だから書き起こしを頼むときは、必ずタイマーも一緒にセットしておきます。時間内に返事がなければ、あきらめて次に進めるように。ところが、新しく取り込まれたコードの一か所に、そのタイマーが抜けていました。よりによってそこで黙り込まれたら、アプリ全体が死んだみたいに固まってしまいます。私のコードにはタイマーがあったのに、採用されたほうにはなかった、というわけです。
今回は一日で取り込まれました
今回は、必要なものを全部詰め込んだ PR を出しました。どこが問題なのか、放っておくと何が起きるのか、そして直す前は失敗して直した後は通るテストまで。
翌日、直すところは一つもなく、そのままの形で受け入れられました。本物の穴を見つけてくれた、ファイルの元々の書き方にちゃんと合わせてある、テストはお手本みたいだ、自分でも別に検証してみた、というコメントと一緒に。前回の招待を真剣に受け止めてくれてありがとう、というお礼の言葉もありました。
PR #1031 のマージコメント
そしてその日に出た v0.3.15 のリリースノートに、私の名前が載りました。
v0.3.15 リリースノートで私の GitHub 名が載っている部分
新しいバージョンで、問題になっていた動画をもう一度吹き替えてみました。今度は韓国語が飛び出してきません。
元の映像(韓国語)
バグあり版: 途中で韓国語がそのまま流れます
修正版(v0.3.15): 最後まで英語で流れます
この吹き替えは韓国語から英語です。このバグはどの言語に吹き替えても起きていました。
学んだこと
今回コードを直してみて、学んだことがあります。PR がクローズされても、それで終わりじゃないということ。採用されたコードを落ち着いて読み直したら見落としが見えてきたし、それを証拠と一緒に、礼儀正しく持っていったら、一日で公式バージョンに入りました。マージされなかったからとあきらめていたら、私はもうコードを直そうとはしなかったはずです。そうしたら公式バージョンに載ることもなかったでしょうね。
オープンソースのイシューを直しながら、いろんなことを学んでいます。たくさんの人が貢献して、一緒に作り上げているんだな、ということ。私もその一人です。自分で実際に使っているから、どこがバグなのかがわかって、もっと積極的に貢献したくなる。そのぶん愛着も深まっていきます。オープンソースがもっと盛り上がって、もっと多くの人が貢献するようになったらいいなと思います。
私のほかにも、オープンソースに貢献している方はいますか?よかったら、コメントで体験談を聞かせてください。
コードが気になる方へ: マージされた PR #1031 です。これまでの話は第1回と第2回にあります。
週イチのAI吹き替えダイジェストを受け取る
AI吹き替えとニュースを週イチで、選んだ言語でお届けします。スパムは送りませんし、いつでも解除できます。
コメント (0)
まだコメントはありません。最初のひとことをどうぞ。