OpenAI Whisperを使いましょう
Python のインストール
FFmpeg のインストール
以下サイトから Windows 用ビルドを ZIP 形式でダウンロード
ZIP を適当なフォルダ(例: C:\tools\ffmpeg)に展開
システム環境変数 PATH に C:\tools\ffmpeg\bin を追加
# PATH 追加後、PowerShell を再起動して確認 ffmpeg -version # → バージョン情報が表示されれば OK
CUDA 11.8 が動作するかどうか確認
powershell
nvidia-smi
CUDA Version: の項目を確認する

PyTorch(+CUDA)と Whisper のインストール
CPUのみ
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
CUDA 11.8対応 GPU がある場合
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
その後、Whisper をインストール
pip install --upgrade pip pip install git+https://github.com/openai/whisper.git
文字起こしするpyファイル作成
generate_subtitles.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import whisper
import argparse
import os
def format_timestamp(seconds: float) -> str:
"""SRT 用のタイムスタンプに変換 (hh:mm:ss,mmm)"""
hours = int(seconds // 3600)
minutes = int((seconds % 3600) // 60)
secs = int(seconds % 60)
milliseconds = int((seconds - int(seconds)) * 1000)
return f"{hours:02}:{minutes:02}:{secs:02},{milliseconds:03}"
def write_srt(segments: list, filepath: str):
"""Whisper の出力 segments から SRT ファイルを生成"""
with open(filepath, 'w', encoding='utf-8') as f:
for idx, seg in enumerate(segments, start=1):
start = format_timestamp(seg['start'])
end = format_timestamp(seg['end'])
text = seg['text'].strip()
f.write(f"{idx}\n{start} --> {end}\n{text}\n\n")
def main():
parser = argparse.ArgumentParser(
description="Whisperで動画から日本語字幕(.srt)を自動生成するツール"
)
parser.add_argument("input", help="入力動画ファイル (.mp4/.mkv/.avi 等)")
parser.add_argument(
"-m", "--model", default="small",
help="Whisperモデル名: tiny, base, small, medium, large (デフォルト: small)"
)
parser.add_argument(
"-o", "--output",
help="出力 SRT ファイル名 (デフォルト: 入力ファイル名ベースで .srt)"
)
args = parser.parse_args()
inp = args.input
out = args.output or os.path.splitext(inp)[0] + ".srt"
print(f"[1/3] モデル「{args.model}」をロードしています…")
model = whisper.load_model(args.model)
print(f"[2/3] 「{inp}」を文字起こし中… (言語: 日本語)")
result = model.transcribe(inp, language="ja")
print(f"[3/3] SRT を書き出しています: {out}")
write_srt(result["segments"], out)
print("✅ 完了しました!")
if __name__ == "__main__":
main()
文字起こしする
python generate_subtitles.py <文字起こししたいmp4ファイル>
.srtファイルが作成されます