from common.log import logger from bot import bot_factory from common.singleton import singleton from voice import voice_factory @singleton class Bridge(object): def __init__(self): self.btype={ "chat": "chatGPT", "voice_to_text": "openai", "text_to_voice": "baidu" } self.bots={} def get_bot(self,typename): if self.bots.get(typename) is None: logger.info("create bot {} for {}".format(self.btype[typename],typename)) if typename == "text_to_voice": self.bots[typename] = voice_factory.create_voice(self.btype[typename]) elif typename == "voice_to_text": self.bots[typename] = voice_factory.create_voice(self.btype[typename]) elif typename == "chat": self.bots[typename] = bot_factory.create_bot(self.btype[typename]) return self.bots[typename] def get_bot_type(self,typename): return self.btype[typename] # 以下所有函数需要得到一个reply字典,格式如下: # reply["type"] = "ERROR" / "TEXT" / "VOICE" / ... # reply["content"] = reply的内容 def fetch_reply_content(self, query, context): return self.get_bot("chat").reply(query, context) def fetch_voice_to_text(self, voiceFile): return self.get_bot("voice_to_text").voiceToText(voiceFile) def fetch_text_to_voice(self, text): return self.get_bot("text_to_voice").textToVoice(text)