datbkpro commited on
Commit
3a6e880
·
verified ·
1 Parent(s): 1b5721c

Update ui/tabs.py

Browse files
Files changed (1) hide show
  1. ui/tabs.py +25 -2
ui/tabs.py CHANGED
@@ -266,12 +266,20 @@ def create_streaming_voice_tab(streaming_service: StreamingVoiceService):
266
  autoplay=True
267
  )
268
 
 
 
 
 
 
 
 
 
269
  def start_vad():
270
  """Bắt đầu VAD listening"""
271
  def vad_callback(result):
272
  """Callback khi VAD phát hiện speech"""
273
- # Cập nhật UI với kết quả
274
- # Cần sử dụng Gradio events để cập nhật real-time
275
  print(f"VAD Result: {result}")
276
 
277
  success = streaming_service.start_listening(vad_callback)
@@ -291,6 +299,7 @@ def create_streaming_voice_tab(streaming_service: StreamingVoiceService):
291
  return "❌ Không có âm thanh", "Vui lòng nói lại", None, "Đang chờ...", {}
292
 
293
  try:
 
294
  result = streaming_service.process_streaming_audio(audio_data)
295
  state = streaming_service.get_conversation_state()
296
  status = "✅ Đã xử lý manual audio"
@@ -305,6 +314,12 @@ def create_streaming_voice_tab(streaming_service: StreamingVoiceService):
305
  state = streaming_service.get_conversation_state()
306
  return "", "", None, "🗑️ Đã xóa hội thoại", state
307
 
 
 
 
 
 
 
308
  # Event handlers
309
  start_vad_btn.click(
310
  start_vad,
@@ -316,6 +331,7 @@ def create_streaming_voice_tab(streaming_service: StreamingVoiceService):
316
  outputs=[status_display, state_display]
317
  )
318
 
 
319
  microphone.stream(
320
  process_manual_audio,
321
  inputs=[microphone],
@@ -326,6 +342,13 @@ def create_streaming_voice_tab(streaming_service: StreamingVoiceService):
326
  clear_conversation,
327
  outputs=[realtime_transcription, ai_response, tts_output, status_display, state_display]
328
  )
 
 
 
 
 
 
 
329
 
330
  return streaming_tab
331
  def create_image_tab(image_service: ImageService):
 
266
  autoplay=True
267
  )
268
 
269
+ # Biến để lưu kết quả từ VAD callback
270
+ vad_result = gr.State(value={
271
+ 'transcription': "",
272
+ 'response': "",
273
+ 'tts_audio': None,
274
+ 'status': 'waiting'
275
+ })
276
+
277
  def start_vad():
278
  """Bắt đầu VAD listening"""
279
  def vad_callback(result):
280
  """Callback khi VAD phát hiện speech"""
281
+ # Lưu kết quả vào state
282
+ vad_result.value = result
283
  print(f"VAD Result: {result}")
284
 
285
  success = streaming_service.start_listening(vad_callback)
 
299
  return "❌ Không có âm thanh", "Vui lòng nói lại", None, "Đang chờ...", {}
300
 
301
  try:
302
+ # SỬA LỖI: Gọi đúng phương thức
303
  result = streaming_service.process_streaming_audio(audio_data)
304
  state = streaming_service.get_conversation_state()
305
  status = "✅ Đã xử lý manual audio"
 
314
  state = streaming_service.get_conversation_state()
315
  return "", "", None, "🗑️ Đã xóa hội thoại", state
316
 
317
+ def update_from_vad():
318
+ """Cập nhật UI từ kết quả VAD"""
319
+ result = vad_result.value
320
+ state = streaming_service.get_conversation_state()
321
+ return result['transcription'], result['response'], result['tts_audio'], "✅ VAD đã xử lý", state
322
+
323
  # Event handlers
324
  start_vad_btn.click(
325
  start_vad,
 
331
  outputs=[status_display, state_display]
332
  )
333
 
334
+ # SỬA LỖI: Sử dụng đúng phương thức stream
335
  microphone.stream(
336
  process_manual_audio,
337
  inputs=[microphone],
 
342
  clear_conversation,
343
  outputs=[realtime_transcription, ai_response, tts_output, status_display, state_display]
344
  )
345
+
346
+ # Timer để cập nhật kết quả từ VAD
347
+ streaming_tab.load(
348
+ update_from_vad,
349
+ outputs=[realtime_transcription, ai_response, tts_output, status_display, state_display],
350
+ every=1 # Cập nhật mỗi giây
351
+ )
352
 
353
  return streaming_tab
354
  def create_image_tab(image_service: ImageService):