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 # Prepare headers and data headers = { 'accept': 'application/json', 'Authorization': f'Bearer {AUTH_TOKEN}', } files = { 'file': (file_path, open(file_path, 'rb'), 'audio/mpeg'), } start_time = time.time() # Send POST request response = requests.post(ASR_API_URL, headers=headers, files=files) inference_time = time.time() - start_time # in seconds # Check if response is successful if response.status_code == 200: transcription = response.json().get("transcription", "No transcription returned.") inference_time_str = f"{response.json().get('time', 'No inference time returned.')} seconds" return transcription, inference_time_str else: return f"Error: {response.status_code}, {response.text}", 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()