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
:
1pip install whisper-openai2pip install ffmpeg-python
1.2 Extracción de audio del video
Utiliza ffmpeg
para extraer el audio y guardarlo en formato 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 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:
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. 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:
1pip 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:
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 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:
1import whisper2import torch3
4# Verifica si hay una GPU disponible5device = "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. 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:
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# Configuración de rutas de archivo14video_path = 'path/to/your/video.mp4'15audio_path = 'output.wav'16
17# Extracción de audio18extract_audio(video_path, audio_path)19
20# Verifica si hay una GPU disponible21device = "cuda" if torch.cuda.is_available() else "cpu"22print(f"Using device: {device}")23
24# Reconocimiento de voz25transcription = transcribe_audio(audio_path, device)26print(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.