Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -2,7 +2,7 @@ import gradio as gr
|
|
2 |
from evaluate import eval
|
3 |
from datetime import datetime
|
4 |
import os, shutil
|
5 |
-
import warnings
|
6 |
from audio import gen_audio
|
7 |
warnings.filterwarnings("ignore")
|
8 |
warnings.simplefilter("ignore")
|
@@ -44,8 +44,10 @@ jsons = {
|
|
44 |
def get_video_url(option):
|
45 |
return videos[option]
|
46 |
|
|
|
47 |
def evaluate_sign_language(user_video, standard_video_option):
|
48 |
-
|
|
|
49 |
new_path = tmpdir + "/user.mp4"
|
50 |
# 将文件从临时路径复制到新路径
|
51 |
shutil.copy(user_video, new_path)
|
@@ -99,7 +101,14 @@ def evaluate_sign_language(user_video, standard_video_option):
|
|
99 |
advice += f"<b>綜合評分:</b> 您本次的總評分為 {score:.2f}/100分。<br>"
|
100 |
|
101 |
ret_video = gen_audio(subtitles, tmpdir)
|
102 |
-
return advice, ret_video
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
|
104 |
font = ["Heiti SC", "FangSong"]
|
105 |
title = """<h1 style="text-align: center;">
|
@@ -146,11 +155,21 @@ with gr.Blocks(
|
|
146 |
advice_output = gr.HTML(label="反饋報告")
|
147 |
with gr.Column():
|
148 |
compare_video_player = gr.Video(label="評估結果")
|
149 |
-
|
|
|
150 |
evaluate_button.click(
|
151 |
evaluate_sign_language,
|
152 |
inputs=[upload_video, video_selector],
|
153 |
-
outputs=[advice_output, compare_video_player]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
)
|
155 |
|
156 |
app.launch(share=True)
|
|
|
2 |
from evaluate import eval
|
3 |
from datetime import datetime
|
4 |
import os, shutil
|
5 |
+
import warnings, tempfile
|
6 |
from audio import gen_audio
|
7 |
warnings.filterwarnings("ignore")
|
8 |
warnings.simplefilter("ignore")
|
|
|
44 |
def get_video_url(option):
|
45 |
return videos[option]
|
46 |
|
47 |
+
@spaces.GPU()
|
48 |
def evaluate_sign_language(user_video, standard_video_option):
|
49 |
+
tmp = tempfile.TemporaryDirectory()
|
50 |
+
tmpdir = tmp.name
|
51 |
new_path = tmpdir + "/user.mp4"
|
52 |
# 将文件从临时路径复制到新路径
|
53 |
shutil.copy(user_video, new_path)
|
|
|
101 |
advice += f"<b>綜合評分:</b> 您本次的總評分為 {score:.2f}/100分。<br>"
|
102 |
|
103 |
ret_video = gen_audio(subtitles, tmpdir)
|
104 |
+
return advice, ret_video, tmp
|
105 |
+
|
106 |
+
def cleanup_temp_dir(tmp_dir):
|
107 |
+
if tmp_dir:
|
108 |
+
print(f"Cleaning up temporary directory: {tmp_dir.name}")
|
109 |
+
tmp_dir.cleanup()
|
110 |
+
return "临时目录已清理"
|
111 |
+
return "没有临时目录需要清理"
|
112 |
|
113 |
font = ["Heiti SC", "FangSong"]
|
114 |
title = """<h1 style="text-align: center;">
|
|
|
155 |
advice_output = gr.HTML(label="反饋報告")
|
156 |
with gr.Column():
|
157 |
compare_video_player = gr.Video(label="評估結果")
|
158 |
+
|
159 |
+
tmp_dir_state = gr.State()
|
160 |
evaluate_button.click(
|
161 |
evaluate_sign_language,
|
162 |
inputs=[upload_video, video_selector],
|
163 |
+
outputs=[advice_output, compare_video_player, tmp_dir_state],
|
164 |
+
# _js="() => new Promise(resolve => setTimeout(resolve, 500))"
|
165 |
+
)
|
166 |
+
# time.sleep(0.5)
|
167 |
+
|
168 |
+
# 视频加载后自动清理临时目录
|
169 |
+
compare_video_player.change(
|
170 |
+
fn=cleanup_temp_dir,
|
171 |
+
inputs=tmp_dir_state, # 这里传递的是存储的临时目录状态
|
172 |
+
outputs=None
|
173 |
)
|
174 |
|
175 |
app.launch(share=True)
|