File size: 2,744 Bytes
8047108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
50
51
52
53
54
55
56
57
58
59
60
61
62
import gradio as gr
from gradio_client import Client

def swap(radio):
    if radio == "Upload":
        return gr.update(source="upload")
    else:
        return gr.update(source="webcam")

def process_video(radio, video, language, use_wav2lip):
    try:
        client = Client("https://artificialguybr-video-dubbing.hf.space/")
        result = client.predict(
            radio,
            video,
            language,
            use_wav2lip,
            api_name="/predict"
        )
        return result
    except Exception as e:
        print(f"Erro ao chamar a API: {e}")
        return "Ocorreu um erro ao processar o vídeo."


# Componentes Gradio
video = gr.Video()
radio = gr.Radio(["Upload", "Gravar"], value="Upload", show_label=False)
dropdown = gr.Dropdown(choices=["Inglés", "Español", "Francés", "Alemán", "Italiano", "Portugués", "Polaco", "Turco", "Ruso", "Holandés", "Checo", "Árabe", "Chino (Simplificado)"], label="Idioma de Destino para Doblaje", value="Español")
checkbox = gr.Checkbox(label="El video tiene un primer plano del rostro. Usa Wav2lip.", value=False)

# Interface Gradio
iface = gr.Interface(
    fn=process_video,
    inputs=[radio, video, dropdown, checkbox],
    outputs=gr.Video(),
    live=False,
    title="Doblaje de Video con IA",
    description="Esta herramienta fue desarrollada por [@artificialguybr](https://twitter.com/artificialguybr) utilizando exclusivamente herramientas de código abierto. Un agradecimiento especial a Hugging Face por el soporte de GPU. Agradecimientos a [@yeswondwer](https://twitter.com/@yeswondwerr) por el código original. ¡Prueba el espacio [Transcripción y Traducción de Videos](https://huggingface.co/spaces/artificialguybr/VIDEO-TRANSLATION-TRANSCRIPTION)!",
    allow_flagging=False

)

# Bloco Gradio
with gr.Blocks() as demo:
    iface.render()
    radio.change(swap, inputs=[radio], outputs=[video])

    gr.Markdown("""
    **Nota:**
    - El límite de video es de 1 minuto. Doblará a todas las personas usando solo una voz.
    - La generación puede tardar hasta 5 minutos.
    - Al usar esta demo, usted acepta los términos de la Licencia de Modelo Público Coqui en https://coqui.ai/cpml
    - La herramienta utiliza modelos de código abierto para todos los modelos. Es una versión alfa.
    - La calidad puede ser mejorada, pero requeriría más tiempo de procesamiento por video. Para escalabilidad y limitaciones de hardware, se eligió la velocidad, no solo la calidad.
    - Si necesita más de 1 minuto, duplique el Espacio y cambie el límite en app.py.
    - Si marca incorrectamente la opción 'El video tiene un primer plano del rostro', el doblaje puede no funcionar como se espera.
    """)


demo.queue
demo.launch()