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()