Spaces:
Running
Running
import gradio as gr | |
import requests | |
import os | |
import time | |
# Retrieve ASR API URL and Authorization Token from environment variables | |
ASR_API_URL = os.getenv('ASR_API_URL') | |
AUTH_TOKEN = os.getenv('AUTH_TOKEN') | |
def transcribe_audio(file_path): | |
if not ASR_API_URL or not AUTH_TOKEN: | |
return "Error: Missing ASR_API_URL or AUTH_TOKEN.", None | |
headers = { | |
'Accept': 'application/json', | |
'Authorization': f'Bearer {AUTH_TOKEN}', | |
} | |
try: | |
with open(file_path, 'rb') as audio_file: | |
files = {'file': (file_path, audio_file, 'audio/mpeg')} | |
start_time = time.time() | |
response = requests.post(ASR_API_URL, headers=headers, files=files) | |
elapsed_time = time.time() - start_time | |
if response.ok: | |
data = response.json() | |
transcription = data.get('transcription', 'No transcription returned.') | |
inference_time = f"{data.get('time', round(elapsed_time, 2))} seconds" | |
return transcription, inference_time | |
else: | |
return f"Error: {response.status_code}, {response.text}", None | |
except Exception as e: | |
return f"Exception occurred: {str(e)}", None | |
# Set up the Gradio interface | |
gr.Interface( | |
fn=transcribe_audio, | |
inputs=gr.Audio(type="filepath"), | |
outputs=[ | |
gr.Textbox(label="Transcription"), | |
gr.Textbox(label="Inference Time") | |
], | |
title="Gooya v1.4 Persian ASR", | |
description=""" | |
The Gooya Persian ASR model is crazy fast and super [powerful](https://huggingface.co/spaces/navidved/open_persian_asr_leaderboard) when it comes to Persian ASR! | |
\nJust drop in a Persian audio file, and boom—we’ll hit you with the best transcription you can get! 🚀🔥 | |
\n(The maximum time allowed for testing is 30 seconds.) | |
""" | |
).launch() | |