ZiyuG commited on
Commit
c77fae0
·
verified ·
1 Parent(s): ccaeafc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -5
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
- tmpdir = tempfile.TemporaryDirectory()
 
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)