【要約】Whisperの言語自動判定に3回刺された話(日本語の会議が英訳されて返ってくる) [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がAI議事録サービスを運用する中で、Whisperの言語自動判定が引き起こす深刻な品質低下に直面した。誤判定が「文字化け」ではなく「自然な翻訳文」として出力されるため、ユーザーが誤りに気づきにくい点が最大の課題である。具体的には以下の問題が発生した。
- ・用語集(initial_prompt)の文字種が、音声の言語判定にバイアスを与え、英語会議を日本語に翻訳させてしまう。
- ・音声冒頭の無音や咳払いにより、言語がアラビア語やジャワ語など全く別の言語に誤判定される。
- ・長時間音声を20分ごとのチャンクに分割して処理する際、一部のチャンクが誤判定され、全体の文脈を破壊する。
// Approach
開発者は、言語判定の精度を高め、誤判定による実害を最小化するための多層的な防御策を実装した。単一の判定に依存せず、文脈と統計的妥当性を組み合わせたアプローチを採用している。
- ・プロンプトの文字種と音声言語の不一致を検知し、不適切なプロンプトを破棄するロジックを導入した。
- ・言語判定用のプローブ窓を60秒に拡大し、プロンプトなしで実行することで判定の安定性を確保した。
- ・全チャンクの判定結果から多数決を行い、外れ値のチャンクのみを正しい言語で再実行する仕組みを構築した。
- ・プロバイダ間の挙動差に対し、言語判定に基づいた句読点シードの注入を行うことで品質を安定させた。
// Result
実装により、誤判定による「自然な文章に見える誤った翻訳」を効果的に抑制することに成功した。特に、チャンクごとの多数決アルゴリズムは、追加コストを最小限に抑えつつ、高い代表性を確保している。
- ・多数決により、外れ値のチャンクのみを再実行するため、計算リソースの浪費を回避した。
- ・「日本語固定」を避ける設計により、多言語環境における「静かな破壊」を防ぎ、サービスの汎用性を維持した。
- ・今後は、話者ごとに言語が切り替わるバイリンガルな会議への対応が、次なる技術的課題として残っている。
Senior Engineer Insight
> Whisperの誤判定が「翻訳」として出力される点は、プロダクトの信頼性を根底から揺るがす極めて危険な挙動である。本記事の「多数決による外れ値再実行」は、追加コストを抑えつつ、既に取得済みのデータを利用して精度を担保する、非常に優れた実戦的設計である。また、言語固定を避け、動的な補正を選択した判断も、スケーラビリティの観点から高く評価できる。ただし、バイリンガルな会議への対応には、チャンク単位ではなくセグメント単位の判定が必要となり、さらなる計算コストとのトレードオフが求められるだろう。