haepada commited on
Commit
940be28
·
verified ·
1 Parent(s): 9f6e4e4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -18
app.py CHANGED
@@ -859,9 +859,27 @@ def create_interface():
859
  margin: 10px 0 !important;
860
  }
861
 
862
- .blessing-status-box p {
863
- margin: 0 0 10px 0 !important;
864
- line-height: 1.5 !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
865
  }
866
  """
867
 
@@ -898,9 +916,13 @@ def create_interface():
898
 
899
  # 3단계: 축원 의식
900
  blessing_section = gr.Column(visible=False)
 
901
  with blessing_section:
902
  gr.Markdown("### 축원의식을 시작하겠습니다")
903
- gr.Markdown("'명짐 복짐 짊어지고 안가태평하시기를 비도발원 축원 드립니다'")
 
 
 
904
 
905
  # 축원 문장 녹음하기
906
  baseline_audio = gr.Audio(
@@ -910,16 +932,17 @@ def create_interface():
910
  streaming=False
911
  )
912
 
913
- # elem_classes를 사용하여 스타일 적용
914
  blessing_status = gr.Markdown(
915
- "분석 결과가 여기에 표시됩니다.",
916
  elem_id="blessing-status",
917
  elem_classes="blessing-status-box"
918
  )
919
 
920
- # 상태 분석 결과창 구분
921
  set_baseline_btn = gr.Button("축원문 분석하기", variant="primary")
922
- send_blessing_btn = gr.Button("축원 보내기", variant="secondary", visible=False)
 
923
 
924
 
925
  # 4단계: 굿판 입장 안내
@@ -1148,23 +1171,55 @@ def create_interface():
1148
 
1149
  def handle_blessing_complete(audio, state):
1150
  if audio is None:
1151
- return state, "음성을 먼저 녹음해주세요.", gr.update(visible=True), gr.update(visible=False)
1152
-
 
 
 
 
 
1153
  try:
1154
- status_msg = "축원문 분석 중..."
1155
  sr, y = audio
1156
  features = calculate_baseline_features((sr, y))
1157
 
1158
  if features:
1159
  state = safe_state_update(state, {"baseline_features": features})
1160
- status_msg = "분석 완료되었습니다. 축원을 보내세요."
1161
- return state, status_msg, gr.update(visible=False), gr.update(visible=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1162
 
1163
- return state, "분석에 실패했습니다. 다시 시도해주세요.", gr.update(visible=True), gr.update(visible=False)
1164
-
1165
  except Exception as e:
1166
- return state, f"오류 발생: {str(e)}", gr.update(visible=True), gr.update(visible=False)
1167
-
 
 
 
 
 
1168
  def handle_enter():
1169
  return gr.update(selected=1) # 청신 탭으로 이동
1170
 
@@ -1326,7 +1381,17 @@ def create_interface():
1326
  set_baseline_btn.click(
1327
  fn=handle_blessing_complete,
1328
  inputs=[baseline_audio, state],
1329
- outputs=[state, blessing_status, blessing_section, entry_guide_section] # baseline_status -> blessing_status
 
 
 
 
 
 
 
 
 
 
1330
  )
1331
 
1332
  enter_btn.click(
 
859
  margin: 10px 0 !important;
860
  }
861
 
862
+ .blessing-status-box {
863
+ min-height: 250px !important;
864
+ max-height: 400px !important;
865
+ overflow-y: auto !important;
866
+ padding: 20px !important;
867
+ border: 1px solid #ddd !important;
868
+ border-radius: 12px !important;
869
+ background-color: #f8f9fa !important;
870
+ margin: 15px 0 !important;
871
+ font-size: 16px !important;
872
+ line-height: 1.6 !important;
873
+ }
874
+
875
+ .blessing-status-box h3 {
876
+ color: #2a5d8f !important;
877
+ margin-bottom: 15px !important;
878
+ }
879
+
880
+ .blessing-status-box strong {
881
+ color: #4a90e2 !important;
882
+ }
883
  }
884
  """
