diff --git a/worker/talk.py b/worker/talk.py new file mode 100644 index 0000000..43e2580 --- /dev/null +++ b/worker/talk.py @@ -0,0 +1,41 @@ +from zzcore import StdAns + +from pydub import AudioSegment +from base64 import b64encode +import requests, io + +class Ans(StdAns): + def GETMSG(self): + if len(self.parms) < 2: + text = "想让我说点什么呢?" + else: + text = self.raw_msg['message'][5:] + + try: + b = tts(text) + msg = f'[CQ:record,file=base64://{str(b)}]' + except: + msg = '什么东西坏掉了,...咱不能说话了!' + return msg + +def tts(text): + url = "https://tts.baidu.com/text2audio" + params = { + 'cuid': 'baike', + 'lan': 'zh', + 'ctp': 1, + 'pdt': 301, + 'vol': 5, + 'rate': 32, + 'per': 5118, + 'tex': text, + } + + r = requests.get(url=url, params=params) + s = io.BytesIO(r.content) + r.close() + # s.seek(0,0) + song = AudioSegment.from_mp3(s) + amr = song.export(format="amr", parameters=["-ar", "8000"]) + b = b64encode(amr.read()).decode("utf-8") + return b \ No newline at end of file