Rajor78 commited on
Commit
380171c
·
verified ·
1 Parent(s): 8126000

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -0
app.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import os
3
+ from TTS.api import TTS
4
+ from moviepy.editor import VideoFileClip, AudioFileClip
5
+
6
+ def generar_voz(texto):
7
+ """Genera una voz en base a un texto."""
8
+ archivo_audio = "voz_generada.wav"
9
+ tts = TTS("tts_models/es/css10/vits")
10
+ tts.tts_to_file(text=texto, file_path=archivo_audio)
11
+ return archivo_audio
12
+
13
+ def animar_avatar(imagen, video_referencia):
14
+ """Anima la imagen usando el video de referencia con FOMM."""
15
+ video_salida = "video_animado.mp4"
16
+ comando = f"""
17
+ python first-order-model/demo.py --config first-order-model/config/vox-256.yaml \
18
+ --checkpoint first-order-model/vox-cpk.pth.tar \
19
+ --source_image {imagen} --driving_video {video_referencia} \
20
+ --result_video {video_salida} --relative --adapt_scale --cpu
21
+ """
22
+ os.system(comando)
23
+ return video_salida
24
+
25
+ def unir_audio_video(video, audio):
26
+ """Une el audio generado con el video animado."""
27
+ video_clip = VideoFileClip(video)
28
+ audio_clip = AudioFileClip(audio)
29
+ video_clip = video_clip.set_audio(audio_clip)
30
+ video_final = "video_final.mp4"
31
+ video_clip.write_videofile(video_final, codec="libx264", fps=25)
32
+ return video_final
33
+
34
+ def generar_avatar(texto, imagen, video):
35
+ """Proceso completo: generar voz, animar imagen y unir todo."""
36
+ archivo_audio = generar_voz(texto)
37
+ archivo_video = animar_avatar(imagen, video)
38
+ video_final = unir_audio_video(archivo_video, archivo_audio)
39
+ return video_final
40
+
41
+ # Crear interfaz web con Gradio
42
+ gr.Interface(
43
+ fn=generar_avatar,
44
+ inputs=[
45
+ gr.Textbox(label="Escribe el texto que dirá el avatar"),
46
+ gr.Image(type="filepath", label="Sube tu imagen"),
47
+ gr.Video(type="filepath", label="Sube un video de referencia"),
48
+ ],
49
+ outputs=gr.Video(label="Video Final con tu Avatar"),
50
+ title="Generador de Avatar Animado con Voz",
51
+ description="Sube una imagen, un video de referencia y un texto. El sistema generará un video animado con tu voz."
52
+ ).launch()