#encoding = utf8 import logging import time from nlp import NLPCallback from utils import AsyncTaskQueue logger = logging.getLogger(__name__) class TTSBase(NLPCallback): def __init__(self, handle): self._handle = handle self._message_queue = AsyncTaskQueue() self._message_queue.start_worker() @property def handle(self): return self._handle @handle.setter def handle(self, value): self._handle = value async def _request(self, txt: str): print('_request:', txt) t = time.time() await self._on_request(txt) print(f'-------tts time:{time.time() - t:.4f}s') await self._on_handle() async def _on_request(self, text: str): pass async def _on_handle(self): pass def on_message(self, txt: str): self.message(txt) def message(self, txt): logger.info(f'message:{txt}') print(f'message:{txt}') self._message_queue.add_task(self._request(txt)) def stop(self): self._message_queue.stop()