muruga778 commited on
Commit
ef0719a
·
verified ·
1 Parent(s): bf6f86c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -0
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import cv2
3
+ import numpy as np
4
+ import os
5
+ from moviepy.editor import ImageSequenceClip
6
+
7
+ def generate_video(photo, audio):
8
+ # Save temporary files
9
+ photo_path = "user_photo.jpg"
10
+ audio_path = "user_audio.wav"
11
+ cv2.imwrite(photo_path, photo)
12
+ audio.write_audiofile(audio_path)
13
+
14
+ # Create simple talking animation (face stays static)
15
+ frames = []
16
+ for i in range(30): # 1 second video at 30fps
17
+ frame = photo.copy()
18
+
19
+ # Add simple mouth movement (sin wave)
20
+ y_offset = int(10 * np.sin(i/3))
21
+ cv2.rectangle(frame,
22
+ (100, 150 + y_offset),
23
+ (200, 250 - y_offset),
24
+ (0, 0, 0), -1)
25
+
26
+ frames.append(frame)
27
+
28
+ # Save video
29
+ video_path = "output.mp4"
30
+ clip = ImageSequenceClip([cv2.cvtColor(f, cv2.COLOR_BGR2RGB) for f in frames],
31
+ fps=30)
32
+ clip.write_videofile(video_path, codec="libx264", audio=audio_path)
33
+
34
+ return video_path
35
+
36
+ # Gradio Interface
37
+ with gr.Blocks() as demo:
38
+ gr.Markdown("## 🎥 Video Resume Generator")
39
+
40
+ with gr.Row():
41
+ photo_input = gr.Image(label="Upload Your Photo", type="numpy")
42
+ audio_input = gr.Audio(label="Record/Upload Audio", type="filepath")
43
+
44
+ generate_btn = gr.Button("Generate Video")
45
+ video_output = gr.Video(label="Result")
46
+
47
+ generate_btn.click(
48
+ fn=generate_video,
49
+ inputs=[photo_input, audio_input],
50
+ outputs=video_output
51
+ )
52
+
53
+ demo.launch()