Menu iconMenu icon
NLP con Transformadores: Técnicas Avanzadas y Aplicaciones Multimodales

Proyecto 6: Análisis y Resumen de Video Multimodal

Paso 3: Transcribir Audio del Video

Extraer el audio del video y transcribirlo usando Whisper, un modelo avanzado de reconocimiento de voz desarrollado por OpenAI. Whisper sobresale en la conversión de palabras habladas a texto con alta precisión en múltiples idiomas y acentos.

El modelo puede manejar diversas calidades de audio y niveles de ruido de fondo, haciéndolo ideal para procesar contenido de video. Durante este paso, separaremos la pista de audio del archivo de video y la procesaremos con Whisper para generar una transcripción detallada que captura no solo las palabras, sino que también mantiene la puntuación adecuada y la atribución del hablante cuando es posible.

import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

# Load Whisper model and processor
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

# Extract audio from video
def extract_audio(video_path, output_audio_path="audio.wav"):
    cap = cv2.VideoCapture(video_path)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    duration = total_frames / fps
    cap.release()

    # Convert to audio using ffmpeg (requires ffmpeg installed)
    import subprocess
    subprocess.run(["ffmpeg", "-i", video_path, "-q:a", "0", "-map", "a", output_audio_path])

# Transcribe audio
audio_path = "audio.wav"
extract_audio(video_path, audio_path)
audio, rate = librosa.load(audio_path, sr=16000)
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
generated_ids = model.generate(inputs["input_features"])
transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Transcription: {transcription}")

Permítanme desglosar este código que maneja la extracción y transcripción de audio del video:

1. Importación de Bibliotecas y Configuración del Modelo

  • Utiliza librosa para el procesamiento de audio y el modelo Whisper de la biblioteca transformers
  • Inicializa el modelo y procesador Whisper, específicamente usando la variante "whisper-small" para un procesamiento eficiente

2. Función de Extracción de Audio

  • La función extract_audio se encarga de convertir video a audio:
  • Captura metadatos del video (fps y cantidad de fotogramas)
  • Utiliza ffmpeg para extraer la pista de audio y guardarla como archivo WAV

3. Proceso de Transcripción de Audio

  • El flujo de trabajo de transcripción incluye:
  • Cargar el archivo de audio extraído usando librosa a una tasa de muestreo de 16kHz
  • Procesar el audio a través del modelo Whisper
  • Decodificar la salida del modelo en texto legible

El modelo Whisper es particularmente potente ya que puede manejar diversas calidades de audio y mantener la puntuación y atribución de hablantes adecuada.

Paso 3: Transcribir Audio del Video

Extraer el audio del video y transcribirlo usando Whisper, un modelo avanzado de reconocimiento de voz desarrollado por OpenAI. Whisper sobresale en la conversión de palabras habladas a texto con alta precisión en múltiples idiomas y acentos.

El modelo puede manejar diversas calidades de audio y niveles de ruido de fondo, haciéndolo ideal para procesar contenido de video. Durante este paso, separaremos la pista de audio del archivo de video y la procesaremos con Whisper para generar una transcripción detallada que captura no solo las palabras, sino que también mantiene la puntuación adecuada y la atribución del hablante cuando es posible.

import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

# Load Whisper model and processor
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

# Extract audio from video
def extract_audio(video_path, output_audio_path="audio.wav"):
    cap = cv2.VideoCapture(video_path)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    duration = total_frames / fps
    cap.release()

    # Convert to audio using ffmpeg (requires ffmpeg installed)
    import subprocess
    subprocess.run(["ffmpeg", "-i", video_path, "-q:a", "0", "-map", "a", output_audio_path])

# Transcribe audio
audio_path = "audio.wav"
extract_audio(video_path, audio_path)
audio, rate = librosa.load(audio_path, sr=16000)
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
generated_ids = model.generate(inputs["input_features"])
transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Transcription: {transcription}")

Permítanme desglosar este código que maneja la extracción y transcripción de audio del video:

1. Importación de Bibliotecas y Configuración del Modelo

  • Utiliza librosa para el procesamiento de audio y el modelo Whisper de la biblioteca transformers
  • Inicializa el modelo y procesador Whisper, específicamente usando la variante "whisper-small" para un procesamiento eficiente

2. Función de Extracción de Audio

  • La función extract_audio se encarga de convertir video a audio:
  • Captura metadatos del video (fps y cantidad de fotogramas)
  • Utiliza ffmpeg para extraer la pista de audio y guardarla como archivo WAV

3. Proceso de Transcripción de Audio

  • El flujo de trabajo de transcripción incluye:
  • Cargar el archivo de audio extraído usando librosa a una tasa de muestreo de 16kHz
  • Procesar el audio a través del modelo Whisper
  • Decodificar la salida del modelo en texto legible

El modelo Whisper es particularmente potente ya que puede manejar diversas calidades de audio y mantener la puntuación y atribución de hablantes adecuada.

Paso 3: Transcribir Audio del Video

Extraer el audio del video y transcribirlo usando Whisper, un modelo avanzado de reconocimiento de voz desarrollado por OpenAI. Whisper sobresale en la conversión de palabras habladas a texto con alta precisión en múltiples idiomas y acentos.

El modelo puede manejar diversas calidades de audio y niveles de ruido de fondo, haciéndolo ideal para procesar contenido de video. Durante este paso, separaremos la pista de audio del archivo de video y la procesaremos con Whisper para generar una transcripción detallada que captura no solo las palabras, sino que también mantiene la puntuación adecuada y la atribución del hablante cuando es posible.

import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

# Load Whisper model and processor
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

# Extract audio from video
def extract_audio(video_path, output_audio_path="audio.wav"):
    cap = cv2.VideoCapture(video_path)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    duration = total_frames / fps
    cap.release()

    # Convert to audio using ffmpeg (requires ffmpeg installed)
    import subprocess
    subprocess.run(["ffmpeg", "-i", video_path, "-q:a", "0", "-map", "a", output_audio_path])

# Transcribe audio
audio_path = "audio.wav"
extract_audio(video_path, audio_path)
audio, rate = librosa.load(audio_path, sr=16000)
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
generated_ids = model.generate(inputs["input_features"])
transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Transcription: {transcription}")

Permítanme desglosar este código que maneja la extracción y transcripción de audio del video:

1. Importación de Bibliotecas y Configuración del Modelo

  • Utiliza librosa para el procesamiento de audio y el modelo Whisper de la biblioteca transformers
  • Inicializa el modelo y procesador Whisper, específicamente usando la variante "whisper-small" para un procesamiento eficiente

2. Función de Extracción de Audio

  • La función extract_audio se encarga de convertir video a audio:
  • Captura metadatos del video (fps y cantidad de fotogramas)
  • Utiliza ffmpeg para extraer la pista de audio y guardarla como archivo WAV

3. Proceso de Transcripción de Audio

  • El flujo de trabajo de transcripción incluye:
  • Cargar el archivo de audio extraído usando librosa a una tasa de muestreo de 16kHz
  • Procesar el audio a través del modelo Whisper
  • Decodificar la salida del modelo en texto legible

El modelo Whisper es particularmente potente ya que puede manejar diversas calidades de audio y mantener la puntuación y atribución de hablantes adecuada.

Paso 3: Transcribir Audio del Video

Extraer el audio del video y transcribirlo usando Whisper, un modelo avanzado de reconocimiento de voz desarrollado por OpenAI. Whisper sobresale en la conversión de palabras habladas a texto con alta precisión en múltiples idiomas y acentos.

El modelo puede manejar diversas calidades de audio y niveles de ruido de fondo, haciéndolo ideal para procesar contenido de video. Durante este paso, separaremos la pista de audio del archivo de video y la procesaremos con Whisper para generar una transcripción detallada que captura no solo las palabras, sino que también mantiene la puntuación adecuada y la atribución del hablante cuando es posible.

import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

# Load Whisper model and processor
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

# Extract audio from video
def extract_audio(video_path, output_audio_path="audio.wav"):
    cap = cv2.VideoCapture(video_path)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    duration = total_frames / fps
    cap.release()

    # Convert to audio using ffmpeg (requires ffmpeg installed)
    import subprocess
    subprocess.run(["ffmpeg", "-i", video_path, "-q:a", "0", "-map", "a", output_audio_path])

# Transcribe audio
audio_path = "audio.wav"
extract_audio(video_path, audio_path)
audio, rate = librosa.load(audio_path, sr=16000)
inputs = processor(audio, sampling_rate=16000, return_tensors="pt")
generated_ids = model.generate(inputs["input_features"])
transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Transcription: {transcription}")

Permítanme desglosar este código que maneja la extracción y transcripción de audio del video:

1. Importación de Bibliotecas y Configuración del Modelo

  • Utiliza librosa para el procesamiento de audio y el modelo Whisper de la biblioteca transformers
  • Inicializa el modelo y procesador Whisper, específicamente usando la variante "whisper-small" para un procesamiento eficiente

2. Función de Extracción de Audio

  • La función extract_audio se encarga de convertir video a audio:
  • Captura metadatos del video (fps y cantidad de fotogramas)
  • Utiliza ffmpeg para extraer la pista de audio y guardarla como archivo WAV

3. Proceso de Transcripción de Audio

  • El flujo de trabajo de transcripción incluye:
  • Cargar el archivo de audio extraído usando librosa a una tasa de muestreo de 16kHz
  • Procesar el audio a través del modelo Whisper
  • Decodificar la salida del modelo en texto legible

El modelo Whisper es particularmente potente ya que puede manejar diversas calidades de audio y mantener la puntuación y atribución de hablantes adecuada.