【Whisper】音声ファイルを文字起こしする方法
アプリケーション

【Whisper】音声ファイルを文字起こしする方法

Whisper-v3-largeを使い、ドラッグ&ドロップで簡単に音声ファイルを文字起こしする方法

hakasaku

hakasaku

公開日: 2025年9月29日

【Whisper】音声ファイルを文字起こしする方法

はじめに

音声ファイルの文字起こしを行いたい場合、Groq Cloud APIのようなクラウドサービスを使用する方法もありますが、ローカル環境で処理したい場合もあります。

長い音声等、処理に時間がかかる場合は、クラウドサービスを使用する事でPCを付けっぱなしにする必要もなく、より高速で処理できます。

事前準備

必要な環境

  • Python 3.8以上
  • CUDA対応GPU(推奨:処理速度が大幅に向上)
  • 8GB以上のRAM(Whisper-largeモデル使用時)
  • 5GB以上の空きディスク容量

GPU要件について

  • NVIDIA GPU: CUDA 11.8以降対応
  • AMD GPU: ROCm対応(実験的)
  • CPU only: 可能だが処理時間が長い

インストール手順

1. 必要なライブラリのインストール

python、pipがインストールされている事を確認するためにバージョン確認を行う。

python --version
pip --version

バージョンが書かれていたら依存関係をインストールする。

# PyTorchのインストール(CUDA版)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
 
# Whisperのインストール
pip install openai-whisper
 
# その他の依存関係
pip install ffmpeg-python

2. FFmpegのインストール

Whisperは音声ファイルの変換にFFmpegを使用します。

自動インストール(推奨)

# Windows(Chocolatey使用)
winget install ffmpeg

Wingetを使用することでパスまで自動で通してくれます。

一応インストール後はターミナルでバージョン確認を行って、パスが通ってるか確認する。

ffmpeg -version

スクリプトのダウンロード

完成したスクリプトとBATファイルをGitHubで配布しています:

Whisper-bat - GitHub Repository

リポジトリには以下が含まれています:

  • whisper_transcribe.py: メインのPythonスクリプト
  • whisper_drag_drop.bat: ドラッグ&ドロップ用BATファイル
  • README.md: 詳細な使用方法

ダウンロード手順

  1. GitHubリポジトリにアクセス
  2. Releaseからダウンロード
  3. ZIPファイルを解凍
  4. 任意のフォルダに配置

使用方法

1. 基本的な使用方法

  1. 音声ファイルを準備
  2. whisper_drag_drop.batに音声ファイルをドラッグ&ドロップ
  3. 自動で処理が開始
  4. 完了すると変換元ファイルと同じフォルダに_transcript.txtファイルが生成

2. 対応音声形式

  • MP3
  • WAV
  • M4A
  • FLAC
  • AAC
  • OGG
  • WMA

3. 出力ファイル例

# sample_audio_transcript.txt の文字起こし結果

言語: ja
全文:
こんにちは。今日はローカルでWhisperを動かす方法について説明します。まず最初に必要な環境を確認しましょう。

==================================================
セグメント別詳細:

[00:00:00.000 -> 00:00:03.840] こんにちは。今日はローカルでWhisperを動かす方法について説明します。
[00:00:03.840 -> 00:00:07.200] まず最初に必要な環境を確認しましょう。

モデルの種類と性能

モデル サイズ VRAM使用量 精度 処理速度
tiny 39MB ~1GB 非常に高速
base 74MB ~1GB 高速
small 244MB ~2GB 普通
medium 769MB ~5GB やや遅い
large-v3 1550MB ~10GB 最高 遅い

モデル変更方法

スクリプト内の以下の行を変更:

# 高速だが精度が低い
result = transcribe_audio(audio_file, model_name="base")
 
# バランス型
result = transcribe_audio(audio_file, model_name="medium")
 
# 最高精度(推奨)
result = transcribe_audio(audio_file, model_name="large-v3")

トラブルシューティング

よくある問題と解決法

1. CUDAエラー

RuntimeError: CUDA out of memory

解決法:

  • より小さなモデルを使用(medium → base → tiny)
  • 他のプロセスを終了してメモリを解放
  • fp16=Trueオプションを追加

2. FFmpegエラー

FileNotFoundError: ffmpeg was not found

解決法:

  • FFmpegをインストール
  • 環境変数PATHにFFmpegを追加

3. 処理が異常に遅い

原因: CPUで処理されている 解決法:

  • CUDAドライバを正しくインストール
  • PyTorchのCUDA版を再インストール

4. 日本語の認識精度が悪い

解決法:

  • language="ja"パラメータが設定されているか確認
  • より大きなモデル(large-v3)を使用
  • 音声品質を確認(ノイズ除去など)

UVRを利用してBGMやノイズの分離を行ったり出来るため、前処理を工夫するのも効果的です。

高度な設定

カスタマイズ例

# 温度パラメータで創造性を調整
result = model.transcribe(
    audio_path,
    language="ja",
    temperature=0.2,  # 低い値ほど確実性重視
    word_timestamps=True,
    verbose=True
)
 
# 初期プロンプトで文脈を指定
result = model.transcribe(
    audio_path,
    language="ja",
    initial_prompt="これは技術的な講義の録音です。",
    word_timestamps=True
)

バッチ処理版

複数ファイルを一度に処理する場合:

def batch_transcribe(audio_folder):
    model = whisper.load_model("large-v3")
    
    audio_files = []
    supported_formats = ['.mp3', '.wav', '.m4a', '.flac']
    
    for file in Path(audio_folder).glob('*'):
        if file.suffix.lower() in supported_formats:
            audio_files.append(file)
    
    for audio_file in audio_files:
        print(f"処理中: {audio_file.name}")
        result = model.transcribe(str(audio_file), language="ja")
        
        output_path = audio_file.parent / f"{audio_file.stem}_transcript.txt"
        save_transcription(result, str(output_path))

参考リンク