fastRTC_bug / app.py
mrprimenotes's picture
Update app.py
f71d53c verified
raw
history blame
1.81 kB
import time
import os
import numpy as np
import gradio as gr
import random
from fastrtc import AdditionalOutputs, WebRTC, ReplyOnPause
hf_token = os.getenv("TOKEN")
async def get_credentials():
return await get_cloudflare_turn_credentials_async(hf_token=TOKEN)
possible_responses = [
"hello",
"hi",
"how's it going?",
"what's up?",
"how's your day?",
"how are you?",
"what's your name?",
"where are you from?",
"what do you do?",
"what's your favorite color?",
"what's your favorite food?",
"what's your favorite movie?",
]
def transcribe(audio: tuple[int, np.ndarray]):
time.sleep(1)
transformers_convo = [
{"role": "assistant", "content": random.choice(possible_responses)}
]
yield AdditionalOutputs(transformers_convo)
with gr.Blocks() as demo:
gr.HTML(
"""
TEST
"""
)
with gr.Row():
with gr.Column():
audio = WebRTC(
label="Stream",
mode="send-receive",
modality="audio",
rtc_configuration=get_credentials,
server_rtc_configuration=get_cloudflare_turn_credentials(ttl=360_000),
)
with gr.Column():
transcript = gr.Chatbot(label="transcript", type="messages")
audio.stream(
ReplyOnPause(transcribe), inputs=[audio], outputs=[audio], time_limit=180
)
def handle_additional_outputs(outputs):
print(f"outputs: {outputs}")
return outputs
audio.on_additional_outputs(
fn=handle_additional_outputs,
outputs=[transcript],
concurrency_limit=10,
queue=False,
show_progress="hidden",
)
demo.launch(server_name="0.0.0.0", server_port=7860, share=True)