diff --git a/human/audio_mal_handler.py b/human/audio_mal_handler.py index 008160f..e0b2912 100644 --- a/human/audio_mal_handler.py +++ b/human/audio_mal_handler.py @@ -34,7 +34,7 @@ class AudioMalHandler(AudioHandler): logging.info('chunk2mal run') while self._exit_event.is_set(): self._run_step() - time.sleep(0.01) + time.sleep(0.3) logging.info('chunk2mal exit') diff --git a/human/human_context.py b/human/human_context.py index ff172ca..b6991a1 100644 --- a/human/human_context.py +++ b/human/human_context.py @@ -104,7 +104,7 @@ class HumanContext: self._tts_handle = TTSAudioSplitHandle(self, self._mal_handler) self._tts = TTSEdgeHttp(self._tts_handle) split = PunctuationSplit() - self._nlp = DouBao(split, self._tts) + self._nlp = DouBao(self, split, self._tts) self._asr = SherpaNcnnAsr() self._asr.attach(self._nlp) @@ -113,3 +113,4 @@ class HumanContext: self._tts.pause_talk() self._mal_handler.pause_talk() self._infer_handler.pause_talk() + self._render_handler.pause_talk() diff --git a/human/human_render.py b/human/human_render.py index b6825bd..4210b75 100644 --- a/human/human_render.py +++ b/human/human_render.py @@ -40,6 +40,10 @@ class HumanRender(AudioHandler): type_ = 0 self._video_render.put((res_frame, idx, type_)) + def pause_talk(self): + self._voice_render.pause_talk() + self._video_render.pause_talk() + def stop(self): self._voice_render.stop() self._video_render.stop() diff --git a/nlp/nlp_base.py b/nlp/nlp_base.py index facf678..ef8ceb2 100644 --- a/nlp/nlp_base.py +++ b/nlp/nlp_base.py @@ -8,8 +8,9 @@ logger = logging.getLogger(__name__) class NLPBase(AsrObserver): - def __init__(self, split, callback=None): + def __init__(self, context, split, callback=None): self._ask_queue = AsyncTaskQueue() + self._context = context self._split_handle = split self._callback = callback @@ -36,6 +37,7 @@ class NLPBase(AsrObserver): def completed(self, message: str): logger.info(f'complete:{message}') + self._context.pause_talk() self.ask(message) def ask(self, question): diff --git a/nlp/nlp_doubao.py b/nlp/nlp_doubao.py index 449519f..bed4d4d 100644 --- a/nlp/nlp_doubao.py +++ b/nlp/nlp_doubao.py @@ -10,8 +10,8 @@ logger = logging.getLogger(__name__) class DouBao(NLPBase): - def __init__(self, split, callback=None): - super().__init__(split, callback) + def __init__(self, context, split, callback=None): + super().__init__(context, split, callback) logger.info("DouBao init") # Access Key ID # AKLTYTdmOTBmNWFjODkxNDE2Zjk3MjU0NjRhM2JhM2IyN2Y diff --git a/render/base_render.py b/render/base_render.py index 3911e5c..7bb8e6b 100644 --- a/render/base_render.py +++ b/render/base_render.py @@ -30,6 +30,9 @@ class BaseRender(ABC): ps = time.time() - self._play_clock.start_time self._queue.put_nowait((frame, ps)) + def pause_talk(self): + self._queue.queue.clear() + def stop(self): self._queue.queue.clear() self._exit_event.clear()