Whisperを使用して無料で動画の文字を抽出する方法
- 850単語
- 4分
- 14 Aug, 2024
動画ファイルを処理する際、音声部分を文字に転記する必要がある場合があります。動画自体に字幕が埋め込まれていない場合、OpenAIのWhisperモデルを使用してこの機能を実現することができます。本記事では、PythonとWhisperモデルを使用して、動画から音声を抽出し、それを文字に転記する方法を詳しく説明します。まず、GPUがない場合にCPUを使用して転記する方法を説明し、その後、GPU依存関係のインストール、GPUの検出、GPUを使用した高速化について説明します。
1. CPUを使用して音声認識を行う
1.1 Whisperと関連依存関係のインストール
まず、Python
とffmpeg
がインストールされていることを確認します。その後、Whisperとffmpeg-python
をインストールします:
1pip install whisper-openai2pip install ffmpeg-python
1.2 動画から音声を抽出する
ffmpeg
を使用して音声を抽出し、WAV形式で保存します:
1import ffmpeg2
3def extract_audio(video_path, output_audio_path):4 ffmpeg.input(video_path).output(output_audio_path).run()5
6video_path = 'path/to/your/video.mp4'7audio_path = 'output.wav'8extract_audio(video_path, audio_path)
1.3 CPUを使用して転記する
GPUがない場合、WhisperモデルはCPUを使用して処理します。以下は、Whisperを使用して音声認識を行うコード例です:
1import whisper2
3def transcribe_audio(audio_path):4 model = whisper.load_model("base")5 result = model.transcribe(audio_path)6 return result["text"]7
8transcription = transcribe_audio(audio_path)9print(transcription)
2. GPUを使用して高速化する
2.1 GPU依存関係のインストール
GPUを使用して高速化する場合、GPUバージョンのPyTorchおよび関連依存関係をインストールする必要があります:
1pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
2.2 GPUが利用可能かどうかを検出する
GPUを使用する前に、システムに利用可能なGPUがあるかどうかを検出する必要があります。以下のコードを使用してGPUを検出できます:
1import torch2
3print("CUDA Available: ", torch.cuda.is_available())4print("Number of GPUs: ", torch.cuda.device_count())5print("Current GPU: ", torch.cuda.current_device())6print("GPU Name: ", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "No GPU available")
2.3 GPUを使用して音声認識を行う
システムに利用可能なGPUがある場合、WhisperモデルをGPUにロードして高速化を図ることができます。前述の手順に従ってGPUバージョンのPyTorchがインストールされていることを確認してください。以下は、GPUを使用して音声認識を行うコード例です:
1import whisper2import torch3
4# GPUが利用可能かどうかを確認5device = "cuda" if torch.cuda.is_available() else "cpu"6model = whisper.load_model("base").to(device)7
8def transcribe_audio(audio_path):9 result = model.transcribe(audio_path)10 return result["text"]11
12transcription = transcribe_audio(audio_path)13print(transcription)
3. 完全なコード例
すべての手順を組み合わせて、音声の抽出、CPUとGPUを使用した転記を含む完全なコード例は以下のとおりです:
1import ffmpeg2import whisper3import torch4
5def extract_audio(video_path, output_audio_path):6 ffmpeg.input(video_path).output(output_audio_path).run()7
8def transcribe_audio(audio_path, device):9 model = whisper.load_model("base").to(device)10 result = model.transcribe(audio_path)11 return result["text"]12
13# ファイルパスを設定14video_path = 'path/to/your/video.mp4'15audio_path = 'output.wav'16
17# 音声を抽出18extract_audio(video_path, audio_path)19
20# GPUが利用可能かどうかを確認21device = "cuda" if torch.cuda.is_available() else "cpu"22print(f"Using device: {device}")23
24# 音声認識を実行25transcription = transcribe_audio(audio_path, device)26print(transcription)
4. まとめ
以上の手順を通じて、Whisperモデルを使用して動画から音声を抽出し、文字ファイルを生成することができます。システムに利用可能なGPUがある場合、モデルをGPUにロードすることで処理性能を大幅に向上させることができます。