「会議の録音」「YouTube用の字幕」「インタビュー音声」「講義の録画」――こういった素材を高精度に文字起こしできると、仕事も副業も一気に加速します🚀✨
本記事では、OpenAIの音声認識モデル Whisper をPythonでローカル実行し、実務で困らないレベルまで徹底的に解説します💪🔥
Whisperは「Python+仮想環境+ffmpeg」まで整えると一気にラクになります😊
環境構築に詰まりやすい人は、Pythonの基礎〜実行環境の整え方がまとまった1冊があると時短です⏱️✨
👉(Python入門本〜Whisper構築本)リンクリンク
Whisperは、音声からテキストへ変換するASR(自動音声認識)モデルです🎙️➡️📝
特徴は次のとおりです👇
Whisperの公式CLIとPython利用例は、OpenAI公式リポジトリでも案内されています📌
次を「できる状態」にします👇
Whisper(openai/whisper)を使う場合の基本要件は👇
※ openai/whisper は ffmpegが必須です(公式READMEに明記)
プロジェクトごとに環境を分けると事故が減ります✅
py -3.10 -m venv .venv
.\.venv\Scripts\activate
python -m pip install -U pip
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
openai/whisper は ffmpegコマンドが必要です
インストール後は ffmpeg -version が通るか確認します✅
choco install ffmpeg
ffmpeg -version
(公式READMEでもChocolatey/Scoop例が載っています)
scoop install ffmpeg
ffmpeg -version
Scoopでの導入例は複数の手順資料でも紹介されています
brew install ffmpeg
ffmpeg -version
こちらも公式READMEに記載があります
sudo apt update && sudo apt install -y ffmpeg
ffmpeg -version
公式READMEに手順があります
pip install -U openai-whisper
(公式の導入コマンド)
pip install git+https://github.com/openai/whisper.git
(公式READMEに記載)
whisper sample.mp3 --model small
whisper japanese.wav --language Japanese
(言語指定の例は公式READMEに掲載)
whisper japanese.wav --model medium --language Japanese --task translate
※ turbo は translate 指定でも元言語を返す注意点が公式にあります
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
(公式READMEのPython例)
Whisperには複数モデルがあり、用途で選ぶのが最短です🧠
公式READMEには、サイズ別の目安(必要VRAM/相対速度)が表で整理されています
small(そこそこ速い&そこそこ賢い)🙂medium(精度寄り)🎯large / large-v3(重いが強い)🏋️turbo(高速寄り)⚡️(large-v3最適化系の位置づけ)import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else "CPU")
WhisperのCLIは、字幕ファイル生成が得意です✨
例(複数形式をまとめて出す)👇
whisper input.mp4 --model small --output_format srt --output_dir out
whisper input.mp4 --model small --output_format vtt --output_dir out
「毎回手入力」は絶対に続きません😇
フォルダ内を一括処理できるスクリプト例です👇
from pathlib import Path
import subprocess
INPUT_DIR = Path("input")
OUT_DIR = Path("out")
OUT_DIR.mkdir(exist_ok=True)
model = "small"
targets = []
for ext in ("*.mp3", "*.wav", "*.m4a", "*.mp4", "*.mov"):
targets += list(INPUT_DIR.glob(ext))
for p in targets:
print(f"✅ transcribing: {p.name}")
subprocess.run([
"whisper", str(p),
"--model", model,
"--language", "Japanese",
"--output_dir", str(OUT_DIR),
"--output_format", "txt"
], check=True)
速度やメモリ効率を求めるなら、faster-whisperが超定番です⚡️
公式READMEでは「同等精度で最大4倍高速・省メモリ」「量子化(int8)でさらに効率化」と説明されています
会議議事録や対談編集だと、ここが欲しくなります👇
その用途なら WhisperX が強いです💪
READMEには「word-level timestamps」「speaker diarization」「高速(large-v2で70x realtime)」などの特徴がまとめられています
ffmpeg が見つからない(Windowsで多発)🪟ffmpeg -version が通るか確認✅tiktoken / Rust関連で失敗する🦀Whisperは環境によってRustが必要になる場合があります(公式READMEに案内あり)
その場合はRust導入 or setuptools-rust を入れる手順が提示されています
torch.cuda.is_available())✅ローカル実行(openai/whisper)は、モデルをダウンロードして自分のPCで動かす方式なので、基本的に利用料は発生しません(ただし電気代・PCスペックは必要です⚡️)。モデルとコードはMITライセンスで公開されています
まずは 言語指定(--language Japanese) を試すのが効果的です🧠
さらに、精度重視なら medium 以上に上げると改善しやすいです📈
できます✅ ただし openai/whisper は内部で音声抽出に ffmpeg を使うため、ffmpegが必須です
CPUだけでも動きます🙂 ただし長尺だと時間がかかるので、速度重視なら small を起点にすると続けやすいです⌛️✨
Whisper単体だと話者分離は標準機能ではありません。
必要なら WhisperX のような拡張ツールで「話者ラベル」まで扱う方法が定番です
速度最優先なら faster-whisper が強いです🚀
「最大4倍高速・省メモリ・量子化対応」と説明されています
イラスト1枚から、テクスチャ付…