SherinMohamed's picture
Update app.py
902212c verified
Raw History Blame Contribute Delete
1.65 kB
import gradio as gr
from app.pipeline import FullEgyptianVoiceChatbot
bot = FullEgyptianVoiceChatbot()
def text_chat(text):
r = bot.chat_text(text)
return r["user_text"], r["user_normalized"], r["assistant_text_raw"], r["assistant_text_tts"], r["audio_path"]
def voice_chat(audio_fp):
r = bot.chat_voice(audio_fp)
if "error" in r:
return "", "", r["error"], "", None
return r["user_text"], r["user_normalized"], r["assistant_text_raw"], r["assistant_text_tts"], r["audio_path"]
with gr.Blocks() as demo:
gr.Markdown("Egyptian Arabic Voice Chatbot (Whisper ASR + JAIS + EGTTS)")
with gr.Tab("Text"):
inp = gr.Textbox(label="Input (Egyptian Arabic)")
o_user = gr.Textbox(label="User Text")
o_norm = gr.Textbox(label="Normalized")
o_raw = gr.Textbox(label="JAIS Raw Response")
o_tts = gr.Textbox(label="TTS-ready Response")
o_aud = gr.Audio(label="Bot Audio", type="filepath")
btn = gr.Button("Send")
btn.click(text_chat, inputs=inp, outputs=[o_user, o_norm, o_raw, o_tts, o_aud])
with gr.Tab("Voice"):
v_in = gr.Audio(sources=["microphone","upload"], type="filepath", label="Record / Upload")
v_user = gr.Textbox(label="User Text (ASR)")
v_norm = gr.Textbox(label="Normalized")
v_raw = gr.Textbox(label="JAIS Raw Response")
v_tts = gr.Textbox(label="TTS-ready Response")
v_out = gr.Audio(label="Bot Audio", type="filepath")
v_btn = gr.Button("Send Voice")
v_btn.click(voice_chat, inputs=v_in, outputs=[v_user, v_norm, v_raw, v_tts, v_out])
demo.queue()
demo.launch()