Spaces:
Runtime error
Runtime error
File size: 4,316 Bytes
5558062 830f8b5 99236eb 812d7ec 830f8b5 812d7ec 830f8b5 812d7ec 830f8b5 812d7ec 830f8b5 812d7ec 9099754 830f8b5 9099754 830f8b5 9099754 830f8b5 dd3cb6b 356b9b0 789a241 356b9b0 f4f5f6a ba15b51 f4f5f6a 558bd35 ba15b51 4d0049a 7513630 dd3cb6b 558bd35 456a03f 558bd35 7513630 558bd35 356b9b0 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
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"]
dict_moods = {}
for m in res['moods']:
dict_moods[m['name']] = m['probability']
dict_desc={}
for d in res['music_descriptors']:
dict_desc[d['name']] = d['value']
genres={}
for d in res['genres']:
genres[d['name']] = d['probability']
themes = {}
for d in res['themes']:
themes[d['name']]= d['probability']
instruments = {}
for d in res['instruments']:
instruments[d['name']] = d['probability']
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 dict_moods, genres, instruments, themes,
str(dict_desc['Electric/Acoustic']),
str(dict_desc['Danceability']),
str(dict_desc['Arousal']),
str(dict_desc['Vocal/Instrumental']),
str(dict_desc['Studio/Live']),
str(dict_desc['Music/Speech']),
str(dict_desc['Valence']),
str(dict_desc['Melodic']),
str(dict_desc['Articulation']),
str(dict_desc['RhythmicStability']),
str(dict_desc['Dissonance']),
str(dict_desc['Vocal/Instrumental']),
('BPM', 47), ('Binary', 0.794377), ('Key', 10), ('Mode', 1), ('TexturalStability', 0.312802)]
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
with gr.Row():
audio_input = gr.Audio(type="filepath", label='Audio Input')
with gr.Row():
analyze_btn = gr.Button('Analyze File')
with gr.Row():
with gr.Column():
gr.HTML("<h3>Moods</h3>")
dict_moods=gr.Label(label="Moods", show_label=False)
gr.HTML("<h3>Themes</h3>")
themes=gr.Label(label="Themes", show_label=False)
with gr.Column():
gr.HTML("<h3>Genres</h3>")
genres = gr.Label(label="Genres", show_label=False)
with gr.Column():
gr.HTML("<h3>Instruments</h3>")
instruments = gr.Label(label="Instruments", show_label=False)
with gr.Column():
gr.HTML("<h3> Descriptors</h3>")
#gr.HTML("<h5> Vocal/Instrumental</h5>")
vocalinstru = gr.Slider(label="Vocal/Instrumental", minimum=0, maximum=1.0)#, info="Information todo", show_label=False)
''''
with gr.Row():
with gr.Column():
gr.HTML("<h3>Themes</h3>")
themes=gr.Label(label="Themes", show_label=False)
'''
analyze_btn.click(process, inputs=[audio_input], outputs=[dict_moods, genres, instruments, themes, vocalinstru])
demo.launch(debug=False) |