errors handling when end of transcription
Browse files
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.
|
|
|
|
|
67 |
finally:
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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."""
|