|
|
|
import traceback |
|
from asyncio import get_running_loop |
|
from io import BytesIO |
|
|
|
from googletrans import Translator |
|
from gtts import gTTS |
|
from pyrogram import Client, filters |
|
from pyrogram.types import Message |
|
|
|
|
|
def convert(text): |
|
audio = BytesIO() |
|
i = Translator().translate(text, dest="en") |
|
lang = i.src |
|
tts = gTTS(text, lang=lang) |
|
audio.name = lang + ".mp3" |
|
tts.write_to_fp(audio) |
|
return audio |
|
|
|
|
|
@Client.on_message(filters.command("tts")) |
|
async def text_to_speech(_, message: Message): |
|
if not message.reply_to_message: |
|
return await message.reply_text("Reply To Some Text FFS.") |
|
if not message.reply_to_message.text: |
|
return await message.reply_text("Reply To Some TextFFS.") |
|
m = await message.reply_text("Processing") |
|
text = message.reply_to_message.text |
|
try: |
|
loop = get_running_loop() |
|
audio = await loop.run_in_executor(None, convert, text) |
|
await message.reply_audio(audio) |
|
await m.delete() |
|
audio.close() |
|
except Exception as e: |
|
await m.edit(e) |
|
e = traceback.format_exc() |
|
print(e) |
|
|
|
|
|
|
|
|