diff --git a/tortoise/socket_client.py b/tortoise/socket_client.py new file mode 100644 index 0000000..243dcc1 --- /dev/null +++ b/tortoise/socket_client.py @@ -0,0 +1,50 @@ +import socket +import sounddevice as sd +import numpy as np + +def play_audio_stream(client_socket): + buffer = b'' + stream = sd.OutputStream(samplerate=24000, channels=1, dtype='float32') + stream.start() + + try: + while True: + chunk = client_socket.recv(1024) + if b"END_OF_AUDIO" in chunk: + buffer += chunk.replace(b"END_OF_AUDIO", b"") + if buffer: + audio_array = np.frombuffer(buffer, dtype=np.float32) + stream.write(audio_array) + break + + buffer += chunk + while len(buffer) >= 4096: + audio_chunk = buffer[:4096] + audio_array = np.frombuffer(audio_chunk, dtype=np.float32) + stream.write(audio_array) + buffer = buffer[4096:] + + finally: + stream.stop() + stream.close() + +def send_text_to_server(character_name, text, server_ip='localhost', server_port=5000): + client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + client_socket.connect((server_ip, server_port)) + + try: + data = f"{character_name}|{text}" + client_socket.sendall(data.encode('utf-8')) + + play_audio_stream(client_socket) + + print("Audio playback finished.") + + finally: + client_socket.close() + + +if __name__ == "__main__": + character_name ="deniro" + text = "Hello This is just for a live speaking test" + send_text_to_server(character_name, text)