如何使用 Whisper 免费提取视频文字
- 689字
- 3分钟
- 2024-08-14
在处理视频文件时,有时需要将其中的音频部分转录为文字。如果视频本身没有内嵌字幕,我们可以使用 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
安装不上或者安装缓慢的同学,可以通过换源来解决:pip如何换源
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# 检查是否有可用的 GPU5device = "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 上可以显著提升处理性能。


