theahmedjaafari's picture
initial commit
3fe4028
import gradio as gr
import requests
import os
import time
def upload_audio(file_path, progress=gr.Progress()):
url = f'{os.getenv("VOCHAI_URL")}/upload'
headers = {
'accept': 'application/json',
'Authorization': f'Bearer {os.getenv("VOCHAI_TOKEN")}',
}
with open(file_path, 'rb') as file:
files = {
'file': (os.path.basename(file_path), file, 'audio/*')
}
progress(0, desc="Uploading audio...")
response = requests.post(url, headers=headers, files=files)
if response.status_code == 200:
progress(0.5, desc="Upload complete")
os.remove(file_path)
return response.json()
else:
print("Error:", response.status_code, response.text)
return None
def process_audio(audio_uri, progress=gr.Progress()):
url = f'{os.getenv("VOCHAI_URL")}/process?audio_uri={audio_uri}'
headers = {
'accept': 'application/json',
'Authorization': f'Bearer {os.getenv("VOCHAI_TOKEN")}',
}
progress(0.5, desc="Processing audio...")
response = requests.post(url, headers=headers)
if response.status_code == 200:
progress(1.0, desc="Processing complete")
return response.json()
else:
print("Error:", response.status_code, response.text)
return None
def upload_and_process_audio(audio_path, progress=gr.Progress()):
gr.Info("Uploading and processing audio. This may take a moment...")
# Upload the audio file
upload_result = upload_audio(audio_path, progress)
if not upload_result:
gr.Error("Upload failed")
return "Upload failed", "Upload failed"
audio_uri = upload_result.get('uri')
# Process the audio
process_result = process_audio(audio_uri, progress)
if not process_result:
gr.Error("Processing failed")
return "Processing failed", "Processing failed"
gr.Info("Audio processing completed successfully!")
# Return the transcript and topic
return process_result.get("topic", "No topic detected"), process_result.get("transcript", "No transcript available")
# Create the Gradio interface
iface = gr.Interface(
fn=upload_and_process_audio,
inputs=gr.Audio(type="filepath", label="Upload Audio File"),
outputs=[
gr.Textbox(label="Topic", rtl=True),
gr.Textbox(label="Transcript", rtl=True)
],
title="Arabic Audio Transcription and Topic Detection",
description="Upload an audio file in arabic to get its transcript and detected topic.",
)
# Launch the interface
iface.launch()