Люди, подскажите, как можно улучшить код, чтобы данные с сервера к клиенту предавались быстрее:
Сервер:
import socket
from pickle import dumps
import torch
srv=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind(('...', 99))
print('Working...')
srv.listen(100)
while True:
try:
client_socket, address=srv.accept()
#ПОЛУЧАЕМ ТЕКСТ
text=client_socket.recv(1024).decode('utf-8')
#РЕЧЬ: ПАРАМЕТРЫ
device=torch.device('cpu')
model, _=torch.hub.load(repo_or_dir='snakers4/silero-models',
model='silero_tts',
language='ru',
speaker='ru_v3')
model.to(device)
#РЕЧЬ: СИНТЕЗ
audio = model.apply_tts(text=text,
speaker='baya',
sample_rate=48000,
put_accent=True,
put_yo=True)
#ПОДГОТОВКА К ОТПРАВКЕ
audio=dumps(audio)
#ОТПРАВКА РАЗМЕРА АУДИО
client_socket.sendall(bytes(str(len(audio)), 'utf-8'))
#РАЗДЕЛЕНИЕ ОТПРАВОК
client_socket.recv(20)
#ОТПРАВКА АУДИО
client_socket.sendall(audio)
client_socket.close()
except:
pass
Клиент:
import socket
from sounddevice import play, stop
from pickle import loads
from time import sleep
while True:
text=input('Enter text with a maximum of 700 characters(russians):')
client=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.settimeout(10)
client.connect(('...', 99))
#ОТПРАВЛЯЕМ ТЕКСТ
client.sendall(bytes(text, 'utf-8'))
#ПОЛУЧАЕМ РАЗМЕР АУДИО
size=int(client.recv(1024).decode('utf-8'))
#РАЗДЕЛЕНИЕ ПОЛУЧЕНИЙ
client.sendall(bytes('-', 'utf-8'))
#ПОЛУЧАЕМ АУДИО
print(f'----{size}')
received_data = b''
while len(received_data)<size:
data = client.recv(10000)
received_data += data
print(f'----{len(received_data)}')
#ПОДГОТОВКА К ВОСПРОИЗВЕДЕНИЮ(получаем то аудио, котрое было до преобразования функцией dumps(на сервере- подготовка к отправке))
audio=loads(received_data)
#ВОСПРОИЗВОДИМ
play(audio, 50000)
#ЖДЕМ
sleep(len(audio)/50000)