auto detect language ppython client
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user