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)