Whisperで音声認識をローカル実行する方法(GeForce RTX活用・完全ガイド)
GeForce RTXシリーズ(Tensorコア/CUDA)を活用して、OpenAI Whisper系モデルをローカルで高速・高精度に実行する手順を解説します。ここでは「Python派:faster-whisper(推奨)」と「CLI派:whisper.cpp」の2ルートを用意。会議録や取材、YouTubeの字幕作成まで、具体例つきで丁寧に説明します。
1. ローカル実行のメリット
- 音声データを外部に出さずに処理(プライバシー/機密性◎)
- 長時間でも課金不要・コスト一定
- GPU活用で高速化(CPU比で数倍〜数十倍)
- 自動化や社内システムへの組み込みが容易
2. 推奨スペックと準備
- GPU:GeForce RTX 3060 以上(VRAM 8GB以上目安。長時間・多並列なら12GB+が快適)
- CPU:Core i5 / Ryzen 5 以上、メモリ16GB+推奨
- OS:Windows 10/11(64bit)
- 必須ソフト:Python 3.10〜3.11、FFmpeg、NVIDIAドライバ(CUDA対応)
ヒント: インストール後に nvidia-smi
でGPU認識、ffmpeg -version
でFFmpegの導入確認を行っておくとトラブルが減ります。
3. ルートA(推奨):Pythonで faster-whisper
を使う
faster-whisper は Whisper を高速推論向けに最適化した実装(CTranslate2バックエンド)。CUDAでGPU推論が可能、Pythonからの扱いやすさも抜群です。
3.1 インストール
python -m venv .venv
.venv\Scripts\activate # PowerShell: .\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install faster-whisper ffmpeg-python
※ WindowsでFFmpeg本体は別途インストールし、ffmpeg.exe
へのPATHを通してください。
3.2 モデル選択の目安(速度/精度/VRAM)
- tiny/base:軽量・高速(短い議事録や粗く内容把握)
- small/medium:実用的な精度(ミーティング・動画字幕)
- large-v3:最高精度(長時間・多言語・重要用途)
VRAM目安: tiny/base <2GB、small 3〜4GB、medium 6〜7GB、large-v3 10GB+ 程度(環境や精度設定で上下)。
3.3 実装テンプレ(SRT字幕・文字起こしを一発出力)
以下を transcribe.py
として保存。
音声/動画(mp3, m4a, wav, mp4 など)から TXT / SRT / VTT を生成します。
import argparse
from faster_whisper import WhisperModel
from datetime import timedelta
import os
def format_timestamp(t):
if t is None:
return "00:00:00,000"
td = timedelta(seconds=t)
h, rem = divmod(td.seconds, 3600)
m, s = divmod(rem, 60)
ms = int(td.microseconds / 1000)
return f"{h:02d}:{m:02d}:{s:02d},{ms:03d}"
def write_srt(segments, path):
with open(path, "w", encoding="utf-8") as f:
for i, seg in enumerate(segments, start=1):
f.write(f"{i}\n")
f.write(f"{format_timestamp(seg.start)} --> {format_timestamp(seg.end)}\n")
f.write(seg.text.strip() + "\n\n")
def write_vtt(segments, path):
with open(path, "w", encoding="utf-8") as f:
f.write("WEBVTT\n\n")
for seg in segments:
start = format_timestamp(seg.start).replace(",", ".")
end = format_timestamp(seg.end).replace(",", ".")
f.write(f"{start} --> {end}\n")
f.write(seg.text.strip() + "\n\n")
def main():
ap = argparse.ArgumentParser()
ap.add_argument("input", help="音声/動画ファイルパス")
ap.add_argument("--model", default="large-v3", help="tiny/base/small/medium/large-v3 等")
ap.add_argument("--lang", default="ja", help="強制言語(例: ja/en)")
ap.add_argument("--device", default="cuda", help="cuda / cpu")
ap.add_argument("--out", default=None, help="出力ファイル名(拡張子なし)")
ap.add_argument("--compute-type", default="float16", help="float16 / int8_float16 など")
ap.add_argument("--vad", action="store_true", help="VADで無音/雑音区間を自動カット")
args = ap.parse_args()
base = args.out or os.path.splitext(args.input)[0]
txt_path = base + ".txt"
srt_path = base + ".srt"
vtt_path = base + ".vtt"
model = WhisperModel(
args.model,
device=args.device,
compute_type=args.compute_type, # 省メモリは int8_float16 がおすすめ
)
segments, info = model.transcribe(
args.input,
language=args.lang,
vad_filter=args.vad, # 無音カット(長時間向け)
beam_size=5,
word_timestamps=False, # 単語ごとが必要なら True
)
# まとめてメモリに保持して3種出力
segs = list(segments)
with open(txt_path, "w", encoding="utf-8") as f:
for seg in segs:
f.write(seg.text.strip() + "\n")
write_srt(segs, srt_path)
write_vtt(segs, vtt_path)
print("Done:")
print(" TXT:", txt_path)
print(" SRT:", srt_path)
print(" VTT:", vtt_path)
if __name__ == "__main__":
main()
使い方(例)
# 1) 高精度・日本語会議の文字起こし(large-v3・GPU・VAD有効)
python transcribe.py meeting.m4a --model large-v3 --lang ja --device cuda --vad
# 2) 省メモリ/高速寄り(int8混在計算)
python transcribe.py interview.mp3 --model small --lang ja --device cuda --compute-type int8_float16
# 3) 英語動画から字幕(VTT/SRT両方作成)
python transcribe.py lecture.mp4 --model medium --lang en --device cuda
3.4 活用シナリオ
- 会議の議事録化: 収録したm4aを投入 → TXTで要約、SRTで動画に字幕
- 動画制作: YouTube/Vimeo用にVTTを添付しアクセシビリティ向上
- 取材/ポッドキャスト: 長尺音源をVADで効率処理、タイムスタンプ付き書き起こし
4. ルートB:whisper.cpp
(CLI中心・Python不要)
whisper.cpp は軽量かつ高速なC/C++実装。
CUDA / Vulkan / Metal など各種バックエンドに対応し、単一バイナリで手軽に動かせます。
4.1 セットアップ
- 公式リリースのWindows用バイナリを取得(またはソースからビルド)
- モデル(
ggml-*.bin
)をmodels/
配下に配置
例:models/ggml-large-v3.bin
、省メモリならggml-large-v3-q5_0.bin
など
4.2 基本コマンド
# 日本語音声をSRT字幕に
.\main.exe -m .\models\ggml-large-v3.bin -f .\audio\meeting.wav -osrt -l ja
# 出力を指定(ベース名 out を使って各種形式)
.\main.exe -m .\models\ggml-small.bin -f .\audio\interview.mp3 -of out -osrt -ovtt -otxt -l ja
# GPU(CUDA)を使う(ビルド/バイナリがCUDA対応であること)
.\main.exe -m .\models\ggml-medium.bin -f .\audio\lecture.mp4 -l en -osrt -ovtt -otxt --gpu 1
※ 音声はFFmpegで事前にWAV(16kHz mono)へ変換しておくと安定します:
ffmpeg -i input.mp4 -ar 16000 -ac 1 output.wav
5. 品質と速度を上げるテクニック
- モデル選択: 重要案件は
large-v3
。速度優先はsmall
/medium
。 - ノイズ対策: 可能なら単一話者に近いマイク、ゲイン適正化、事前ノイズ除去(
rnnoise
等) - VAD活用: 無音や雑音区間の自動スキップで長時間音源の精度・速度UP
- GPUメモリ最適化:
compute-type=int8_float16
(faster-whisper)や量子化モデル(whisper.cpp) - バッチ自動化: フォルダ内一括処理のスクリプト化で運用効率を高める
6. トラブルシューティング
- FFmpegが見つからない: PATHを通すか、
ffmpeg.exe
のフルパスを指定 - CUDA関連エラー: GPUドライバ更新、仮想メモリ拡張、
compute-type
を軽量側に - Out of memory: 小さいモデルに切替、VAD有効化、音声を分割して処理
- 文字化け: 出力ファイルをUTF-8で保存(エディタ設定)
- 誤認識: 高品質マイク、静かな環境、モデル大型化、
beam_size
引き上げ
7. ライセンスと配慮事項
- 音声データの取り扱い(個人情報・機密情報・著作権)に注意
- 外部配布・公開時は権利者の許諾と各ライセンス条項を必ず確認
まとめ
GeForce RTXを活かせば、Whisperはローカルでも高速・高精度。
faster-whisperならPythonからの自動化、whisper.cppなら軽量ワンバイナリ運用――用途に応じて選べます。
会議、動画、取材のワークフローに組み込み、プライバシーを守りつつ生産性を最大化しましょう。
コメント