Spaces:
Running
Running
Update app.py
Browse filesadded perm files list.
app.py
CHANGED
|
@@ -3,7 +3,7 @@ from re import L
|
|
| 3 |
import tempfile
|
| 4 |
import gradio as gr
|
| 5 |
# import openai
|
| 6 |
-
from numpy._core.defchararray import isdecimal
|
| 7 |
from openai import OpenAI
|
| 8 |
from dotenv import load_dotenv
|
| 9 |
from pathlib import Path
|
|
@@ -147,6 +147,7 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
|
| 147 |
isBoss = True
|
| 148 |
if prompt == 'stats':
|
| 149 |
response = genUsageStats()
|
|
|
|
| 150 |
return [past, response, None, gptModel]
|
| 151 |
if prompt == 'reset':
|
| 152 |
response = genUsageStats(True)
|
|
@@ -159,6 +160,10 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
|
| 159 |
response = f'cleaned all .wav files for {user}'
|
| 160 |
final_clean_up(user)
|
| 161 |
return [past, response, None, gptModel]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
if user_window in unames and pwd_window == pwdList[unames.index(user_window)]:
|
| 163 |
past.append({"role":"user", "content":prompt})
|
| 164 |
completion = client.chat.completions.create(model=gptModel,
|
|
@@ -249,17 +254,38 @@ def gen_speech_file_names(user, cnt):
|
|
| 249 |
return rv
|
| 250 |
|
| 251 |
def final_clean_up(user):
|
| 252 |
-
|
|
|
|
|
|
|
|
|
|
| 253 |
for fpath in flist:
|
| 254 |
try:
|
| 255 |
os.remove(fpath)
|
| 256 |
except:
|
| 257 |
continue
|
| 258 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
with gr.Blocks() as demo:
|
| 260 |
history = gr.State([])
|
| 261 |
password = gr.State("")
|
| 262 |
-
user = gr.State("")
|
| 263 |
model = gr.State("gpt-4o-mini")
|
| 264 |
q = gr.State([])
|
| 265 |
qsave = gr.State([])
|
|
@@ -350,10 +376,11 @@ with gr.Blocks() as demo:
|
|
| 350 |
fp.write(response.content)
|
| 351 |
return [fname, q]
|
| 352 |
|
| 353 |
-
def gen_output_audio(q):
|
| 354 |
try:
|
| 355 |
fname = q.pop(0)
|
| 356 |
except:
|
|
|
|
| 357 |
return [None, gr.Audio(sources=None)]
|
| 358 |
return [fname, q]
|
| 359 |
|
|
@@ -388,8 +415,8 @@ with gr.Blocks() as demo:
|
|
| 388 |
audio_widget.pause_recording(fn=pause_message, outputs=[prompt_window])
|
| 389 |
reset_button.add(audio_widget)
|
| 390 |
audio_out = gr.Audio(autoplay=True, visible=False)
|
| 391 |
-
audio_out.stop(fn=gen_output_audio, inputs=q, outputs = [audio_out, q])
|
| 392 |
speak_output.click(fn=initial_audio_output, inputs=[output_window, user_window], outputs=[audio_out, q])
|
| 393 |
output_window.change(fn=set_speak_button, inputs=output_window,outputs=speak_output)
|
| 394 |
-
demo.unload(final_clean_up(
|
| 395 |
demo.launch(share=True)
|
|
|
|
| 3 |
import tempfile
|
| 4 |
import gradio as gr
|
| 5 |
# import openai
|
| 6 |
+
from numpy._core.defchararray import endswith, isdecimal
|
| 7 |
from openai import OpenAI
|
| 8 |
from dotenv import load_dotenv
|
| 9 |
from pathlib import Path
|
|
|
|
| 147 |
isBoss = True
|
| 148 |
if prompt == 'stats':
|
| 149 |
response = genUsageStats()
|
| 150 |
+
list_permanent_files()
|
| 151 |
return [past, response, None, gptModel]
|
| 152 |
if prompt == 'reset':
|
| 153 |
response = genUsageStats(True)
|
|
|
|
| 160 |
response = f'cleaned all .wav files for {user}'
|
| 161 |
final_clean_up(user)
|
| 162 |
return [past, response, None, gptModel]
|
| 163 |
+
if prompt.startswith('files'):
|
| 164 |
+
(log_cnt, wav_cnt, other_cnt, others) = list_permanent_files()
|
| 165 |
+
response = f'{log_cnt} log files\n{wav_cnt} .wav files\n{other_cnt} Other files:\n{others}'
|
| 166 |
+
return [past, response, None, gptModel]
|
| 167 |
if user_window in unames and pwd_window == pwdList[unames.index(user_window)]:
|
| 168 |
past.append({"role":"user", "content":prompt})
|
| 169 |
completion = client.chat.completions.create(model=gptModel,
|
|
|
|
| 254 |
return rv
|
| 255 |
|
| 256 |
def final_clean_up(user):
|
| 257 |
+
if user.strip().lower() == 'all':
|
| 258 |
+
flist = glob(dataDir + '*_speech*.wav')
|
| 259 |
+
else:
|
| 260 |
+
flist = glob(dataDir + f'{user}_speech*.wav')
|
| 261 |
for fpath in flist:
|
| 262 |
try:
|
| 263 |
os.remove(fpath)
|
| 264 |
except:
|
| 265 |
continue
|
| 266 |
|
| 267 |
+
|
| 268 |
+
def list_permanent_files():
|
| 269 |
+
flist = os.listdir(dataDir)
|
| 270 |
+
others = []
|
| 271 |
+
log_cnt = 0
|
| 272 |
+
wav_cnt = 0
|
| 273 |
+
other_cnt = 0
|
| 274 |
+
for fpath in flist:
|
| 275 |
+
if fpath.endswith('.txt'):
|
| 276 |
+
log_cnt += 1
|
| 277 |
+
elif fpath.endswith('.wav'):
|
| 278 |
+
wav_cnt += 1
|
| 279 |
+
else:
|
| 280 |
+
others.append(fpath)
|
| 281 |
+
other_cnt = len(others)
|
| 282 |
+
return (str(log_cnt), str(wav_cnt), str(other_cnt), str(others))
|
| 283 |
+
|
| 284 |
+
|
| 285 |
with gr.Blocks() as demo:
|
| 286 |
history = gr.State([])
|
| 287 |
password = gr.State("")
|
| 288 |
+
user = gr.State("unknown")
|
| 289 |
model = gr.State("gpt-4o-mini")
|
| 290 |
q = gr.State([])
|
| 291 |
qsave = gr.State([])
|
|
|
|
| 376 |
fp.write(response.content)
|
| 377 |
return [fname, q]
|
| 378 |
|
| 379 |
+
def gen_output_audio(q, user):
|
| 380 |
try:
|
| 381 |
fname = q.pop(0)
|
| 382 |
except:
|
| 383 |
+
final_clean_up(user)
|
| 384 |
return [None, gr.Audio(sources=None)]
|
| 385 |
return [fname, q]
|
| 386 |
|
|
|
|
| 415 |
audio_widget.pause_recording(fn=pause_message, outputs=[prompt_window])
|
| 416 |
reset_button.add(audio_widget)
|
| 417 |
audio_out = gr.Audio(autoplay=True, visible=False)
|
| 418 |
+
audio_out.stop(fn=gen_output_audio, inputs=[q, user], outputs = [audio_out, q])
|
| 419 |
speak_output.click(fn=initial_audio_output, inputs=[output_window, user_window], outputs=[audio_out, q])
|
| 420 |
output_window.change(fn=set_speak_button, inputs=output_window,outputs=speak_output)
|
| 421 |
+
# demo.unload(final_clean_up(user))
|
| 422 |
demo.launch(share=True)
|