qfuxa commited on
Commit
68ef316
·
1 Parent(s): c2bd36d

errors handling when end of transcription

Browse files
Files changed (1) hide show
  1. whisperlivekit/basic_server.py +24 -3
whisperlivekit/basic_server.py CHANGED
@@ -44,6 +44,11 @@ async def handle_websocket_results(websocket, results_generator):
44
  try:
45
  async for response in results_generator:
46
  await websocket.send_json(response)
 
 
 
 
 
47
  except Exception as e:
48
  logger.warning(f"Error in WebSocket results handler: {e}")
49
 
@@ -62,12 +67,28 @@ async def websocket_endpoint(websocket: WebSocket):
62
  while True:
63
  message = await websocket.receive_bytes()
64
  await audio_processor.process_audio(message)
 
 
 
 
 
65
  except WebSocketDisconnect:
66
- logger.warning("WebSocket disconnected.")
 
 
67
  finally:
68
- websocket_task.cancel()
 
 
 
 
 
 
 
 
 
69
  await audio_processor.cleanup()
70
- logger.info("WebSocket endpoint cleaned up.")
71
 
72
  def main():
73
  """Entry point for the CLI command."""
 
44
  try:
45
  async for response in results_generator:
46
  await websocket.send_json(response)
47
+ # when the results_generator finishes it means all audio has been processed
48
+ logger.info("Results generator finished. Sending 'ready_to_stop' to client.")
49
+ await websocket.send_json({"type": "ready_to_stop"})
50
+ except WebSocketDisconnect:
51
+ logger.info("WebSocket disconnected while handling results (client likely closed connection).")
52
  except Exception as e:
53
  logger.warning(f"Error in WebSocket results handler: {e}")
54
 
 
67
  while True:
68
  message = await websocket.receive_bytes()
69
  await audio_processor.process_audio(message)
70
+ except KeyError as e:
71
+ if 'bytes' in str(e):
72
+ logger.warning(f"Client has closed the connection.")
73
+ else:
74
+ logger.error(f"Unexpected KeyError in websocket_endpoint: {e}", exc_info=True)
75
  except WebSocketDisconnect:
76
+ logger.info("WebSocket disconnected by client during message receiving loop.")
77
+ except Exception as e:
78
+ logger.error(f"Unexpected error in websocket_endpoint main loop: {e}", exc_info=True)
79
  finally:
80
+ logger.info("Cleaning up WebSocket endpoint...")
81
+ if not websocket_task.done():
82
+ websocket_task.cancel()
83
+ try:
84
+ await websocket_task
85
+ except asyncio.CancelledError:
86
+ logger.info("WebSocket results handler task was cancelled.")
87
+ except Exception as e:
88
+ logger.warning(f"Exception while awaiting websocket_task completion: {e}")
89
+
90
  await audio_processor.cleanup()
91
+ logger.info("WebSocket endpoint cleaned up successfully.")
92
 
93
  def main():
94
  """Entry point for the CLI command."""