FFTrans Parakeetに英語優先モードを実装中

FFTrans Parakeetを先日リリースしたばかりですが、parakeet-tdt-0.6b-v3だと音声によってウクライナ語と思われるキリル文字が大量に混入する現象が起こることがあります。
これは一例ですが、Appleイベント70分の字幕1100項目のうち、200近くにキリル文字が混入する状況です。

(FFTrans Parakeet 1.3の結果)
76
00:05:22,714 –> 00:05:24,975
Kate Begeron: Дес трансформис респанс.

(正解:FFTrans Pro 1.3の結果)
76
00:05:22,714 –> 00:05:24,975
Kate Begeron: This transforms the base response.

英語専用のv2ならそんなことは起こらないのですし、同じ英語でも全く起こらないこともあるので不思議な感じです。
話者がネイティブでないから?というのも疑いましたが、どうやらそういうわけではなさそうです。
v2に切り替えることも考えましたが、それではヨーロッパ系言語に対応できないですし、ちゃんと認識できた時の「精度」はv3のほうが高いのでなんとか解決策はないものかと調べてみました。

ちなみにparakeetには文字起こし言語を指定するモードはおろか、結果が何語なのかを返すことすらできません。
本来なら絶対不可能な事案です。

ただ、FFmpeg依存やメモリ解放でparakeet_mlxのソースやモデルのconfig.jsonを追いかけていて言語をある程度優先させる「優先プロンプト」のようなものが隠されているように感じて深追いしてみました。
最初考えていたconfig.jsonで解決できるような甘いものではなかったですが、なんとか方策を見つけて改造してみました。
その結果、英語に関しては以下のように優先的に認識させることに成功しました。(他言語についてはあとで解説します。)

76
00:05:22,714 –> 00:05:24,975
Kate Begeron: Transforms the base response.

先頭が少し欠けていますが、モデル内部で英語だとしっかり認識させて学習しているものがそう多くないようで、さらに話者のメルケプストラム特徴が英語寄りでないと判断されたり背景音などでズレてしまうと冒頭からのトークン選びの「パズル」のピースを見つけきれないみたいです。
それでもまるまるキリル文字で出るよりは良いだろうという判断をしました。

最初はこの英語優先モードで欠落が生じたら従来の多言語モードで…と考えていましたが、それでは上記のような現象が多発しがちなので、結果的にはまず多言語モードで通常通り文字起こしし、キリル文字が混入していた場合、英語優先モードで文字起こしするという方法に落ち着きました。
2回文字起こしするので本来なら速度的に不利ですが、そこは高速なparakeetなので体感上はほぼ影響なしです。

(FFTrans Parakeet 1.3の結果)
150
00:08:26,247 –> 00:08:28,289
Kate Begeron: Алам відкредил першоадіо.

(FFTrans Parakeet 1.4αの結果)
148
00:08:26,247 –> 00:08:28,289
Kate Begeron: Along with incredible personal audio.

もちろん全てが英語を優先して文字起こししてね、という設定ですのでキリル文字が完全に排除できるわけではありません。
キリル文字のままの項目もまだ30項目弱あるようですが、それでもかなりの改善と言えるでしょう。
多言語モードを優先しているので、AirPodsによるライブ翻訳の音声はちゃんとポルトガル語で文字起こしできています。

141
00:08:06,908 –> 00:08:07,580
Julz Arney: Com certeza.

142
00:08:07,580 –> 00:08:09,262
Julz Arney: O cliente vai adorar ver isso.

以下のように一部単語が化けていることもありますが、これは場合によっては置換やカスタム辞書でも対応は可能でしょう。

дітеil(detail)
Сіріз Елевин.(Series eleven.)
aдіo(audio)
про(Pro)
ір(ear)
ефектив(effective)
транслейшн(translation)
сіп(chip)
г’ü(GPU)

それならばとフランス語やドイツ語でも同じ優先モードを試したのですが、これは全くダメでした。
多言語モードよりもむしろなぜか英語に引っ張られがちになり、ちゃんと機能してくれません。
バグを疑ったほどひどく、どうやら英語がかろうじて単独で学習してあるデータがあり、他の言語は圧倒的に多言語のまま学習されているみたいです。
そもそも隠しモードみたいなものですから、モデル内部の挙動は分かりませんし、英語ですら先頭はロストしがちなので現状はこれが限界でしょう。
したがって、1.4には英語優先モード(設定で切り替える形)のみ実装予定です。

なお今回の実証実験であらためてFFTrans Pro、というよりもWhisperのLarge-V3モデルの優秀さが身に沁みました。
速度やベンチマークとしてのWERはむしろparakeetのほうが優秀とするものもありますが、実際に使ってみるとまだまだWhisperの安定性が顕著です。
日本語やProバージョンの文字起こしエンジンはまだもうしばらくはMLX-Whisperでいくことになりそうです。

ただ今回の英語優先モードを搭載することで、FFTrans Parakeetも速度だけでなく精度もかなりFFTrans Proに近づくと言えそうです。
WERでいってもちょっと計算したくないような値から、英語優先モードによりキリル文字が混入しやすい条件下の音声でも一桁台まで改善することができます。
英語のコンテンツを扱うクリエイターさんやユーザーさんにとっては「英語優先モード」はもはや必須の機能と言えるでしょう。

当然ながらどこにも公開されていない技術ですので、世界初のparakeetによる「英語優先モード」。
1.4のリリース、そして今後の改良にもご期待ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)