from handler import EndpointHandler import requests import base64 import numpy as np import sounddevice as sd import time my_handler = EndpointHandler('') def play_audio(audio_data, sample_rate=16000): sd.play(audio_data, sample_rate) sd.wait() def stream_audio(session_id): audio_chunks = [] while True: continue_payload = { "request_type": "continue", "session_id": session_id } response = my_handler(continue_payload) if response["status"] == "completed" and response["output"] is None: break if response["output"]: audio_bytes = base64.b64decode(response["output"]) audio_np = np.frombuffer(audio_bytes, dtype=np.int16) audio_chunks.append(audio_np) # Play the chunk immediately (optional) play_audio(audio_np) time.sleep(0.01) # Small delay to prevent overwhelming the server return np.concatenate(audio_chunks) if audio_chunks else None # Test with text input text_payload = { "request_type": "start", "inputs": "Tell me a cool fact about Messi.", "input_type": "text", } start_response = my_handler(text_payload) if "session_id" in start_response: print(f"Session started. Session ID: {start_response['session_id']}") print("Streaming audio response...") full_audio = stream_audio(start_response['session_id']) if full_audio is not None: print("Received complete audio response. Playing...") else: print("No audio received.") else: print("Error:", start_response)