From eddd615a9dda5a9fea235b8c9c9790a94ccb8447 Mon Sep 17 00:00:00 2001 From: makaveli10 Date: Fri, 28 Jul 2023 15:34:50 +0800 Subject: [PATCH] auto detect language ppython client --- client.py | 14 ++++++++------ server.py | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/client.py b/client.py index b38f7bd..f912beb 100644 --- a/client.py +++ b/client.py @@ -24,11 +24,18 @@ language = None def on_message(ws, message): - global START_RECORDING + global START_RECORDING, language message = json.loads(message) if message == "SERVER_READY": START_RECORDING = True return + + if isinstance(message, dict): + language = message.get("language") + lang_prob = message.get("language_prob") + print(f"Server detected language {language} with probability {lang_prob}") + return + text = [] if len(message): for seg in message: @@ -66,7 +73,6 @@ def on_open(ws): 'task': task })) - class Client: def __init__(self, host=None, port=None): @@ -254,10 +260,6 @@ if __name__=="__main__": while not START_RECORDING: pass print("Server Ready!") - if os.name=='nt': - os.system('cls') - else: - os.system('clear') if opt.audio is not None: resampled_file = resample(opt.audio) diff --git a/server.py b/server.py index 483e5c4..9879b9f 100644 --- a/server.py +++ b/server.py @@ -140,6 +140,24 @@ class ServeClient: """ Process audio stream in an infinite loop. """ + # detect language + if self.language is None: + # wait for 30s of audio + while self.frames_np is None or self.frames_np.shape[0] < 30*self.RATE: + time.sleep(1) + input_bytes = self.frames_np[-30*self.RATE:].copy() + self.frames_np = None + duration = input_bytes.shape[0] / self.RATE + + self.language, lang_prob = self.transcriber.transcribe( + input_bytes, + initial_prompt=None, + language=self.language, + task=self.task + ) + logging.info(f"Detected language {self.language} with probability {lang_prob}") + self.websocket.send(json.dumps({"language": self.language, "language_prob": lang_prob})) + while True: if self.exit: logging.info("Exiting speech to text thread")