haepada commited on
Commit
a34fab4
·
verified ·
1 Parent(s): 36c54bd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -36
app.py CHANGED
@@ -343,10 +343,8 @@ def save_reflection(text, state):
343
  return state, []
344
 
345
  def create_interface():
346
- """Gradio 인터페이스 생성"""
347
  db = SimpleDB()
348
 
349
- # 초기 상태값 설정
350
  initial_state = {
351
  "user_name": "",
352
  "baseline_features": None,
@@ -359,93 +357,109 @@ def create_interface():
359
  with gr.Blocks(theme=gr.themes.Soft()) as app:
360
  state = gr.State(value=initial_state)
361
 
362
- header = gr.Markdown("# 디지털 굿판")
363
- user_display = gr.Markdown("")
364
 
365
- with gr.Tabs() as tabs:
366
- with gr.Tab("입장"):
367
  gr.Markdown(WELCOME_MESSAGE)
368
  name_input = gr.Textbox(
369
  label="이름을 알려주세요",
370
- placeholder="이름을 입력해주세요"
 
371
  )
372
  worldview_display = gr.Markdown(visible=False)
373
- start_btn = gr.Button("여정 시작하기")
374
 
375
- with gr.Tab("기준 설정"):
376
  gr.Markdown("""### 축원의 문장을 평온한 마음으로 읽어주세요""")
377
  gr.Markdown("'당신의 건강과 행복이 늘 가득하기를'")
378
  baseline_audio = gr.Audio(
379
  label="축원 문장 녹음하기",
380
- type="numpy",
381
- source="microphone",
382
- streaming=False
383
  )
384
- set_baseline_btn = gr.Button("기준점 설정 완료")
385
  baseline_status = gr.Markdown("")
386
 
387
- with gr.Tab("청신"):
388
  gr.Markdown("## 청신 - 소리로 정화하기")
389
- play_music_btn = gr.Button("온천천의 소리 듣기")
390
  with gr.Row():
391
  audio = gr.Audio(
392
  value="oncheoncheon_sound.wav",
393
  type="filepath",
394
  label="온천천의 소리",
395
  interactive=False,
396
- autoplay=False,
397
  visible=True
398
  )
399
  with gr.Column():
400
  reflection_input = gr.Textbox(
401
  label="지금 이 순간의 감상을 자유롭게 적어보세요",
402
- lines=3
 
403
  )
404
- save_btn = gr.Button("감상 저장하기")
405
  reflections_display = gr.Dataframe(
406
  headers=["시간", "감상", "감정 분석"],
407
  label="기록된 감상들",
408
  value=[[]],
409
- interactive=False
 
410
  )
411
 
412
- with gr.Tab("기원"):
413
  gr.Markdown("## 기원 - 소원을 전해보세요")
414
  with gr.Row():
415
  with gr.Column():
416
  voice_input = gr.Audio(
417
  label="소원을 나누고 싶은 마음을 말해주세요",
418
- type="numpy",
419
- source="microphone",
420
- streaming=False
421
  )
422
- clear_btn = gr.Button("녹음 지우기")
423
- analyze_btn = gr.Button("소원 분석하기")
 
424
 
425
  with gr.Column():
426
- transcribed_text = gr.Textbox(label="인식된 텍스트")
427
- voice_emotion = gr.Textbox(label="음성 감정 분석")
428
- text_emotion = gr.Textbox(label="텍스트 감정 분석")
 
 
 
 
 
 
 
 
 
429
 
430
- with gr.Tab("송신"):
431
  gr.Markdown("## 송신 - 마음의 그림을 남기고, 보내기")
432
  final_prompt = gr.Textbox(
433
  label="생성된 프롬프트",
434
  interactive=False,
435
  lines=3
436
  )
437
- generate_btn = gr.Button("마음의 그림 그리기")
438
- result_image = gr.Image(label="생성된 이미지")
 
 
 
439
 
440
  gr.Markdown("## 마지막 감상을 남겨주세요")
441
  final_reflection = gr.Textbox(
442
  label="마지막 감상",
443
- placeholder="한 줄로 남겨주세요..."
 
444
  )
445
- save_final_btn = gr.Button("감상 남기기")
446
  save_final_status = gr.Markdown("")
447
 
448
- # 이벤트 연결
449
  start_btn.click(
450
  fn=lambda name, state: (
451
  WORLDVIEW_MESSAGE if name.strip() else "이름을 입력해주세요",
@@ -457,7 +471,10 @@ def create_interface():
457
  )
458
 
459
  set_baseline_btn.click(
460
- fn=lambda x, s: ({**s, "baseline_features": calculate_baseline_features(x)}, "기준점이 설정되었습니다."),
 
 
 
461
  inputs=[baseline_audio, state],
462
  outputs=[state, baseline_status]
463
  )
@@ -510,4 +527,3 @@ if __name__ == "__main__":
510
  server_name="0.0.0.0",
511
  server_port=7860
512
  )
513
-
 
343
  return state, []
344
 
345
  def create_interface():
 
346
  db = SimpleDB()
347
 
 
348
  initial_state = {
349
  "user_name": "",
350
  "baseline_features": None,
 
357
  with gr.Blocks(theme=gr.themes.Soft()) as app:
358
  state = gr.State(value=initial_state)
359
 
360
+ gr.Markdown("# 디지털 굿판")
 
361
 
362
+ with gr.Tabs(selected=0) as tabs: # selected 속성 추가
363
+ with gr.TabItem("입장") as tab_entrance: # Tab -> TabItem
364
  gr.Markdown(WELCOME_MESSAGE)
365
  name_input = gr.Textbox(
366
  label="이름을 알려주세요",
367
+ placeholder="이름을 입력해주세요",
368
+ interactive=True # 명시적으로 지정
369
  )
370
  worldview_display = gr.Markdown(visible=False)
371
+ start_btn = gr.Button("여정 시작하기", variant="primary") # variant 추가
372
 
373
+ with gr.TabItem("기준 설정") as tab_baseline:
374
  gr.Markdown("""### 축원의 문장을 평온한 마음으로 읽어주세요""")
375
  gr.Markdown("'당신의 건강과 행복이 늘 가득하기를'")
376
  baseline_audio = gr.Audio(
377
  label="축원 문장 녹음하기",
378
+ sources="microphone", # source -> sources
379
+ streaming=False,
380
+ type="numpy"
381
  )
382
+ set_baseline_btn = gr.Button("기준점 설정 완료", variant="primary")
383
  baseline_status = gr.Markdown("")
384
 
385
+ with gr.TabItem("청신") as tab_listen:
386
  gr.Markdown("## 청신 - 소리로 정화하기")
387
+ play_music_btn = gr.Button("온천천의 소리 듣기", variant="secondary")
388
  with gr.Row():
389
  audio = gr.Audio(
390
  value="oncheoncheon_sound.wav",
391
  type="filepath",
392
  label="온천천의 소리",
393
  interactive=False,
394
+ show_download_button=True, # 다운로드 버튼 추가
395
  visible=True
396
  )
397
  with gr.Column():
398
  reflection_input = gr.Textbox(
399
  label="지금 이 순간의 감상을 자유롭게 적어보세요",
400
+ lines=3,
401
+ max_lines=5 # 최대 라인 수 지정
402
  )
403
+ save_btn = gr.Button("감상 저장하기", variant="secondary")
404
  reflections_display = gr.Dataframe(
405
  headers=["시간", "감상", "감정 분석"],
406
  label="기록된 감상들",
407
  value=[[]],
408
+ interactive=False,
409
+ wrap=True # 긴 텍스트 wrap 처리
410
  )
411
 
412
+ with gr.TabItem("기원") as tab_wish:
413
  gr.Markdown("## 기원 - 소원을 전해보세요")
414
  with gr.Row():
415
  with gr.Column():
416
  voice_input = gr.Audio(
417
  label="소원을 나누고 싶은 마음을 말해주세요",
418
+ sources="microphone",
419
+ streaming=False,
420
+ type="numpy"
421
  )
422
+ with gr.Row():
423
+ clear_btn = gr.Button("녹음 지우기", variant="secondary")
424
+ analyze_btn = gr.Button("소원 분석하기", variant="primary")
425
 
426
  with gr.Column():
427
+ transcribed_text = gr.Textbox(
428
+ label="인식된 텍스트",
429
+ interactive=False
430
+ )
431
+ voice_emotion = gr.Textbox(
432
+ label="음성 감정 분석",
433
+ interactive=False
434
+ )
435
+ text_emotion = gr.Textbox(
436
+ label="텍스트 감정 분석",
437
+ interactive=False
438
+ )
439
 
440
+ with gr.TabItem("송신") as tab_send:
441
  gr.Markdown("## 송신 - 마음의 그림을 남기고, 보내기")
442
  final_prompt = gr.Textbox(
443
  label="생성된 프롬프트",
444
  interactive=False,
445
  lines=3
446
  )
447
+ generate_btn = gr.Button("마음의 그림 그리기", variant="primary")
448
+ result_image = gr.Image(
449
+ label="생성된 이미지",
450
+ show_download_button=True # 다운로드 버튼 추가
451
+ )
452
 
453
  gr.Markdown("## 마지막 감상을 남겨주세요")
454
  final_reflection = gr.Textbox(
455
  label="마지막 감상",
456
+ placeholder="한 줄로 남겨주세요...",
457
+ max_lines=3
458
  )
459
+ save_final_btn = gr.Button("감상 남기기", variant="primary")
460
  save_final_status = gr.Markdown("")
461
 
462
+ # 이벤트 연결 - gr.on 사용
463
  start_btn.click(
464
  fn=lambda name, state: (
465
  WORLDVIEW_MESSAGE if name.strip() else "이름을 입력해주세요",
 
471
  )
472
 
473
  set_baseline_btn.click(
474
+ fn=lambda x, s: (
475
+ {**s, "baseline_features": calculate_baseline_features(x)},
476
+ "기준점이 설정되었습니다."
477
+ ),
478
  inputs=[baseline_audio, state],
479
  outputs=[state, baseline_status]
480
  )
 
527
  server_name="0.0.0.0",
528
  server_port=7860
529
  )