Whisperの使い方 — 音声を文字起こしてSRT字幕を生成する【第4回】
WhisperはOpenAIが公開している音声認識モデルで、日本語を含む多言語に対応している。ローカルで動くため、APIキーが不要でコストがかからない。
Whisperでできること
- 音声・動画ファイルから発言内容をテキスト化する
- SRT・VTT・JSON形式で字幕ファイルを出力する
- 発言のタイムスタンプを付与する
- 多言語の自動識別(または言語指定)
インストール
pip3 install openai-whisper
初回実行時にモデルファイルが ~/.cache/whisper/ にダウンロードされる。
モデルの選び方
| モデル | サイズ | 日本語精度 | 処理速度 |
|---|---|---|---|
| tiny | 75MB | 低 | 非常に速い |
| base | 145MB | 中 | 速い |
| small | 465MB | 中高 | 普通 |
| medium | 1.5GB | 高 | 遅い |
| turbo | 1.5GB | 高 | 普通 |
| large-v3 | 3GB | 最高 | 非常に遅い |
日本語コンテンツには turbo が最初の選択肢として適している。精度と速度のバランスが良く、1時間素材を15〜25分で処理できる。
議事録など高精度が必要な場合は large-v3 を使う。
基本的な使い方
whisper input.mp4 --language Japanese --model turbo
これだけで同じディレクトリに以下のファイルが生成される。
input.txt— テキストのみinput.srt— SRT形式の字幕input.vtt— VTT形式の字幕input.json— 詳細なタイムスタンプ付きJSON
出力先を指定する
whisper input.mp4 --language Japanese --model turbo --output_dir ./output/
出力形式を指定する
# SRTのみ出力
whisper input.mp4 --language Japanese --model turbo --output_format srt
音声ファイルでも動く
動画ファイルだけでなく、MP3・WAV・M4Aなども処理できる。
whisper recording.mp3 --language Japanese --model turbo
SRTファイルの構造
Whisperが生成するSRTファイルはこのような形式。
1
00:00:00,000 --> 00:00:03,500
今日はAI業務自動化について話します。
2
00:00:03,500 --> 00:00:07,200
まず最初に、現状の課題を整理しましょう。
- 連番
- 開始時間 —> 終了時間(ミリ秒単位)
- 字幕テキスト
このSRTファイルをffmpegに渡すと動画に字幕を焼き込める。
ユースケース別の使い方
ユーチューブ字幕の自動生成
whisper video.mp4 --language Japanese --model turbo --output_format srt --output_dir ./
生成されたSRTをffmpegで焼き込むか、YouTubeにアップロード時に字幕ファイルとして添付する。
議事録の自動作成
whisper meeting.mp3 --language Japanese --model large-v3 --output_format txt
テキストファイルを Claude や GPT に渡して要約・議事録化する。
# Claude APIと組み合わせる例(Claude Codeに書かせる)
「meeting.txt を読み込んで、決定事項・TODO・次のアクションを箇条書きで整理するPythonスクリプトを書いて」
バッチ処理(複数ファイルを一括処理)
for f in ./videos/*.mp4; do
whisper "$f" --language Japanese --model turbo --output_format srt --output_dir ./subtitles/
done
または Python スクリプトで処理する。
import whisper
import os
model = whisper.load_model("turbo")
for filename in os.listdir("./videos"):
if filename.endswith(".mp4"):
result = model.transcribe(f"./videos/{filename}", language="ja")
# SRTファイルとして保存する処理
精度を上げるポイント
収録環境
- 外付けマイクを使う(内蔵マイクは背景ノイズを拾いやすい)
- 静かな環境で録る
- 一文一文区切って話す
専門用語の補正
Whisperは一般的な日本語には強いが、固有名詞や専門用語を誤認識することがある。
生成されたSRTを確認して、よく間違える単語をリストアップしておくと補正しやすい。
Claude Codeに「このSRTファイルの中で “Dify” を “Dify”、“n8n” を “n8n” に修正して」と指示するだけで一括置換できる。
GPU(Apple Silicon)で高速化する
Macの場合、MPS(Metal Performance Shaders)を使うとCPUより高速に処理できる。
import whisper
import torch
model = whisper.load_model("turbo")
result = model.transcribe("input.mp4", language="ja", fp16=False)
環境によって自動でGPUが使われる場合もある。
Claude Codeへの指示例
「以下の処理をするPythonスクリプトを書いて実行してください:
1. ./videos/ ディレクトリ内の .mp4 ファイルを全て取得する
2. Whisper turbo モデルで日本語として文字起こしする
3. SRT ファイルを ./subtitles/ ディレクトリに保存する
4. 処理完了したファイル名をコンソールに出力する」
まとめ
Whisperを使えば音声の文字起こしとSRT字幕生成が完全自動化できる。精度は収録環境に大きく依存するので、収録段階からノイズを減らすことが効果的だ。
次回はauto-editorを使ったジェットカット自動化を解説する。
- 1. 動画編集の全体像と工程を理解する — Claude Code自動化の前に知っておくこと【第1回】
- 2. 環境構築 — ffmpeg・Whisper・auto-editorをMacにインストールする【第2回】
- 3. ffmpegの使い方 — 動画処理の基本コマンドをまとめる【第3回】
- 4. Whisperの使い方 — 音声を文字起こしてSRT字幕を生成する【第4回】
- 5. auto-editorの使い方 — 無音区間を自動カットしてジェットカットを実現する【第5回】
- 6. Claude Codeで全工程を自動化する — プロンプト設計とスクリプト統合【第6回】