First commit

This commit is contained in:
Joan Cano
2023-07-24 19:44:01 +02:00
parent d4e26692f2
commit f06129349f
6 changed files with 79 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.env

0
data/audio/DUMMY Normal file
View File

13
docker-compose.yml Normal file
View File

@@ -0,0 +1,13 @@
version: "3"
services:
telemovris:
build: telemovris
image: telemovris:latest
container_name: telemovris
restart: unless-stopped
volumes:
- ./data:/data
environment:
- API_ID=${API_ID}
- API_HASH=${API_HASH}

12
telemovris/Dockerfile Normal file
View File

@@ -0,0 +1,12 @@
FROM python:3.9
RUN apt update
RUN apt install ffmpeg make cmake gcc g++ python3-dev gcc g++ openssl libssl-dev libopus0 libopus-dev -y
RUN mkdir /app
ADD requirements.txt /app
ADD *.py /app/
RUN pip install -r /app/requirements.txt
WORKDIR /app
CMD [ "python", "/app/telemovris.py" ]

View File

@@ -0,0 +1,6 @@
Pyrogram==1.4.0
TgCrypto==1.2.5
pytgvoip==0.0.7.1
pytgvoip-pyrogram==0.0.11
TTS==0.15.6
numpy==1.22.0

47
telemovris/telemovris.py Normal file
View File

@@ -0,0 +1,47 @@
import asyncio
import os
from TTS.api import TTS
import random
import string
from tgvoip import VoIPServerConfig
from tgvoip_pyrogram import VoIPFileStreamService, VoIPNativeIOService
import pyrogram
def get_random_string(length):
# choose from all lowercase letter
letters = string.ascii_lowercase
result_str = ''.join(random.choice(letters) for i in range(length))
print("Random string of length", length, "is:", result_str)
tts = TTS("tts_models/es/mai/tacotron2-DDC")
client = pyrogram.Client(os.environ.get('SESSION_NAME', '/data/telemovris'),
api_hash=os.environ.get('API_HASH'),
api_id=os.environ.get('API_ID'),
)
VoIPServerConfig.set_bitrate_config(80000, 100000, 60000, 5000, 5000)
loop = asyncio.get_event_loop()
voip_service = VoIPFileStreamService(client, receive_calls=False)
@client.on_message(pyrogram.filters.command('callme'))
async def callme(cl, message: pyrogram.types.Message):
message = message.text.split('/callme ')[1]
audio_name = get_random_string(10)
tts.tts_to_file(text=message, file_path=f"/data/audio/{audio_name}.wav")
os.system(f"ffmpeg -i /data/audio/{audio_name}.wav -f s16le -ac 1 -ar 48000 -acodec pcm_s16le /data/audio/{audio_name}.raw")
await client.send_message(message.from_user.id, "test jejeje")
call = await voip_service.start_call(message.from_user.id)
call.play(f"/data/audio/{audio_name}.raw")
call.set_output_file(f'/data/audio/{audio_name}_output.raw')
async def main():
await client.start()
print(await client.export_session_string())
await pyrogram.idle()
loop.run_until_complete(main())