Cómo extraer texto de videos de forma gratuita con Whisper

  • 495Palabras
  • 2Minutos
  • 14 Aug, 2024

Al trabajar con archivos de video, a veces es necesario transcribir la parte de audio a texto. Si el video no tiene subtítulos incrustados, podemos utilizar el modelo Whisper de OpenAI para lograr esta función. Este artículo detalla cómo utilizar Python y el modelo Whisper para extraer audio de un video y transcribirlo en texto. Primero, explicaremos cómo realizar la transcripción utilizando CPU en ausencia de GPU, y luego describiremos cómo instalar las dependencias de GPU, detectar la GPU y utilizarla para acelerar el proceso.

1. Reconocimiento de voz utilizando CPU

1.1 Instalación de Whisper y dependencias relacionadas

Primero, asegúrate de tener instalados Python y ffmpeg. Luego, instala Whisper y ffmpeg-python:

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

1.2 Extracción de audio del video

Utiliza ffmpeg para extraer el audio y guardarlo en formato 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 Transcripción utilizando CPU

En ausencia de GPU, el modelo Whisper utilizará CPU para el procesamiento. A continuación se muestra un ejemplo de código sobre cómo utilizar Whisper para el reconocimiento de voz:

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. Aceleración utilizando GPU

2.1 Instalación de dependencias de GPU

Si deseas utilizar GPU para acelerar el proceso, es necesario instalar la versión de PyTorch para GPU y sus dependencias relacionadas:

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

2.2 Detección de la disponibilidad de GPU

Antes de utilizar GPU, es necesario verificar si hay una GPU disponible en el sistema. El siguiente código puede ser utilizado para detectar la 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 Reconocimiento de voz utilizando GPU

Si hay una GPU disponible en el sistema, puedes cargar el modelo Whisper en la GPU para acelerar el proceso. Asegúrate de haber instalado la versión de PyTorch para GPU según los pasos anteriores. A continuación se muestra un ejemplo de código sobre cómo utilizar GPU para el reconocimiento de voz:

1
import whisper
2
import torch
3
4
# Verifica si hay una GPU disponible
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. Ejemplo completo de código

Combinando todos los pasos, a continuación se presenta un ejemplo completo de código, incluyendo la extracción de audio y la transcripción utilizando CPU y 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
# Configuración de rutas de archivo
14
video_path = 'path/to/your/video.mp4'
15
audio_path = 'output.wav'
16
17
# Extracción de audio
18
extract_audio(video_path, audio_path)
19
20
# Verifica si hay una GPU disponible
21
device = "cuda" if torch.cuda.is_available() else "cpu"
22
print(f"Using device: {device}")
23
24
# Reconocimiento de voz
25
transcription = transcribe_audio(audio_path, device)
26
print(transcription)

4. Conclusión

Siguiendo los pasos anteriores, podemos utilizar el modelo Whisper para extraer audio de un video y generar un archivo de texto. Si tu sistema cuenta con una GPU disponible, cargar el modelo en la GPU puede mejorar significativamente el rendimiento del procesamiento.