Files
chatgpt-on-wechat/bridge/bridge.py
2023-03-12 22:49:07 +08:00

44 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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)