File size: 1,830 Bytes
25ca65d
d2d0553
6e17754
a9f1ad5
6e17754
 
 
 
25ca65d
39a9210
6e17754
7fb76d7
6e17754
d2d0553
b36a0c9
6e17754
d2d0553
b36a0c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee7da9b
 
d2d0553
 
 
7fb76d7
 
 
 
 
a9f1ad5
7fb76d7
8178007
eee74a0
740b1dd
8178007
d2d0553
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
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()