fix: tests for end of speech message while mocking pyaudio
This commit is contained in:
@@ -46,6 +46,7 @@ class TestClientCallbacks(BaseTestCase):
|
|||||||
"language": self.client.language,
|
"language": self.client.language,
|
||||||
"task": self.client.task,
|
"task": self.client.task,
|
||||||
"model": self.client.model,
|
"model": self.client.model,
|
||||||
|
"use_vad": True
|
||||||
})
|
})
|
||||||
self.client.on_open(self.mock_ws_app)
|
self.client.on_open(self.mock_ws_app)
|
||||||
self.mock_ws_app.send.assert_called_with(expected_message)
|
self.mock_ws_app.send.assert_called_with(expected_message)
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class TestServerConnection(unittest.TestCase):
|
|||||||
class TestServerInferenceAccuracy(unittest.TestCase):
|
class TestServerInferenceAccuracy(unittest.TestCase):
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.server_process = subprocess.Popen(["python", "run_server.py"]) # Adjust the command as needed
|
cls.server_process = subprocess.Popen(["python", "run_server.py"])
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -134,4 +134,4 @@ class TestExceptionHandling(unittest.TestCase):
|
|||||||
for message in log.output:
|
for message in log.output:
|
||||||
print(message)
|
print(message)
|
||||||
print()
|
print()
|
||||||
self.assertTrue(any("Unexpected error: Unexpected error" in message for message in log.output))
|
self.assertTrue(any("Unexpected error" in message for message in log.output))
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ class Client:
|
|||||||
self.server_error = False
|
self.server_error = False
|
||||||
self.srt_file_path = srt_file_path
|
self.srt_file_path = srt_file_path
|
||||||
self.use_vad = use_vad
|
self.use_vad = use_vad
|
||||||
|
self.last_recieved_segment = None
|
||||||
|
|
||||||
if translate:
|
if translate:
|
||||||
self.task = "translate"
|
self.task = "translate"
|
||||||
@@ -123,6 +124,10 @@ class Client:
|
|||||||
(not self.transcript or
|
(not self.transcript or
|
||||||
float(seg['start']) >= float(self.transcript[-1]['end']))):
|
float(seg['start']) >= float(self.transcript[-1]['end']))):
|
||||||
self.transcript.append(seg)
|
self.transcript.append(seg)
|
||||||
|
# update last received segment and last valild responsne time
|
||||||
|
if self.last_recieved_segment is None or self.last_recieved_segment != segments[-1]["text"]:
|
||||||
|
self.last_response_recieved = time.time()
|
||||||
|
self.last_recieved_segment = segments[-1]["text"]
|
||||||
|
|
||||||
# Truncate to last 3 entries for brevity.
|
# Truncate to last 3 entries for brevity.
|
||||||
text = text[-3:]
|
text = text[-3:]
|
||||||
@@ -142,7 +147,6 @@ class Client:
|
|||||||
message (str): The received message from the server.
|
message (str): The received message from the server.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self.last_response_recieved = time.time()
|
|
||||||
message = json.loads(message)
|
message = json.loads(message)
|
||||||
|
|
||||||
if self.uid != message.get("uid"):
|
if self.uid != message.get("uid"):
|
||||||
@@ -158,6 +162,7 @@ class Client:
|
|||||||
self.recording = False
|
self.recording = False
|
||||||
|
|
||||||
if "message" in message.keys() and message["message"] == "SERVER_READY":
|
if "message" in message.keys() and message["message"] == "SERVER_READY":
|
||||||
|
self.last_response_recieved = time.time()
|
||||||
self.recording = True
|
self.recording = True
|
||||||
self.server_backend = message["backend"]
|
self.server_backend = message["backend"]
|
||||||
print(f"[INFO]: Server Running with backend {self.server_backend}")
|
print(f"[INFO]: Server Running with backend {self.server_backend}")
|
||||||
@@ -275,11 +280,11 @@ class Client:
|
|||||||
self.stream.write(data)
|
self.stream.write(data)
|
||||||
|
|
||||||
wavfile.close()
|
wavfile.close()
|
||||||
self.send_packet_to_server(Client.END_OF_AUDIO.encode('utf-8')) # Ensure it's sent as bytes
|
|
||||||
assert self.last_response_recieved
|
assert self.last_response_recieved
|
||||||
while time.time() - self.last_response_recieved < self.disconnect_if_no_response_for:
|
while time.time() - self.last_response_recieved < self.disconnect_if_no_response_for:
|
||||||
continue
|
continue
|
||||||
|
self.send_packet_to_server(Client.END_OF_AUDIO.encode('utf-8')) # Ensure it's sent as bytes
|
||||||
if self.server_backend == "faster_whisper":
|
if self.server_backend == "faster_whisper":
|
||||||
self.write_srt_file(self.srt_file_path)
|
self.write_srt_file(self.srt_file_path)
|
||||||
self.stream.close()
|
self.stream.close()
|
||||||
|
|||||||
@@ -207,6 +207,9 @@ class TranscriptionServer:
|
|||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
logging.error("Failed to decode JSON from client")
|
logging.error("Failed to decode JSON from client")
|
||||||
return False
|
return False
|
||||||
|
except ConnectionClosed:
|
||||||
|
logging.info("Connection closed by client")
|
||||||
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error during new connection initialization: {str(e)}")
|
logging.error(f"Error during new connection initialization: {str(e)}")
|
||||||
return False
|
return False
|
||||||
|
|||||||
Reference in New Issue
Block a user