File size: 2,294 Bytes
918d352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a08dc35
918d352
 
a08dc35
918d352
 
 
 
 
 
 
 
 
 
 
 
 
3393169
 
918d352
 
 
 
 
 
 
 
 
 
 
76de0b7
9a3b8b3
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
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)
    # init the base parameters with your audio id and an audio url (or a local audio file)
    parameters = client.prepare_request("31415", audio_file=input_path)
    
    # add scanmatch service with full_matches option activated, against a chosen and available database
    #parameters = client.add_scanmatch_full_matches(parameters, SIMBALS_GLOBAL_DB)  
    # add scanmatch service with partial_matches option activated, against a chosen and available database
    #parameters = client.add_scanmatch_partial_matches(parameters, SIMBALS_GLOBAL_DB)
    parameters = client.add_scanmatch_partial_fast_matches(parameters, SIMBALS_GLOBAL_DB)   
    
    # 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)
            try : 
                trackname = results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['track']['title']
                artistname = results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['artists'][0]['name']
                isrc = results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['track']['isrc']
                return trackname+" by "+artistname + " - ISRC : " + isrc
            except IndexError:
                return "Not found. Please try again."
        time.sleep(1)
    

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