|
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_audio(audio_np) |
|
|
|
time.sleep(0.01) |
|
|
|
return np.concatenate(audio_chunks) if audio_chunks else None |
|
|
|
|
|
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) |
|
|