-
Notifications
You must be signed in to change notification settings - Fork 2
/
ttsbot.py
53 lines (45 loc) · 1.23 KB
/
ttsbot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import time
import re
import random
import datetime
import telepot
from subprocess import call
import subprocess
import os
import sys
from telepot.loop import MessageLoop
import base64
import uuid
from pyttsreverso import pyttsreverso
language=os.getenv('TTS_LANG')
pitch = os.getenv('TTS_PITCH')
bitrate = os.getenv('TTS_BITRATE')
bot_api_key = os.getenv('BOT_API_KEY')
data_file=''
def tts_convert(msg,chat_id):
global data_file
global language
global speed
global bitrate
message_bytes = msg.encode('utf-8')
base64_bytes = base64.b64encode(message_bytes)
base64_message = base64_bytes.decode('utf-8')
convert = pyttsreverso.ReversoTTS()
data = convert.convert_text(voice=language, pitch=pitch, bitrate=bitrate, msg=msg)
f = open(data_file , 'w+b')
f.write(data)
f.close()
return data
def handle(msg):
global data_file
chat_id = msg['chat']['id']
command = msg['text']
data_file = str('./' + ' '.join(command.split(' ')[:3]) + '.mp3')
tts_convert(command,chat_id)
bot.sendAudio(chat_id,open(data_file, 'rb'),'Voice')
os.remove(data_file)
bot = telepot.Bot(bot_api_key)
MessageLoop(bot, handle).run_as_thread()
print('I am listening ...')
while 1:
time.sleep(10)