cbx / app.py
SalexAI's picture
Update app.py
e5f9d96 verified
raw
history blame
1.46 kB
import os
import httpx # This was missing
from fastrtc import ReplyOnPause, Stream, get_stt_model, get_tts_model
from openai import OpenAI
# Initialize Sambanova Client
sambanova_client = OpenAI(
api_key=os.getenv("key"), base_url="https://api.deepinfra.com/v1"
)
# Load STT and TTS models
stt_model = get_stt_model()
tts_model = get_tts_model()
# Echo function to convert speech to text, then back to speech
def echo(audio):
prompt = stt_model.stt(audio)
response = sambanova_client.chat.completions.create(
model="mistralai/Mistral-Small-24B-Instruct-2501",
messages=[{"role": "user", "content": prompt}],
max_tokens=200,
)
reply = response.choices[0].message.content
for audio_chunk in tts_model.stream_tts_sync(reply):
yield audio_chunk
# Dummy implementation of get_cloudflare_turn_credentials
# You’ll need to replace this with real logic if it's not a stub
def get_cloudflare_turn_credentials(
turn_key_id=None,
turn_key_api_token=None,
hf_token=None,
ttl=600,
client: httpx.AsyncClient | None = None,
):
return {
"iceServers": [
{
"urls": ["stun:stun.l.google.com:19302"]
}
]
}
# Create and start the stream
stream = Stream(
handler=echo, # You had handler=... which is invalid
rtc_configuration=get_cloudflare_turn_credentials,
modality="audio",
mode="send-receive"
)
stream.fastphone()