【Python】Whisper × Gemini 3 Flashで「動画字幕ツール」を自作する技術解説

開発・プログラミング

【Python】Whisper × Gemini 3 Flashで「動画字幕ツール」を自作する技術解説

広告


Dev Tutorial
Whisper × Gemini 3 Flash
最強の字幕生成フローを構築する

「文字起こしはWhisper、整形はGemini」
それぞれの強みを活かしたハイブリッド構成で、動画編集のテロップ作業を自動化するPythonツールの実装ロジックを完全解説します。

Stable WhisperGemini 3 FlashPillow & FFmpeg


1. 今回作成するツールの概要とメリット

動画編集において最も手間がかかる「テロップ作成」。これを完全に自動化するために、今回は以下の技術を組み合わせたPythonツールを開発しました。

  • 文字起こし: Stable Whisper (OpenAI Whisperの改良版)
  • 文章校正・整形: Gemini 3 Flash (Googleの最新AIモデル)
  • 字幕動画生成: Pillow + FFmpeg

なぜこの構成なのか?
単純なWhisperだけでは「えー、あー」といったフィラーが残ったり、句読点が不自然だったりします。そこで、文字起こし特化のWhisperで正確に音声を拾い、そのテキストデータをGemini 3 Flashの高い推論能力で「自然な字幕」にリライトさせるアプローチをとります。

2. 必要な準備(環境構築・インストール)

本ツールはPython 3.10または3.11での動作を推奨しています。以下のライブラリを使用します。

  • stable-ts: タイムスタンプ精度が高いWhisperの実装
  • google-genai: Google Gemini APIを利用するためのSDK
  • Pillow: 字幕画像の描画に使用
  • Janome: 日本語の形態素解析(重要語句の色付け用)

まず、FFmpegをシステムにインストールし、パスを通してください。その後、Pythonライブラリをインストールします。

pip install stable-ts google-genai Pillow janome torch torchaudio

※GPUを使用する場合は、PyTorchをCUDA対応版にする必要があります。

3. 実装解説1:Stable Whisperによる高精度文字起こし

通常のWhisperではなく stable-ts を採用する理由は、字幕生成に不可欠な「単語ごとのタイムスタンプ」の精度が非常に高いためです。

scripts/runners/transcriber.py の実装を見てみましょう。

import stable_whisper

model = stable_whisper.load_model("large-v3-turbo", device="cuda")
result = model.transcribe(
    audio_data,
    regroup=True,
    vad=True
)

ここでは large-v3-turbo モデルを使用しています。これにより、高速かつ高精度な日本語認識が可能になります。取得した結果はSRT形式にフォーマットして保存します。

4. 実装解説2:Gemini 3 FlashによるSRT整形

生成されたSRTファイルは、AI特有の誤字や不自然な改行を含んでいます。これを修正するために Gemini 3 Flash (gemini-3-flash-preview) を使用します。

ここでのポイントは、「SRTのタイムスタンプ構造を壊さずにテキストだけを修正させる」ことです。prompts/refine_srt_prompt.txt に定義したプロンプトで、以下のルールを徹底させます。

  • 誤字(同音異義語)の修正
  • フィラーの削除
  • 文節を考慮した自然な改行
  • タイムスタンプの維持(絶対条件)

また、長い動画を一度に処理するとAIがコンテキストを見失うため、30〜50ブロックごとに分割して処理する「チャンク処理」を実装しています。

5. 実装解説3:PillowとFFmpegで透過字幕生成

最後に、整形されたSRTを元に、背景透過の動画ファイル(MOV)を生成します。重い動画編集ライブラリを使わず、画像処理ライブラリ PillowFFmpeg コマンドを直接叩くことで軽量化しています。

処理の流れ:

  1. Pillow で1枚ずつ字幕画像(PNG)を生成
  2. Janome で形態素解析し、名詞や動詞などの重要語句を強調色で描画
  3. FFmpeg を使い、各画像をフェードイン・アウト付きの動画クリップに変換
  4. 全クリップを結合して1本のMOVファイルにする

これにより、DaVinci ResolveやPremiere Proのタイムラインに置くだけで使える、ハイクオリティな字幕素材が完成します。

6. まとめ

Whisperの「聴く力」とGemini 3の「整える力」、そしてPythonの「自動化力」。これらを組み合わせることで、実用レベルの字幕ツールを自作することが可能です。

特に最新の Gemini 3 Flash は処理が高速で、こうしたパイプライン処理のバックエンドとして最適です。ぜひ皆さんも、自分だけの業務効率化ツールを開発してみてください。


【免責事項】本記事は、AI技術を用いて作成された部分を含みます。公開時点の情報に基づいていますが、AIの仕様変更やサービスの更新により、内容が現状と異なる場合があります。最新の情報は公式サイト等でご確認ください。
  • この記事を書いた人
  • 最新記事

運営者:OKIHIRO

Gemini API × Python のスペシャリスト。 AI技術でWeb制作とブログ運営を完全自動化するエンジニア。 理論だけでなく、実際に動くコードとシステム設計で、クリエイターの時間を「単純作業」から解放する。 最先端AIの実装ノウハウを、どこよりも分かりやすく発信中。

-開発・プログラミング
-, , , ,