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()