885
 
 
916
 
917
  # 3단계: 축원 의식
918
  blessing_section = gr.Column(visible=False)
919
+ blessing_section = gr.Column(visible=False)
920
  with blessing_section:
921
  gr.Markdown("### 축원의식을 시작하겠습니다")
922
+ gr.Markdown("""
923
+ 축원 문장을 읽어주세요:
924
+ '명짐 복짐 짊어지고 안가태평하시기를 비도발원 축원 드립니다'
925
+ """)
926
 
927
  # 축원 문장 녹음하기
928
  baseline_audio = gr.Audio(
 
932
  streaming=False
933
  )
934
 
935
+ # 상태 표시창 수정
936
  blessing_status = gr.Markdown(
937
+ value="축원 문장을 녹음한 후 분석하기 버튼을 눌러주세요.",
938
  elem_id="blessing-status",
939
  elem_classes="blessing-status-box"
940
  )
941
 
942
+ # 분석 버튼과 진행 버튼 분리
943
  set_baseline_btn = gr.Button("축원문 분석하기", variant="primary")
944
+ analysis_complete = gr.Markdown(visible=False) # 분석 완료 상태 표시
945
+ continue_to_next = gr.Button("청신 의식 시작하기", variant="primary", visible=False)
946
 
947
 
948
  # 4단계: 굿판 입장 안내
 
1171
 
1172
  def handle_blessing_complete(audio, state):
1173
  if audio is None:
1174
+ return (
1175
+ state,
1176
+ "음성을 먼저 녹음해주세요.",
1177
+ gr.update(visible=False), # analysis_complete
1178
+ gr.update(visible=False) # continue_to_next
1179
+ )
1180
+
1181
  try:
1182
+ status_msg = "축원문을 분석중입니다..."
1183
  sr, y = audio
1184
  features = calculate_baseline_features((sr, y))
1185
 
1186
  if features:
1187
  state = safe_state_update(state, {"baseline_features": features})
1188
+ detailed_msg = f"""
1189
+ ### 축원 분석이 완료되었습니다
1190
+
1191
+ **음성 특성 분석:**
1192
+ - 음성 강도: {features['energy']:.2f}
1193
+ - 음성 속도: {features['tempo']:.2f}
1194
+ - 음성 높낮이: {features['pitch']:.2f}
1195
+ - 음성 크기: {features['volume']:.2f}
1196
+
1197
+ 이제 청신 의식을 시작할 준비가 되었습니다.
1198
+ 아래 '청신 의식 시작하기' 버튼을 눌러 다음 단계로 진행해주세요.
1199
+ """
1200
+
1201
+ return (
1202
+ state,
1203
+ detailed_msg,
1204
+ gr.update(visible=True, value="분석 완료"), # analysis_complete
1205
+ gr.update(visible=True) # continue_to_next
1206
+ )
1207
+
1208
+ return (
1209
+ state,
1210
+ "분석에 실패했습니다. 다��� 시도해주세요.",
1211
+ gr.update(visible=False),
1212
+ gr.update(visible=False)
1213
+ )
1214
 
 
 
1215
  except Exception as e:
1216
+ return (
1217
+ state,
1218
+ f"오류가 발생했습니다: {str(e)}",
1219
+ gr.update(visible=False),
1220
+ gr.update(visible=False)
1221
+ )
1222
+
1223
  def handle_enter():
1224
  return gr.update(selected=1) # 청신 탭으로 이동
1225
 
 
1381
  set_baseline_btn.click(
1382
  fn=handle_blessing_complete,
1383
  inputs=[baseline_audio, state],
1384
+ outputs=[
1385
+ state,
1386
+ blessing_status,
1387
+ analysis_complete,
1388
+ continue_to_next
1389
+ ]
1390
+ )
1391
+
1392
+ continue_to_next.click(
1393
+ fn=lambda: (gr.update(selected=1)),
1394
+ outputs=[tabs]
1395
  )
1396
 
1397
  enter_btn.click(