File size: 1,903 Bytes
4667525
 
 
 
 
 
6c3da4f
4667525
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39b8c2e
4667525
 
6c3da4f
4667525
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import streamlit as st
from moviepy.editor import VideoFileClip, AudioFileClip
from transformers import MarianMTModel, MarianTokenizer
import torch
from gtts import gTTS
import os

# Interface do Streamlit
st.title("Tradutor de Vídeo com Áudio")
uploaded_file = st.file_uploader("Carregue um vídeo para tradução", type=["mp4", "mov", "avi"])

# Função para traduzir o áudio do vídeo
def translate_audio(input_audio_path, output_audio_path, model_name='Helsinki-NLP/opus-mt-en-pt'):
    tokenizer = MarianTokenizer.from_pretrained(model_name)
    model = MarianMTModel.from_pretrained(model_name)

    audio_clip = AudioFileClip(input_audio_path)
    text = "Hello, how are you?"  # Simulação de transcrição
    translated_text = translate_text(text, tokenizer, model)

    tts = gTTS(translated_text, lang='pt')
    tts.save(output_audio_path)

# Função para traduzir o texto
def translate_text(text, tokenizer, model):
    inputs = tokenizer(text, return_tensors="pt", padding=True)
    with torch.no_grad():
        translated = model.generate(**inputs)
    return tokenizer.decode(translated[0], skip_special_tokens=True)

# Função para substituir o áudio no vídeo
def replace_audio_in_video(input_video_path, input_audio_path, output_video_path):
    video = VideoFileClip(input_video_path)
    new_audio = AudioFileClip(input_audio_path)
    video = video.set_audio(new_audio)
    video.write_videofile(output_video_path, codec="libx264")

# Processar o vídeo quando carregado
if uploaded_file is not None:
    input_video_path = "uploaded_video.mp4"
    output_video_path = "translated_video.mp4"
    
    with open(input_video_path, "wb") as f:
        f.write(uploaded_file.read())

    process_video(input_video_path, output_video_path)
    st.video(output_video_path)
    st.download_button("Baixar Vídeo Traduzido", open(output_video_path, "rb"), "translated_video.mp4")