File size: 1,642 Bytes
6ce95af
2da21c3
6fac8d4
083552b
2da21c3
 
6ce95af
3a16d68
 
 
 
 
d7c231b
 
0f1a20e
d7c231b
3a16d68
 
 
 
 
 
 
 
5f9b8c8
3a16d68
5f9b8c8
3a16d68
 
3bc75cc
6b7f52f
 
 
 
 
 
31f212e
d7c231b
6b7f52f
d7c231b
7464d3a
d7c231b
 
 
 
ce7e892
d7c231b
 
 
 
cc2774e
d7c231b
 
 
3a16d68
cc2774e
 
6ce95af
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
import gradio as gr
import os
import requests
import json

API_TOKEN = os.getenv('HF_API_TOKEN')

PROVIDERMODEL = {
    'openai': 'openai/whisper-medium.en',
    'facebook': 'facebook/wav2vec2-base-960h',
}

SUMMARYMODEL = {
    'openai': 'openai/whisper-medium.en',
    'facebook': 'facebook/bart-large-cnn',
}

def query(filename, provider='openai'):
    with open(filename, "rb") as f:
        data = f.read()
    API_URL = f"https://api-inference.huggingface.co/models/{PROVIDERMODEL[provider]}"
    headers = {"Authorization": f"Bearer {API_TOKEN}"}
    response = requests.request("POST", API_URL, headers=headers, data=data)
    if response.status_code == 200:
        return json.loads(response.content.decode("utf-8")).get('text')
    else:
        return response.content


def summarize(text, provider='facebook'):
    data = {
        'inputs': text,
        'parameters': {
            'do_sample': False
        }
    }
    API_URL = f"https://api-inference.huggingface.co/models/{SUMMARYMODEL[provider]}"
    headers = {"Authorization": f"Bearer {API_TOKEN}"}
    response = requests.request("POST", API_URL, headers=headers, json=data)
    if response.status_code == 200:
        return json.loads(response.content.decode("utf-8"))[0].get('summary_text')
    else:
        return {"error": response.content}


demo = gr.Blocks()

with demo:
    audio_file = gr.Audio(type="filepath")
    text = gr.Textbox()
    label = gr.Textbox()

    b1 = gr.Button("Derive Transcript")
    b2 = gr.Button("Summarize")

    b1.click(query, inputs=audio_file, outputs=text)
    b2.click(summarize, inputs=text, outputs=label)
demo.launch()