ciyidogan commited on
Commit
0f7e2c9
·
verified ·
1 Parent(s): 306e278

Update websocket_handler.py

Browse files
Files changed (1) hide show
  1. websocket_handler.py +17 -13
websocket_handler.py CHANGED
@@ -409,16 +409,27 @@ class RealtimeSession:
409
 
410
  elif action == "audio_ended":
411
  # Audio playback ended on client
 
 
412
  if session.state == ConversationState.PLAYING_AUDIO:
413
- log_info(f"🎵 Client reported audio ended", session_id=session.session.session_id)
414
  await session.change_state(ConversationState.LISTENING)
415
  await websocket.send_json({
416
  "type": "state_change",
417
  "from": "playing_audio",
418
  "to": "listening"
419
  })
420
- # STT'yi yeniden başlat
421
- success = await session.restart_stt_if_needed()
 
 
 
 
 
 
 
 
 
422
 
423
  # STT hazır olduğunda sinyal gönder
424
  if success and session.is_streaming:
@@ -428,12 +439,14 @@ class RealtimeSession:
428
  "message": "STT is ready to receive audio"
429
  })
430
  else:
431
- log_error(f"❌ STT not ready after restart", session_id=session.session.session_id)
432
  await websocket.send_json({
433
  "type": "error",
434
  "error_type": "stt_init_failed",
435
  "message": "Failed to initialize STT after audio playback"
436
  })
 
 
437
 
438
  elif action == "restart_stt":
439
  # Manual STT restart request
@@ -441,15 +454,6 @@ class RealtimeSession:
441
  await session.stop_stt_streaming()
442
  await session.restart_stt_if_needed()
443
 
444
- async def cleanup(self):
445
- """Clean up resources"""
446
- try:
447
- self.is_websocket_active = False
448
- await self.stop_stt_streaming() # STT'yi düzgün durdur
449
- log_info(f"Cleaned up realtime session", session_id=self.session.session_id)
450
- except Exception as e:
451
- log_warning(f"Cleanup error", error=str(e), session_id=self.session.session_id)
452
-
453
  # ========================= MAIN HANDLER =========================
454
  async def websocket_endpoint(websocket: WebSocket, session_id: str):
455
  """Main WebSocket endpoint for real-time conversation"""
 
409
 
410
  elif action == "audio_ended":
411
  # Audio playback ended on client
412
+ log_info(f"🎵 Client reported audio ended, current state: {session.state.value}", session_id=session.session.session_id)
413
+
414
  if session.state == ConversationState.PLAYING_AUDIO:
415
+ # State'i listening'e çevir
416
  await session.change_state(ConversationState.LISTENING)
417
  await websocket.send_json({
418
  "type": "state_change",
419
  "from": "playing_audio",
420
  "to": "listening"
421
  })
422
+
423
+ # STT'yi başlat
424
+ log_info(f"🎤 Starting STT after audio playback ended", session_id=session.session.session_id)
425
+
426
+ # Önce mevcut STT varsa temizle
427
+ if session.stt_manager:
428
+ await session.stop_stt_streaming()
429
+ await asyncio.sleep(0.1) # Kısa bekleme
430
+
431
+ # Yeni STT başlat
432
+ success = await session.initialize_stt()
433
 
434
  # STT hazır olduğunda sinyal gönder
435
  if success and session.is_streaming:
 
439
  "message": "STT is ready to receive audio"
440
  })
441
  else:
442
+ log_error(f"❌ STT initialization failed", session_id=session.session.session_id)
443
  await websocket.send_json({
444
  "type": "error",
445
  "error_type": "stt_init_failed",
446
  "message": "Failed to initialize STT after audio playback"
447
  })
448
+ else:
449
+ log_warning(f"⚠️ audio_ended received but state is not playing_audio: {session.state.value}", session_id=session.session.session_id)
450
 
451
  elif action == "restart_stt":
452
  # Manual STT restart request
 
454
  await session.stop_stt_streaming()
455
  await session.restart_stt_if_needed()
456
 
 
 
 
 
 
 
 
 
 
457
  # ========================= MAIN HANDLER =========================
458
  async def websocket_endpoint(websocket: WebSocket, session_id: str):
459
  """Main WebSocket endpoint for real-time conversation"""