【Mac】ついに完全自動化!右クリック一つで20分以上の動画から高精度マルチモーダルVTT字幕を全自動生成する(無料アカウント対応)

1 はじめに 

前回の記事(ID-28762)では、Gemini(無料アカウント)の持つ「動画は5分以内」という制限をスマートに回避するため、Macのクイックアクションで動画を無音分割し、Gemに投げてVTT字幕を作成する手順をご紹介しました。

あの方法は無料かつマルチモーダルAIならではの高精度で字幕が作れる手法でしたが、唯一のネックは「手動バケツリレー」の多さでした。動画を分割し、個別にGemへドロップし、出力されたVTTをコピーし、秒ずらしを行い、最後に結合して連番を振り直す…… 「地味にコツコツ」な面白さはあるものの、動画が20分や30分と長くなると、やはり作業の手間が重くのしかかってきます。

そこで今回は、その前後の手作業をすべて裏側で連結し、「Finderから動画ファイルを右クリックするだけで、完全に結合・調整された1本のVTT字幕ファイルが自動でピコンと出来上がる」という、全自動連続パイプラインを開発しました 。これもある意味、自分専用の介助ロボット的ものづくり、でもあります。

無料アカウントのままで利用可能ですのでご安心ください。

2 なぜGeminiの文字起こしは、VrewやCapCutより優れているのか?

一般的に使われている文字起こしツールは、純粋に「音声だけ」を聴いて文字に起こす仕組みになっているようです。そのため、同音異義語や画面に映っている言葉と乖離した誤変換が起きやすく、後からの手直しが避けられません。

しかし、Gemini 1.5 Pro(またはFlash、今回制作したPythonの中ではgemini-3.6-flashを使っています。)などGeminiモデルの最大の特徴は~「目(映像解析)」と「耳(音声解析)」の両方を同時に使うマルチモーダル処理~が可能なことです。 動画内のスライド、背後のホワイトボードの文字、話している文脈をGeminiが総合的に理解して文字起こしを行うため、専門用語や固有名詞の変換精度が非常に高く、手直しの手間がとても少なくなります。

3 拡がる字幕情報の活用


さらに今回は、~「映像と音声から複数人の会話(対談やインタビュー)だと自動判断した場合のみ、字幕の先頭に [男性]: [女性]: などの話者ラベルを自動で付与する」~という命令(話者判別ロジック)をプロンプトに組み込みました。これにより、例えば、Notebookで2人の音声解説を作る→それをこのアプリでVTT形式で文字起こしする→それをそのままPodcastや音声ブログにする、あるいはさらに、そこから動画を生成することもできます。

4 サンプルとして「聴くブログ」の字幕の出来栄えをご確認ください。

今回のアプリで作成した、字幕一覧情報は以下の「聴くブログ」をクリックすると表示されます。音声と連動して表示される字幕を確認ください。サイドバーにも掲載しています。

Podcast imakat図書館

読み込み中…

この字幕情報の作り方ですが、Notebookで20分程度の音声解説を作り、それを今回のアプリで時刻付きの文字起こし、つまりVTTファイルとして作成しました。

なお、このテストでは、字幕作成の対象ファイルに、動画ではなくmp3音声ファイルを選んでいますが問題なく処理されています。

全自動作成後のVTTに対する修正箇所ですが、ロールバック機構→フォールバック機構、DR52.php→dr52.php、MyBox→mybox、 MyBox_1→mybox_1、の修正だけです。句読点もそのまま、時刻もそのままです。このサンプルは動画内に表示された文字を理解させるテストにはなっていませんが、それにしてもかなり高い精度です。

5 無料アカウントでも20分以上の動画がエラーなく処理できる秘密

Google AI Studio(API)の無料枠を利用する場合でも、長尺の動画は容量や処理限界の壁にぶつかります。 今回のパイプラインスクリプトは、以下の工程をすべて「Python」とMac標準ツールがバックグラウンドで全自動実行します。

