Spaces:
Running
Running
File size: 1,710 Bytes
cfb4e8c de76a17 cfb4e8c de76a17 cfb4e8c de76a17 7bd2b9b de76a17 fd06c1e de76a17 7bd2b9b de76a17 |
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 54 55 56 57 58 59 60 61 |
import gradio as gr
import requests
import os
# FastAPI endpoint
API_URL = "https://nexa-omni.nexa4ai.com/process-audio/"
def process_audio(audio_path, prompt=""):
"""
Send audio file to FastAPI backend for processing
"""
try:
# Prepare the file for upload
files = {
'file': ('audio.wav', open(audio_path, 'rb'), 'audio/wav')
}
# Send prompt as form data
data = {'prompt': prompt}
# Make the request to FastAPI
response = requests.post(API_URL, files=files, data=data)
response.raise_for_status()
return response.json()['response']
except Exception as e:
return f"Error processing audio: {str(e)}"
finally:
# Clean up the temporary file if it exists
if audio_path and os.path.exists(audio_path):
os.remove(audio_path)
# Create Gradio interface
demo = gr.Interface(
fn=process_audio,
inputs=[
gr.Audio(
type="filepath",
label="Upload or Record Audio",
sources=["upload", "microphone"]
),
gr.Textbox(
placeholder="Enter prompt (optional)",
label="Prompt",
value="transcribe this audio in English and return me the transcription:"
)
],
outputs=gr.Textbox(label="Response"),
title="Nexa Omni",
description="Upload an audio file and optionally provide a prompt to analyze the audio content.",
examples=[
["example_audios/example_1.wav", "transcribe this audio in English"],
]
)
def clear_output(audio, prompt):
return ""
demo.load_examples = clear_output
if __name__ == "__main__":
demo.launch()
|