Davidliu 3 kuukautta sitten
vanhempi
commit
fe61c8f2c0
1 muutettua tiedostoa jossa 27 lisäystä ja 27 poistoa
  1. 27 27
      src/core/voip/asr.py

+ 27 - 27
src/core/voip/asr.py

@@ -72,7 +72,7 @@ class TestSt:
         # self.is_closed = False
         # self.lock = threading.Lock()
         self.logger = logger
-        self.__ready = False
+        self.__event = threading.Event()
         self.__th = threading.Thread(target=self.__test_run)
         self.__id = tid
         self.message_receiver = message_receiver
@@ -85,10 +85,7 @@ class TestSt:
 
     def send_audio(self, audio_data):
         if self.sr:
-            if self.__ready:
-                self.sr.send_audio(audio_data)
-            else:
-                self.logger.debug("[%s]Sending audio data of length:%s", self.__id, len(audio_data))
+            self.sr.send_audio(audio_data)
             # self.logger.debug("Audio data sent.")
         # if self.sr and not self.is_closed:
         #     with self.lock:
@@ -115,27 +112,30 @@ class TestSt:
     def __test_run(self):
         self.logger.debug("Thread:%s start..",self.__id)
         nls.enableTrace(True)
-        self.sr = nls.NlsSpeechTranscriber(
-            url=URL,
-            token=self._Token,
-            appkey=APPKEY,
-            on_sentence_begin=self.test_on_sentence_begin,
-            on_sentence_end=self.test_on_sentence_end,
-            on_start=self.test_on_start,
-            on_result_changed=self.test_on_result_chg,
-            on_completed=self.test_on_completed,
-            on_error=self.test_on_error,
-            on_close=self.test_on_close,
-            callback_args=[self.__id]
-        )
-        self.sr.start(
-            aformat="pcm",
-            enable_intermediate_result=True,
-            enable_punctuation_prediction=True,
-            enable_inverse_text_normalization=True
-        )
-        self.sr.ctrl(ex={'max_sentence_silence': '1200ms', 'disfluency': True,'enable_words': True })
-        self.logger.debug(f"[{self.__id}]ASR session started.")
+        self.__event.clear()
+        while not self.__event.is_set():
+            self.sr = nls.NlsSpeechTranscriber(
+                url=URL,
+                token=self._Token,
+                appkey=APPKEY,
+                on_sentence_begin=self.test_on_sentence_begin,
+                on_sentence_end=self.test_on_sentence_end,
+                on_start=self.test_on_start,
+                on_result_changed=self.test_on_result_chg,
+                on_completed=self.test_on_completed,
+                on_error=self.test_on_error,
+                on_close=self.test_on_close,
+                callback_args=[self.__id]
+            )
+            self.sr.start(
+                aformat="pcm",
+                enable_intermediate_result=True,
+                enable_punctuation_prediction=True,
+                enable_inverse_text_normalization=True
+            )
+            self.sr.ctrl(ex={'max_sentence_silence': '1200ms', 'disfluency': True,'enable_words': True })
+            self.logger.debug(f"[{self.__id}]ASR session started.")
+            self.__event.wait(timeout=.5)
 
     def test_on_sentence_begin(self, message, *args):
         # pass
@@ -149,7 +149,7 @@ class TestSt:
             self.message_receiver(message, *args)
 
     def test_on_start(self, message, *args):
-        self.__ready = True
+        self.__event.set()
         self.logger.debug("[%s]test_on_start:%s", self.__id, message)
         pass