Whisperを使用して無料で動画の文字を抽出する方法

  • 850単語
  • 4分
  • 14 Aug, 2024

動画ファイルを処理する際、音声部分を文字に転記する必要がある場合があります。動画自体に字幕が埋め込まれていない場合、OpenAIのWhisperモデルを使用してこの機能を実現することができます。本記事では、PythonとWhisperモデルを使用して、動画から音声を抽出し、それを文字に転記する方法を詳しく説明します。まず、GPUがない場合にCPUを使用して転記する方法を説明し、その後、GPU依存関係のインストール、GPUの検出、GPUを使用した高速化について説明します。

1. CPUを使用して音声認識を行う

1.1 Whisperと関連依存関係のインストール

まず、Pythonffmpegがインストールされていることを確認します。その後、Whisperとffmpeg-pythonをインストールします:

Terminal window
1
pip install whisper-openai
2
pip install ffmpeg-python

1.2 動画から音声を抽出する

ffmpegを使用して音声を抽出し、WAV形式で保存します:

1
import ffmpeg
2
3
def extract_audio(video_path, output_audio_path):
4
ffmpeg.input(video_path).output(output_audio_path).run()
5
6
video_path = 'path/to/your/video.mp4'
7
audio_path = 'output.wav'
8
extract_audio(video_path, audio_path)

1.3 CPUを使用して転記する

GPUがない場合、WhisperモデルはCPUを使用して処理します。以下は、Whisperを使用して音声認識を行うコード例です:

1
import whisper
2
3
def transcribe_audio(audio_path):
4
model = whisper.load_model("base")
5
result = model.transcribe(audio_path)
6
return result["text"]
7
8
transcription = transcribe_audio(audio_path)
9
print(transcription)

2. GPUを使用して高速化する

2.1 GPU依存関係のインストール

GPUを使用して高速化する場合、GPUバージョンのPyTorchおよび関連依存関係をインストールする必要があります:

Terminal window
1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

2.2 GPUが利用可能かどうかを検出する

GPUを使用する前に、システムに利用可能なGPUがあるかどうかを検出する必要があります。以下のコードを使用してGPUを検出できます:

1
import torch
2
3
print("CUDA Available: ", torch.cuda.is_available())
4
print("Number of GPUs: ", torch.cuda.device_count())
5
print("Current GPU: ", torch.cuda.current_device())
6
print("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を使用して音声認識を行うコード例です:

1
import whisper
2
import torch
3
4
# GPUが利用可能かどうかを確認
5
device = "cuda" if torch.cuda.is_available() else "cpu"
6
model = whisper.load_model("base").to(device)
7
8
def transcribe_audio(audio_path):
9
result = model.transcribe(audio_path)
10
return result["text"]
11
12
transcription = transcribe_audio(audio_path)
13
print(transcription)

3. 完全なコード例

すべての手順を組み合わせて、音声の抽出、CPUとGPUを使用した転記を含む完全なコード例は以下のとおりです:

1
import ffmpeg
2
import whisper
3
import torch
4
5
def extract_audio(video_path, output_audio_path):
6
ffmpeg.input(video_path).output(output_audio_path).run()
7
8
def 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
# ファイルパスを設定
14
video_path = 'path/to/your/video.mp4'
15
audio_path = 'output.wav'
16
17
# 音声を抽出
18
extract_audio(video_path, audio_path)
19
20
# GPUが利用可能かどうかを確認
21
device = "cuda" if torch.cuda.is_available() else "cpu"
22
print(f"Using device: {device}")
23
24
# 音声認識を実行
25
transcription = transcribe_audio(audio_path, device)
26
print(transcription)

4. まとめ

以上の手順を通じて、Whisperモデルを使用して動画から音声を抽出し、文字ファイルを生成することができます。システムに利用可能なGPUがある場合、モデルをGPUにロードすることで処理性能を大幅に向上させることができます。