AI Shorts System
概要
撮影動画や配信アーカイブなどからShorts動画を全自動生成するエンドツーエンドのAIパイプラインです。音声認識、カット割り、テロップや効果音の合成までを人間の手を介さずに完結させる、1400行を超えるPythonバックエンドシステムとして構築しました。
システムの特徴:3フェーズのプロンプト制御
本システムの最大の特徴は、Gemini APIに対して異なるペルソナを与え、タスクを3段階に分割して処理させている点です。
1. 構成作家AI (Phase 1)
動画全体の内容を解析し、Shortsとして成立する「話題の塊(セグメント)」を自動で抽出します。
2. 鬼の編集長AI (Phase 2)
Faster-Whisper(CUDA)を用いた高速な文字起こしデータ(タイムスタンプ付きの時間地図)を基に、無音部分を削りつつも、自然な「間」を残すミリ秒単位の精密なカット割りを指示します。
3. ビデオディレクターAI (Phase 3)
抽出されたセリフの感情や文脈に合わせて、テロップのフォント・色・アニメーション(振動、ズーム等)や、適切な効果音(SFX)の合成を指示します。
技術的工夫(バックエンド設計)
Pillow + NumPy によるレンダリングエンジンの実装
既存の動画編集ライブラリのテキスト生成機能に依存せず、Pillow(画像描画)とNumPy(行列演算)を用いてテキストレンダラを自作しました。
これにより、立体的な3Dシャドウやアウトライン(縁取り)エフェクトの描画を実現しています。さらに、三角関数(sin/cos)を用いた座標計算により、テキストのバウンスやパルスといったアニメーションを動的に生成する画像処理パイプラインを構築しました。
ffmpegの動的制御とマルチトラック音声ミキシング
動画の主音声、数十種類の効果音(SFX)、そしてBGMを適切な音量バランスでミキシングしています。
また、ffmpegの filter_complex をPython上で動的に組み上げることで、フレーム単位の精密なカットや、BGMのクロスフェード切り替え(滑らかな繋ぎ)を自動化しています。
メモリ・リソース管理
動画エンコード処理におけるメモリリークやストレージ圧迫を防ぐため、処理フローの終了時にすべてのクリップオブジェクトの明示的な解放(close())、一時生成された大量のWAV/MP4ファイルの一括削除、および gc.collect() によるガベージコレクションを行っています。これにより、連続稼働でもクラッシュしない設計を実現しています。
GPUエンコード制御の自動フォールバック
NVIDIA NVENC(h264_nvenc)を利用したハードウェア・アクセラレーションによる高速エンコードを実装しつつ、GPU側でエラーが発生した場合には即座にCPUエンコード(libx264)へフォールバックする耐障害性を組み込んでいます。