(1)自動・無音分割(FFmpeg): 動画を読み込み、1.0秒以上の無音区間を自動で探し出し、キリの良いポイント(デフォルト4分30秒)で動画を再エンコードなし(一瞬)で自動分割。

(2)クリーンな並列API送信: 分割した各動画を、それぞれ毎回クリーンな別のAIセッションにアップロードして文字起こしを依頼(AIの脳内メモリの混線を100%防止)。

(3)自動クリーンアップ: 処理が終わった動画ファイルは、APIサーバー上から直ちに自動削除(サーバー容量を圧迫しません)。

(4)自動タイムシフト&マージ: 0秒リセットで返ってきた各字幕のタイムスタンプに、分割時のオフセット秒(ズレ)を自動で足し算して復元。

(5)通し連番の再編成: 結合された巨大なVTTデータを走査し、1から始まる綺麗な通し連番に一瞬で自動振り直し。

(6)デスクトップ通知: すべてが完了すると、Macの画面右上に「字幕作成が完了しました!」と通知が表示されます。

人間がやることは~「右クリックして待つだけ」~です。

6 実装手順

それでは、実装手順は以下です。

🛠️ 実装手順
(1)Geminiの「APIキー」を無料取得する
APIを利用するための「鍵」を入手します。
Google AI Studioの公式サイト( https://aistudio.google.com/ )にアクセスします。
画面左上の 「Get API key」 ボタンを押し、プロジェクト用のキー(無料)を作成してコピーします。

(2)MacにPython 3とFFmpegをインストールする
お使いのMacのターミナル(黒い画面)を開き、以下のコマンドが通る状態にしてください。 (※すでにHomebrewが導入されている環境を推奨します)
brew install ffmpeg
pip install google-genai

(3) スクリプトの保存
1)Python

以下の青ボタンからPythonコードをダウンロードまたはコピーし、プログラム内の `API_KEY` の部分にご自身のAPIキーを貼り付けた上で、Macの適当なフォルダ(例: `/Users/(あなたのユーザー名)/python_scripts/` )に **`multimodal_vtt_pipeline.py`** という名前で保存します。

2)AppleScript
同じく以下の青ボタンからAppleScriptコードをダウンロードまたはコピーして、
①Mac標準の 「Automator」 アプリを起動し、新規作成から 「クイックアクション」 を選択します。
②画面最上部の設定を以下のように設定します。
「ワークフローの受け取る項目:」 ➔ 「ファイルまたはフォルダ」
「検索対象:」 ➔ 「Finder.app」

③左側のアクション一覧から 「AppleScriptを実行」 を探し、右側のワークフローエリアにドラッグ&ドロップします。
④AppleScriptのコード入力欄に、ダウンロードしたコードを貼り付けます。 (※保存したPythonスクリプトのパスやPython実行環境のパスは、ご自身の環境に合わせて適切に書き換えてください)
⑤名前(全自動VTT字幕作成)をつけて保存します。
内容に関するお問い合わせは以下へ↓

7 運用上の注意

(1)ターミナルが起動するようにしてあります。

私は有料AI Proですが、それでも使用制限は結構な頻度で生じます。エラーやトラブルも時々生じます。そうした異常が生じた時、ターミナルに表示された文字列をコピーして、GeminiやGemなどの生成AIに貼り付けて、その末尾を改行してその下に「エラーが生じました。対策を教えてください。」と書いて、送信することになります。
その時に、logを調べてそれをターミナルにコピペする方法もありますが、分かりにくく一手間余分に掛かりますので、ターミナルを常に表示されるようにしておくのが、私は安心に感じています。

ターミナルの表示例

(2)GeminiやGemなど生成AIはすぐに使えるようにしておく

ブラウザのブックマークや専用アプリなどを用意して、それがすぐに使えるようにしておきましょう。エラーやトラブルの時、すぐにターミナルのコピペができるようにしておきましょう。

以上