File size: 2,448 Bytes
5558062
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
830f8b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5558062
 
 
 
 
 
 
 
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from simbals_apis_public_clients.clients.services import SimbalsAPIClient
import time
import json
import os
import gradio as gr

SIMBALS_GLOBAL_DB = 1
SIMBALS_MAIN_DATABASE = 2

def process(input_path):
    # setup the client
    client = SimbalsAPIClient(os.environ['TOKEN'], debug=True)
    parameters = client.prepare_request("31415", audio_file=input_path)
    
    # add audio features service with an available database
    #parameters = client.add_audio_features(parameters, SIMBALS_MAIN_DATABASE)
    parameters = client.add_tags(parameters, SIMBALS_MAIN_DATABASE)
    
    # launch the request and test for ok/code values
    ok, code, job_id = client.launch_request(parameters)
    # try to get the results with obtained job_id. If code is 4, job is not finished. In all other cases, job is finished
    for i in range(1000):
        results=client.get_results(job_id)
        if results[0] != 4:
            print(json.dumps(results[1], indent=1))
            #return json.dumps(results[1], indent=1)
            output = json.dumps(results[1], indent=1)
            break
        time.sleep(1)


    res = results[1]["response"]["tagging"]["2"]
    
    moods = []
    for m in res['moods']:
      moods.append((m['name'], m['probability']))
    print(moods)
    
    music_desc=[]
    for d in res['music_descriptors']:
      music_desc.append((d['name'],d['value']))
    print(music_desc)
    
    genres=[]
    for d in res['genres']:
      genres.append((d['name'],d['probability']))
    print(genres)
    
    themes = []
    for d in res['themes']:
      themes.append((d['name'],d['probability']))
    print(themes)
    
    
    instruments = []
    for d in res['instruments']:
      instruments.append((d['name'],d['probability']))
    print(instruments)
    
    timbres = []
    for d in res['timbres']:
      timbres.append((d['name'],d['probability']))
    print(timbres)
    
    vocalgender = [res['vocal_gender'][0]['name'], res['vocal_gender'][0]['probability']]
    print(vocalgender)
    
    audioquality = [res['audio_quality'][0]['name'], res['audio_quality'][0]['probability']]
    print(audioquality)

    return moods


demo = gr.Interface(fn=process,
                    inputs=gr.Audio(type="filepath"),
                    outputs=gr.outputs.Textbox(label="Generated Text")
                    #examples=example_list,
                    #cache_examples=False
                    )

demo.launch(debug=False)