Whisperの使い方 — 音声を文字起こしてSRT字幕を生成する【第4回】

subaru · ·

WhisperはOpenAIが公開している音声認識モデルで、日本語を含む多言語に対応している。ローカルで動くため、APIキーが不要でコストがかからない。

Whisperでできること

  • 音声・動画ファイルから発言内容をテキスト化する
  • SRT・VTT・JSON形式で字幕ファイルを出力する
  • 発言のタイムスタンプを付与する
  • 多言語の自動識別(または言語指定)

インストール

pip3 install openai-whisper

初回実行時にモデルファイルが ~/.cache/whisper/ にダウンロードされる。

モデルの選び方

モデルサイズ日本語精度処理速度
tiny75MB非常に速い
base145MB速い
small465MB中高普通
medium1.5GB遅い
turbo1.5GB普通
large-v33GB最高非常に遅い

日本語コンテンツには 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を使ったジェットカット自動化を解説する。