先日、Appleシリコン専用の文字起こしアプリ「FFTrans Parakeet」をリリースしました。
その中核を担うのは、驚異的な速度を誇る文字起こしエンジン、parakeet_mlxです。
音声抽出(元々のFFmpegからAVFoundationに置き換え済み)や話者分離を含めたアプリ全体の処理でも、70分の動画をわずか4分強で文字起こしできるそのパフォーマンスは、従来のmlx-whisperを大きく上回ります。
しかし、最新のエンジンparakeet-tdt-0.6b-v3には、特定の音声で思わぬ課題に直面しました。
本記事では、その課題と、解決のために試行錯誤して見つけた「英語優先モード」についてご紹介します。
parakeet-tdt-0.6b-v3を襲ったキリル文字の怪
parakeet-tdt-0.6b-v3は多言語対応を強化したモデルですが、これが思わぬ現象を引き起こしました。
Apple Eventの動画を文字起こしした際、話者の発音や背景音の影響、あるいは音声へのエフェクトのせいなのか、英語のセリフにウクライナ語と思われるキリル文字が大量に混入する現象が多発したのです。
例えば、以下の字幕は本来は英語です。
76
00:05:22,714 –> 00:05:24,975
Kate Begeron: Дес трансформис респанс.
正解は「This transforms the base response.」ですが、parakeet-tdt-0.6b-v3は一見ウクライナ語に見えるけど意味不明の音だけ英語に近い単なるキリル文字の羅列として認識してしまいました。
70分の動画で1100項目ある字幕のうち、実に200項目近くで同様の事態が発生。
ちなみに他の英語の音声ではここまで酷いものはないので、Appleイベント固有のものなのかもしれませんが、英語専用のv2モデルでは起こらない現象であり、原因はv3モデルの多言語学習にあると推測しました。
言語指定ができないモデルへの挑戦
parakeet_mlxには、文字起こし言語を指定する機能や、結果が何語かを返す機能すらありません。
一見、キリル文字の混入を避けるのは不可能に思えましたが、FFmpeg依存やメモリ解放の挙動を追う中で、モデルのソースやconfig.jsonの中に、言語をある程度優先させる隠されたプロンプトが存在するのではないかと仮説を立てました。
あいにく当初の予想は外れて、config.jsonによる解決は甘い考えでしたが、深掘りを続けた結果、なんとか方策を見つけ出し、「英語優先モード」を実装することに成功しました。
速度を犠牲にしない二段構えの解決策
この英語優先モードは、まず多言語(通常)モードで通常通り文字起こしを行い、キリル文字が混入していた場合にのみ、英語優先モードで再文字起こしするという方法を採用しました。
こちらも当初は最初から英語優先モードで押し通すつもりだったのですが、モデル内の英語学習データが全部使えるわけではないようで、該当するトークンを見つけられない現象が起こりがちです。
そこで上記の安全策を取りました。
これは一見、速度面で不利に見えますが、parakeetの圧倒的な文字起こし速度のおかげで、体感上の処理速度はほとんど変わりません。
このアプローチにより、先ほどのキリル文字の例は以下のように修正されました。
76
00:05:22,714 –> 00:05:24,975
Kate Begeron: Transforms the base response.
他の事例もこのように改善されています。
Tim Cook: Ви бринсомач карен консирашен та еврий дітей.
Tim Cook: With so much care and consideration to every detail.
Tim Cook: Ле старт від АрПодс.
Tim Cook: Let's start with AirPods.
Kate Begeron: Дес трансформис респанс.
Kate Begeron: It transforms the base response.
Kate Begeron: Із фор таймс мо ефектив.
Kate Begeron: It’s four times more effective.
Kate Begeron: Диливерні сенсацічно адіо перформанс.
Kate Begeron: Delivering sensational audio performance.
Tim Cook: AirPods про три абсолютні амазін
Tim Cook: AirPods Pro 3 are absolutely amazing.
先頭がわずかに欠落することがあるものの、丸ごとキリル文字に化けるよりはるかに良い結果です。
これにより、キリル文字が混入しやすい条件下でも、WER(単語誤り率)は一桁台まで改善することができました。
限界と今後の展望
今回の「英語優先モード」は、キリル文字の混入をほぼなくすことに成功しましたが、いくつかの限界も見えてきました。
- 先頭単語の欠落: モデルが英語だと判断できず、冒頭のトークンを見失ってしまうことがあります。
- 他言語への応用不可: 同じ方法をフランス語やドイツ語で試しましたが、なぜか英語に引っ張られてしまい、機能しませんでした。これは、モデル内部で英語だけがかろうじて単独で学習されているためと考えられます。
現状、英語以外の言語への対応は困難であり、FFTrans Parakeet v1.4には「英語優先モード」のみを搭載する予定です。
なお、今回の検証を通じて、あらためてWhisperのLarge-V3モデルの安定性を再認識しました。
速度ではparakeetに劣るものの、実際の運用における信頼性は依然としてWhisperが優れています。
日本語対応モデルは、引き続きmlx-whisperをベースとしたFFTrans Proを継続しようと思います。
ただ今回の「英語優先モード」は、速度に加えて精度面でもFFTrans Parakeetを大きく進化させ、FFTrans Proにさらに近づける一歩となりました。
これは、おそらく世界初のparakeetによる「英語優先モード」です。
英語コンテンツを扱う多くのクリエイターやユーザーにとって、必須の機能となることでしょう。