ABSA_Test_Space / app.py
Futuresony's picture
Create app.py
85142b9 verified
raw
history blame
2.66 kB
import gradio as gr
from gradio_client import Client
# Call the existing chat model
chat_client = Client("Futuresony/Mr.Events")
# Load the Whisper model - using the public space as the specific model was not found
# You might need to adjust this if a specific space for whisper-large-v3-turbo becomes available or accessible
try:
whisper_client = Client("openai/whisper-large-v3-turbo")
except Exception as e:
print(f"Could not load 'openai/whisper-large-v3-turbo', falling back to 'openai/whisper'. Error: {e}")
whisper_client = Client("openai/whisper")
def chat_with_model(user_input):
"""Sends text input to the chat model and returns the response."""
result = chat_client.predict(
query=user_input,
api_name="/chat"
)
return result
def transcribe_audio(audio_input):
"""Transcribes audio input using the Whisper model."""
if audio_input is None:
return ""
try:
# The API name might vary depending on the specific Whisper space
# Common API names are "/predict", "/run"
transcript = whisper_client.predict(audio_input, api_name="/predict")
return transcript
except Exception as e:
print(f"Error during transcription: {e}")
return f"Transcription failed: {e}"
def send_message(transcribed_text, manual_text_input):
"""Determines which input to send to the chat model and returns the response."""
if transcribed_text:
return chat_with_model(transcribed_text)
elif manual_text_input:
return chat_with_model(manual_text_input)
else:
return "Please provide audio or text input."
# Create the Gradio interface
with gr.Blocks() as demo:
gr.Markdown("## 💬 Test the ABSA Model Chat with Audio Input")
with gr.Row():
with gr.Column(scale=3):
audio_input = gr.Audio(sources=["microphone", "upload"], label="Audio Input")
transcribed_text = gr.Textbox(label="Transcribed Text", lines=3, interactive=False) # Make transcribed text non-interactive
manual_text_input = gr.Textbox(label="Or type your message here", lines=3)
submit_btn = gr.Button("Send")
with gr.Column(scale=5):
output_text = gr.Textbox(label="Model Response", lines=6, interactive=False) # Make output non-interactive
# Connect interface elements to functions
audio_input.change(fn=transcribe_audio, inputs=audio_input, outputs=transcribed_text)
submit_btn.click(fn=send_message, inputs=[transcribed_text, manual_text_input], outputs=output_text)
# Launch the Gradio application
demo.launch(share=True) # share=True is required for Colab