| # 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) | |