smacke/ffsubsync

Automagically synchronize subtitles with video.

解決する課題

FFsubsyncは、字幕をビデオまたはオーディオファイルと自動的に同期させ、字幕が正しい開始地点に表示され、話されている対話と一致するようにする、言語に依存しないツールです。

仕組み

このツールは、字幕とオーディオを整列させるために3段階のプロセスを使用します:

  1. 離散化: オーディオストリームと字幕の両方を10msのウィンドウに分割します。
  2. 音声検出: 各ウィンドウに音声が存在するかどうかを判断します。字幕については、字幕がアクティブであるかどうかに基づいて判断し、オーディオについては、WebRTCやSilero VADなどの音声活動検出器(VAD)を使用します。
  3. 整列: 音声パターンをバイナリ文字列として扱い、高速フーリエ変換(FFT)を使用してそれらを整列させ、最適なスコアのオフセットを効率的に見つけ出します。これにより、計算量は O(n^2) から O(n log n) に削減されます。

対象ユーザー

コンテンツの言語に関係なく、ビデオファイルと字幕の同期がずれているユーザーや、字幕ファイルのバルク同期を行う必要があるユーザーに適しています。

ハイライト

  • 柔軟なリファレンス: ビデオ/オーディオファイル、または正しく同期された別の字幕ファイルに対して同期します。
  • ブラウザベースのバージョン: ffmpeg.wasmを使用したクライアントサイドの同期ツールを提供するため、ファイルがユーザーのコンピュータから離れることはありません。
  • 堅牢なエンコーディング: クラッシュを防ぐために、レガシーな文字エンコーディング(例:Windows-1251、GBK)を自動的に検出します。
  • 高度な同期オプション: 広告による中断のようなファイル中盤の区切りを処理するための、実験的な分割整列モード(--split-penalty)が含まれています。
  • 統合: コマンドラインツール、Dockerイメージ、またはPythonライブラリとして使用できます。
  • Whisper統合: 既存の字幕がないビデオの参照として、Whisper.cppのトランスクリプトを使用することをサポートしています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト