Como Baixar e Extrair Dados de Vídeos com Python

Como Baixar e Extrair Dados de Vídeos com Python

Se você já se perguntou como baixar um vídeo da internet e extrair informações úteis, como transcrições de áudio, este artigo é para você! Aqui, vou mostrar como usar Python para realizar essas tarefas de forma prática e eficiente, utilizando bibliotecas modernas como yt-dlp para download de vídeos e o modelo Whisper para transcrição de áudio.


Objetivos

  1. Baixar vídeos da internet usando um link.
  2. Extrair o áudio de um vídeo.
  3. Gerar transcrições automáticas do áudio usando Inteligência Artificial.
  4. Medir o tempo gasto em cada etapa.

Ferramentas Necessárias

Vamos utilizar as seguintes bibliotecas Python:

  • yt-dlp: Uma poderosa ferramenta para baixar vídeos de diversas plataformas.
  • ffmpeg: Para processar e extrair áudio de vídeos.
  • whisper: Modelo de transcrição de áudio desenvolvido pela OpenAI.
  • IPython: Para exibir vídeos e áudios diretamente no notebook.

Para instalar as dependências, execute:

pip install yt-dlp openai-whisper
sudo apt update && sudo apt install -y ffmpeg

Código Passo a Passo

1. Configurando o Modelo Whisper

O modelo Whisper será utilizado para transcrever o áudio extraído dos vídeos.

import whisper

# Carregar o modelo Whisper
whisper_model = whisper.load_model("base")

2. Função para Baixar o Vídeo

Usamos a biblioteca yt-dlp para baixar vídeos diretamente de um link.

import yt_dlp
import tempfile
import os

def download_video_from_url(url):
    temp_dir = tempfile.gettempdir()
    ydl_opts = {
        'outtmpl': os.path.join(temp_dir, '%(title)s.%(ext)s'),  # Salvar no diretório temporário
        'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4',  # Melhor qualidade disponível
        'quiet': True
    }
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(url, download=True)
        file_path = ydl.prepare_filename(info)
    return file_path

3. Extraindo o Áudio do Vídeo

Com o ffmpeg, convertemos o vídeo em um arquivo de áudio.

import subprocess

def extract_audio(video_path):
    audio_path = video_path.replace(".mp4", ".mp3")
    command = f"ffmpeg -i '{video_path}' -ar 16000 -ac 1 -q:a 0 -map a '{audio_path}' -y"
    subprocess.run(command, shell=True, check=True)
    return audio_path

4. Transcrevendo o Áudio

A função abaixo utiliza o Whisper para transcrever o áudio extraído.

def transcribe_audio(video_path):
    print(f"Extraindo áudio do vídeo: {video_path}")
    audio_path = extract_audio(video_path)
    print(f"Áudio extraído: {audio_path}")

    print("Transcrevendo áudio...")
    result = whisper_model.transcribe(audio_path, language="pt")  # Força o idioma português
    print("Transcrição concluída.")
    return result['text']

5. Colocando Tudo Junto

A função principal realiza todas as etapas em sequência, exibindo o tempo gasto em cada uma.

import time
from IPython.display import display, Video

def process_video_from_url(url):
    print(f"Baixando vídeo do link: {url}")
    overall_start_time = time.time()

    # Download do vídeo
    start_time = time.time()
    video_path = download_video_from_url(url)
    print(f"Tempo para baixar o vídeo: {time.time() - start_time:.2f} segundos")

    # Transcrição do áudio
    start_time = time.time()
    transcription = transcribe_audio(video_path)
    print(f"Tempo para transcrever o áudio: {time.time() - start_time:.2f} segundos")

    # Exibir o vídeo
    display(Video(video_path, embed=True))
    print(f"Transcrição: {transcription}")

    os.remove(video_path)
    print(f"Arquivo temporário removido: {video_path}")
    print(f"Tempo total de processamento: {time.time() - overall_start_time:.2f} segundos")

Exemplo de Uso

Escolha um link de vídeo (neste caso, Kwai) e execute o processamento:

query_video_url = "https://www.kwai.com/@anefernandes94/video/5211940775104142153?page_source=discover"
process_video_from_url(query_video_url)

O que Você Deve Esperar?

  1. Download do Vídeo: O vídeo será baixado em formato MP4.
  2. Extração de Áudio: Um arquivo MP3 será gerado a partir do vídeo.
  3. Transcrição: O texto extraído do áudio será exibido.
  4. Exibição do Vídeo: Você poderá visualizar o vídeo no notebook.

Possíveis Extensões

  1. Reconhecimento de Texto no Vídeo:
    Use OCR (Tesseract ou EasyOCR) para extrair texto diretamente dos frames do vídeo.
  2. Tradução Automática:
    Combine a transcrição com uma API de tradução, como o Google Translate.
  3. Análise de Sentimento:
    Utilize NLP para analisar emoções ou temas no texto transcrito.

Conclusão

Este projeto é um exemplo poderoso de como combinar ferramentas modernas para extrair informações úteis de vídeos. Com o Python, podemos criar pipelines inteligentes que baixam, processam e analisam dados multimídia.

Se quer ver o código completo, no colab, acesse: https://colab.research.google.com/drive/1P2r7irYn-WSa_UwAn273Z1TOvDxlpGQy?usp=sharing

Prof. Dr. Fabio Gomes Rocha Professor do Programa de Pós-Graduação em Ciências da Computação da UFS Head of Software Arquitecture and Machine Learning - SafeLabs

Publicar comentário