如何使用 Whisper 免费提取视频文字

  • 689字
  • 3分钟
  • 2024-08-14

在处理视频文件时,有时需要将其中的音频部分转录为文字。如果视频本身没有内嵌字幕,我们可以使用 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

安装不上或者安装缓慢的同学,可以通过换源来解决:pip如何换源

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 上可以显著提升处理性能。

美团外卖红包 饿了么红包 支付宝红包