WhisperはOpenAIが公開している高精度な音声認識モデルで、動画や音声ファイルからテキストを自動生成できます。
本記事では YouTube動画のダウンロード → Whisperで文字起こし → 要約 の一連の流れをPythonで解説します。
Whisperの処理結果は、字幕作成・要約記事・配信ログの整理などに活用できます。
注意事項
- ダウンロードや文字起こしは 個人利用・研究用途に限定 してください。
- 著作権者の許可なく動画・音声・字幕を再配布することは禁止されています。
- YouTube利用規約に反する使い方は行わないでください。
前提条件(事前準備)
Whisperを使う前に以下の準備が必要です。
- Python 3.10 以上
- ffmpeg(インストールとPATH設定(Windows)
- yt-dlp(動画・音声・字幕を保存する方法【Python/CLI・実行例付き】)
Whisperのインストール
pip install -U openai-whisper
GPUが使える環境(CUDA)があると処理が速くなりますが、CPUでも動作します。
1. 動画ファイルを読み込んで文字起こし
yt-dlpでMP4として保存したファイルをそのまま処理できます。
import whisper
# Whisperモデルの読み込み
model = whisper.load_model("small")
# 動画ファイルを指定
VIDEO_PATH = r"D:\youtube_downloads\動画タイトル.mp4"
# 文字起こし
result = model.transcribe(VIDEO_PATH, language="ja")
print("=== Transcribed Text ===")
print(result["text"][:500]) # 最初の500文字を表示
2. 音声ファイルを読み込んで文字起こし
yt-dlpでWAV形式に変換保存した場合はこちらを利用します。
import whisper
model = whisper.load_model("small")
# 音声ファイルを指定
AUDIO_PATH = r"D:\youtube_downloads\動画タイトル.wav"
result = model.transcribe(AUDIO_PATH, language="ja")
print("=== Transcribed Text ===")
print(result["text"][:500])
動画でも音声でも呼び出し方法は同じですが、処理速度は音声ファイル(WAV/MP3)の方が軽く済みます。
3. 要約の例(日本語テキストを短くまとめる)
Whisperの出力をそのまま使うと長文になるため、要約処理を組み合わせると便利です。以下はOpenAI APIを使ったシンプルな要約例です。
from openai import OpenAI
# 環境変数 OPENAI_API_KEY を設定しておく
client = OpenAI()
transcribed_text = result["text"]
# ChatGPTで要約
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "以下の日本語テキストを3〜5行で要約してください。"},
{"role": "user", "content": transcribed_text}
]
)
print("=== Summary ===")
print(response.choices[0].message.content)
実行結果(例)
=== Transcribed Text ===
その胸に刻めパワーエ…はい、ということで今日もリアルイベント空ボズ…
[以下省略]
=== Summary ===
・イベントの締めに代表曲を披露
・観客との掛け合いが盛り上がりを見せた
・感謝と次回の予告で締めくくられた
よくあるエラーと対処法
- ffmpegが見つからない → PATH設定を再確認
- CUDA関連エラー → GPU非対応環境では "small" や "base" モデルを利用
- 日本語がうまく認識されない →
language="ja"
を必ず指定