Projeto acadêmico que consiste em uma aplicação web completa para processamento de mídia, com foco em Inteligência Artificial aplicada à legendagem e narração de vídeos.
A aplicação combina uma interface moderna em React com uma API robusta em FastAPI (Python), integrando modelos da OpenAI e bibliotecas avançadas como Whisper e Pyannote.audio para oferecer resultados de alta precisão.
- Lucas Christian
- Marcos Derick
- Lucas Soares
- João Vitor
- Gustavo Santiago
- Luiz Carvalho
- Alan Leão
flowchart LR
A((Usuário)) --> B{Escolha de Funcionalidade} -- "Gerar Legendas" --> L1[Upload de Vídeo]
B -- "Gerar Narração" --> N1["`Entrada de Texto
Seleção de voz
Seleção de velocidade`"]
L1 --> L2[Transcrição]
L1 --> L3[Diarização]
L2 & L3 --> L4([Edição])
L4 --> L5[Renderização]
L5 --> L6[Download]
N1 --> N2[Geração de Áudio]
N2 --> N3[Audição]
N2 --> N4[Download]
Geração e Edição de Legendas:
-
Upload:
O usuário seleciona um vídeo (ex:.mp4) no frontend. -
Processamento de IA:
O backend realiza duas tarefas:- Transcrição (SST): O áudio é processado pelo OpenAI Whisper para gerar texto com timestamps.
- Diarização: O áudio é processado pelo Pyannote.audio para identificar os interlocutores.
-
Edição no Frontend:
O usuário pode:- Corrigir o texto da transcrição.
- Ajustar cores, fontes e estilo das legendas.
-
Renderização Final:
O backend utiliza FFmpeg para “queimar” as legendas estilizadas diretamente no vídeo e disponibiliza o arquivo final para download.
Narração (Text-to-Speech):
-
Entrada de Texto:
O usuário insere ou cola um roteiro no frontend. -
Seleção de Voz:
O usuário define seleciona vozes pré-definidas (masculina, feminina, etc). -
Orquestração via n8n:
Ao clicar em “Gerar Áudio”, o backend pode acionar um workflow no n8n, que utiliza a API de TTS da OpenAI. -
Geração e Retorno:
Os blocos de texto são transformados em áudio, combinados em um único arquivo.mp3e enviados ao usuário para audição ou download.
O projeto segue boas práticas de engenharia de software (princípios SOLID), com separação clara entre camadas e responsabilidades.
- main.py — Ponto de entrada da aplicação FastAPI, inicializa rotas e configurações gerais.
- models/ — Contém os schemas Pydantic usados para validação e definição de contratos de dados.
subtitle.py: schemas relacionados aos dados de legenda.
- routes/ — Define os endpoints HTTP que expõem as funcionalidades da API.
subtitle.py: endpoint dos serviços de legenda.
- services/ — Implementa a lógica principal de IA e processamento:
transcription.py: transcrição de áudio com Whisper.diarization.py: diarização de locutores com Pyannote.rendering.py: renderização de vídeo/áudio via FFmpeg.subtitle.py: orquestra geração e sincronização de legendas.
-
Lazy Loading:
Modelos pesados (Whisper e Pyannote) são carregados sob demanda (apenas na primeira execução).
O carregamento é controlado comthreading.Lockpara ser thread-safe. -
Tratamento de Áudio:
FFmpeg realiza a extração e reamostragem do áudio para 16kHz mono, o formato exigido pelos modelos de IA.
Caution
Atualmente o projeto só funciona no Linux (testado em distros baseadas em debian) devido a problemas de renderização envolvendo o FFmpeg no Windows.
Warning
É recomandável ter uma GPU Nvidia com suporte ao CUDA ou GPU AMD com suporte ao ROCm, caso contrário, os modelos de IA serão executados via CPU, reduzindo drasticamente a velocidade da transcrição e diarização.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/13.0.2/local_installers/cuda-repo-ubuntu2404-13-0-local_13.0.2-580.95.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-13-0-local_13.0.2-580.95.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-13-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0
sudo apt-get install -y cuda-driverswget https://repo.radeon.com/amdgpu-install/7.1/ubuntu/noble/amdgpu-install_7.1.70100-1_all.deb
sudo apt install ./amdgpu-install_7.1.70100-1_all.deb
sudo apt update
sudo apt install python3-setuptools python3-wheel
sudo usermod -a -G render,video $LOGNAME
sudo apt install rocm
wget https://repo.radeon.com/amdgpu-install/7.1/ubuntu/noble/amdgpu-install_7.1.70100-1_all.deb
sudo apt install ./amdgpu-install_7.1.70100-1_all.deb
sudo apt update
sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"
sudo apt install amdgpu-dkmssudo apt update
sudo apt install python3
sudo apt install ffmpeg
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
\. "$HOME/.nvm/nvm.sh"
nvm install 24git clone https://github.com/lucaschr21/multimidia
cd multimidiauv venv --python 3.13.9
source .venv/bin/activateuv sync
cd UI
npm install
cd ..uvicorn src.main:appAbra outro terminal, então digite:
cd UI
npm start
npm run dev