Spaces:
Runtime error
Runtime error
percentage progress
Browse files
app.py
CHANGED
@@ -72,23 +72,30 @@ def transcribe_audio(audio_file):
|
|
72 |
return transcription
|
73 |
|
74 |
@spaces.GPU
|
75 |
-
def analyze_video(prompt, video):
|
76 |
start_time = time.time()
|
77 |
|
|
|
|
|
78 |
if isinstance(video, str):
|
79 |
video_path = video
|
80 |
else:
|
81 |
video_path = video.name
|
82 |
|
|
|
83 |
encoded_video = encode_video(video_path)
|
84 |
|
|
|
85 |
# Extract audio and transcribe
|
86 |
audio_path = extract_audio(video_path)
|
|
|
|
|
87 |
transcription = transcribe_audio(audio_path)
|
88 |
|
89 |
# Clean up temporary audio file
|
90 |
os.remove(audio_path)
|
91 |
|
|
|
92 |
context = [
|
93 |
{"role": "user", "content": [prompt] + encoded_video},
|
94 |
{"role": "assistant", "content": f"Transcription of the video: {transcription}"}
|
@@ -105,12 +112,16 @@ def analyze_video(prompt, video):
|
|
105 |
"max_slice_nums": 1 if len(encoded_video) > 16 else 2
|
106 |
}
|
107 |
|
|
|
108 |
response = model.chat(image=None, msgs=context, tokenizer=tokenizer, **params)
|
109 |
|
|
|
110 |
end_time = time.time()
|
111 |
processing_time = end_time - start_time
|
112 |
analysis_result = f"Analysis Result:\n{response}\n\n"
|
113 |
processing_time = f"Processing Time: {processing_time:.2f} seconds"
|
|
|
|
|
114 |
return analysis_result, processing_time
|
115 |
|
116 |
with gr.Blocks() as demo:
|
|
|
72 |
return transcription
|
73 |
|
74 |
@spaces.GPU
|
75 |
+
def analyze_video(prompt, video, progress=gr.Progress()):
|
76 |
start_time = time.time()
|
77 |
|
78 |
+
progress(0, desc="Initializing")
|
79 |
+
|
80 |
if isinstance(video, str):
|
81 |
video_path = video
|
82 |
else:
|
83 |
video_path = video.name
|
84 |
|
85 |
+
progress(10, desc="Encoding video")
|
86 |
encoded_video = encode_video(video_path)
|
87 |
|
88 |
+
progress(30, desc="Extracting audio")
|
89 |
# Extract audio and transcribe
|
90 |
audio_path = extract_audio(video_path)
|
91 |
+
|
92 |
+
progress(50, desc="Transcribing audio")
|
93 |
transcription = transcribe_audio(audio_path)
|
94 |
|
95 |
# Clean up temporary audio file
|
96 |
os.remove(audio_path)
|
97 |
|
98 |
+
progress(70, desc="Preparing context")
|
99 |
context = [
|
100 |
{"role": "user", "content": [prompt] + encoded_video},
|
101 |
{"role": "assistant", "content": f"Transcription of the video: {transcription}"}
|
|
|
112 |
"max_slice_nums": 1 if len(encoded_video) > 16 else 2
|
113 |
}
|
114 |
|
115 |
+
progress(80, desc="Generating response")
|
116 |
response = model.chat(image=None, msgs=context, tokenizer=tokenizer, **params)
|
117 |
|
118 |
+
progress(90, desc="Finalizing")
|
119 |
end_time = time.time()
|
120 |
processing_time = end_time - start_time
|
121 |
analysis_result = f"Analysis Result:\n{response}\n\n"
|
122 |
processing_time = f"Processing Time: {processing_time:.2f} seconds"
|
123 |
+
|
124 |
+
progress(100, desc="Complete")
|
125 |
return analysis_result, processing_time
|
126 |
|
127 |
with gr.Blocks() as demo:
|