File size: 1,544 Bytes
eebe4f8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# 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)
|