fast-rtc / app.py
krishna-k's picture
port changed for available one
eebe4f8 verified
# import os
# from fastrtc import (ReplyOnPause, Stream, get_stt_model, get_tts_model)
# from openai import OpenAI
# OpenAI.api_key = '5dd0312c-a759-42e8-a21d-6bbe275e7aa2'
# sambanova_client = OpenAI(
# api_key="5dd0312c-a759-42e8-a21d-6bbe275e7aa2", base_url="https://api.sambanova.ai/v1"
# )
# stt_model = get_stt_model()
# tts_model = get_tts_model()
# def echo(audio):
# prompt = stt_model.stt(audio)
# response = sambanova_client.chat.completions.create(
# model="Meta-Llama-3.2-3B-Instruct",
# messages=[{"role": "user", "content": prompt}],
# max_tokens=200,
# )
# prompt = response.choices[0].message.content
# for audio_chunk in tts_model.stream_tts_sync(prompt):
# yield audio_chunk
# stream = Stream(ReplyOnPause(echo), modality="audio", mode="send-receive")
# stream.ui.launch()
from fastrtc import Stream, ReplyOnPause
import numpy as np
from pydub import AudioSegment
from pydub.utils import which
import socket
AudioSegment.ffmpeg = which("ffmpeg")
def find_free_port():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 0)) # Bind to an available port (0 means any available port)
port = s.getsockname()[1] # Get the port number
s.close() # Close the socket
return port
available_port = find_free_port()
def echo(audio: tuple[int, np.ndarray]) -> tuple[int, np.ndarray]:
yield audio
stream = Stream(ReplyOnPause(echo), modality="audio", mode="send-receive")
stream.ui.launch(share=True,server_port=available_port)