はじめに
前回の記事では、動画編集を自動化するためのツール「FFmpeg」と「moviepy v1.0.3」を準備しましたね。今回は、いよいよPythonスクリプト(プログラムのコード)を使って、動画の不要な「間」を自動的にカットする方法を解説します。
この方法では、動画の字幕ファイル(SRT形式)を基準にして、「字幕が表示されていない時間=不要な間」と判断し、その部分をカットしていきます。AIによる複雑な分析は行いませんが、シンプルで確実に「間」を詰めることができるため、特に無音部分が多い動画の編集時間を大幅に短縮できます。
全体ワークフロー:自動化と最終調整の流れ
今回紹介するワークフローは、以下のステップで進めます。
- ステップ1:Pythonで無音ギャップを自動カット:まず、Pythonスクリプトを使って、SRT字幕ファイル基準で動画の明らかな無音部分(ギャップ)を自動的にカットします。これにより、大まかな「間」が詰まります。
- ステップ2:SRT再生成でタイムスタンプを正確に:無音カット後の動画から、改めてSRT字幕ファイルを生成します。これにより、後のAI分析や編集作業で使うタイムスタンプが、カット後の動画と正確に一致します。
- ステップ3:AIでカット候補を自動分析:AI(Google AI Studio)に、カット後の動画(の音声)と新しいSRTファイルを分析させ、フィラーワード、言い直し、不自然な間などの「カット・調整候補」をリストアップした「指摘SRT」を生成させます。
- ステップ4:「指摘SRT」で最終チェック・編集:AIが生成した「指摘SRT」を参考に、ユーザー自身が動画編集ソフトなどで最終的な確認と微調整を行います。AIの提案はあくまで補助であり、最終判断はユーザーが行います。
この流れにより、単純作業は自動化し、人間は文脈判断や最終的な仕上げに集中できるようになります。
ステップ1:Pythonで無音ギャップを自動カット
まずは、動画の明らかな無音部分をカットして、全体の時間を短縮しましょう。
準備するもの
- 編集したい元の動画ファイル:(例:input.mp4)
- 動画に対応する元のSRTファイル:元の動画の音声を文字起こししたもの。CapCutなどで生成したものでOKです。
- Python実行環境:
- FFmpeg と moviepy v1.0.3 がインストール済みであること。(詳細は「Pythonで動画編集を自動化!FFmpegとmoviepyの環境構築完全ガイド」の記事を参照)
- 作業用フォルダと仮想環境が準備されていること(例:CドライブのMoviePy_Project フォルダと .venv)。
- ファイルの配置:重要:動画ファイル、SRTファイル、そして次のステップで用意するPythonスクリプトファイルは、すべて同じ作業用フォルダに入れてください。
スクリプトの入手と設定
- スクリプトの入手:無音ギャップをカットするためのPythonスクリプトは、以下のGoogleドキュメントにあります。
動画カット支援セット(Googleドキュメント) - スクリプトファイル作成と保存:作業用フォルダ内に新しいテキストファイルを作成し、auto_cut_script.py という名前で保存します。上記リンクからスクリプト全文をコピーし、作成したファイルに貼り付けて保存します。
- 設定項目の調整:保存した auto_cut_script.py を開き、冒頭の --- 設定項目 --- 部分を編集します。これらの設定値の詳細は、スクリプト内のコメントや、Googleドキュメント内の解説を参照してください。
- VIDEO_FILE_PATH:編集したい動画ファイル名(例:"input.mp4")
- SRT_FILE_PATH:元のSRTファイル名(例:"input.srt")
- OUTPUT_FILE_PATH:無音カット後の動画ファイル名(例:"output.mp4")
- VOLUME_MULTIPLIER:音量調整(必要なら 1.0 以外に設定)
- SHIFT_FRAMES:SRTタイミング補正(必要なら調整)
- ノイズ対策選択:CLIP_END_SHORTEN_SEC か CLIP_START・END_EXTEND_FRAMES のどちらかを設定(推奨:最初は CLIP_END_SHORTEN_SEC = 0.1 など)
- AUDIO_CROSSFADE_DURATION:音声クロスフェード時間(推奨:0.01 など)
- AUDIO_QUALITY_MODE:音声品質('standard'、'high_aac'、'uncompressed' から選択)
- AUTO_RENAME_OUTPUT:出力ファイル名に設定を付与するか(True推奨)
実行と確認
- 仮想環境を有効化:PowerShellで作業フォルダに移動し、
.\.venv\Scripts\activate.ps1
を実行。 - スクリプト実行:
python auto_cut_script.py
を実行。 - 処理待機:処理完了まで待ちます。
- 出力確認:生成された動画ファイル(例:output.mp4)を再生し、無音部分がカットされているか、カット境界の音声に問題がないか確認します。問題があれば設定を調整して再実行します。
ステップ2:SRT再生成でタイムスタンプを正確に
ステップ1で無音部分が大まかにカットされた動画ができました。次に、このカット後の動画に対して、改めてSRT字幕ファイルを生成します。
なぜ再生成が必要か?
無音カットによって動画の時間が変化したため、元のSRTファイルのタイムスタンプはカット後の動画とはズレてしまいます。後のAI分析や編集作業で正確な時間情報を使うために、カット後の動画に合わせてSRTを生成し直す必要があります。
ツールの選択と手順
SRTファイルの生成には、以下のようなツールが利用できます。
- CapCutなどの動画編集アプリ・ソフト:自動文字起こし機能でSRTを生成・エクスポートできます。
- Whisper:OpenAIが開発した高精度な音声認識モデル。ローカル環境で実行するか、APIを利用します。
- Vrew:AI音声認識を活用した無料の動画編集ソフト。動画を読み込ませて文字起こし機能を使います。
使い慣れたツールで構いません。ステップ1で生成された動画ファイル(例:output.mp4)をツールに読み込ませ、文字起こしを実行し、結果をSRTファイルとしてエクスポートしてください。
ステップ3:AIでカット候補を自動分析
無音カット後の動画と、それに対応する新しいSRTファイルが準備できました。次に、AI(Google AI Studio)を使って、残っている不要部分(フィラーワード、言い直しなど)の候補を分析・指摘させます。
目的とツール
- 目的:AIに音声とSRTを分析させ、「えー」「あのー」といったフィラーワード、明らかな言い直し、不自然な間、ノイズなどを検出し、その時間と理由をリストアップした「指摘SRT」を生成させる。これは編集作業のガイドとして使用します。
- ツール:Google AI Studio (https://aistudio.google.com/) を使用します。Googleアカウントがあれば無料で利用開始できます。
AI指示文(プロンプト)の入手と概要
AIに的確な分析を行わせるためには、詳細な指示(プロンプト)が必要です。
- 指示文の入手:AIへの指示文(System Instructions用)は、以下のGoogleドキュメントにまとめてあります。
動画カット支援セット(Googleドキュメント) - 指示文の概要:この指示文は、AIに対して以下のようにお願いする内容になっています。
- 入力:音声ファイル(ステップ1の出力動画から抽出したもの、または動画ファイルそのもの)と、SRTファイル(ステップ2で再生成したもの)の内容。
- 処理:音声分析(フィラー検出、無音検出、ノイズ検出など)とSRTの文脈を考慮し、カット候補または調整候補となる区間を特定する。
- 出力:「指摘SRT」形式で、候補区間のタイムスタンプと、なぜ候補なのかを分かりやすい日本語で説明したテキストを出力する。
実行と「指摘SRT」の見方
- Google AI Studioを開く:上記リンクからアクセスし、「Create new prompt」などを選択します。
- System Instructions設定:入手した指示文を「System Instructions」欄に貼り付けます。
- 入力データ設定:
- AI Studioのインターフェースに従い、音声ファイル(または動画ファイル)をアップロードします。
- プロンプト入力欄に、ステップ2で生成したSRTファイル(例:silent_cut_video.srt)の内容全体を貼り付けます。
- 実行:「Run」ボタンを押してAIの分析を開始します。
- 出力確認:AIが処理を終えると、「指摘SRT」が生成されます。
- 指摘SRTの例(プレーンテキスト表示):AIは以下のような内容のSRTファイルを出力します。
1 00:00:05,123 --> 00:00:05,890
フィラー「えーっと」が検出されました。(カット候補)
2 00:00:12,450 --> 00:00:13,900
「重要なのは」というフレーズが繰り返されています。(カット候補)
3 00:00:25,600 --> 00:00:26,100
約0.5秒の短い無音区間です。文脈を確認してください。(調整候補)
4 00:00:31,050 --> 00:00:31,550
咳払いのノイズが検出されました。(カット候補)
このように、どの時間帯に、どのような理由でカットまたは調整の候補となっているかが分かります。
- 指摘SRTの例(プレーンテキスト表示):AIは以下のような内容のSRTファイルを出力します。
ステップ4:「指摘SRT」で最終チェック・編集
AIが生成した「指摘SRT」は、あくまで編集の「ガイド」です。AIの判断が常に正しいとは限りませんし、文脈によっては残すべき間や言い淀みもあります。最終的な判断は必ずユーザー自身が行いましょう。
活用方法
- 動画編集ソフトで確認:多くの動画編集ソフト(DaVinci Resolve、Premiere Pro、Final Cut Proなど)はSRTファイルを読み込めます。ステップ1で生成した無音カット済み動画(例:output.mp4)と、ステップ3で生成した「指摘SRT」をタイムラインに配置します。すると、動画のどの部分にカット・調整候補があるか視覚的に確認でき、非常に効率的にチェックできます。
- テキストエディタで確認:指摘SRTファイルをテキストエディタで開き、タイムスタンプと説明を読みながら、元の動画の該当箇所を確認します。
- 外注時の指示として:動画編集を外注する場合、この「指摘SRT」を編集指示の一部として提供することで、具体的な編集箇所を伝えやすくなります。
最終編集
指摘SRTを参考に、動画編集ソフト上で不要な部分を最終的にカットしたり、間の長さを微調整したりします。AIの提案を鵜呑みにせず、会話の流れやテンポを確認しながら、最適な編集を目指しましょう。
まとめ:自動化と手動調整のベストミックスを目指そう
今回は、Pythonスクリプトによる無音カットと、AIによるカット候補分析を組み合わせた、動画編集の効率化ワークフローを紹介しました。
- ステップ1:Pythonスクリプトで無音ギャップを自動カット。
- ステップ2:カット後の動画からSRTを再生成。
- ステップ3:AIでフィラーや言い直し等の候補を分析し「指摘SRT」を生成。
- ステップ4:「指摘SRT」を参考にユーザーが最終確認・編集。
この方法により、単純な「間」詰め作業は自動化し、フィラーワードや言い直しといった判断が必要な箇所の特定はAIが支援し、最終的な品質担保はユーザーが行う、という効率的かつ確実な編集フローが実現できます。
AIの分析精度はまだ完璧ではありませんが、編集作業の「叩き台」や「見落とし防止」としては十分に役立ちます。ぜひこのワークフローを試して、あなたの動画制作をより快適なものにしてください!