def __build_model(auth_params, func_params): """ Funzione utilizzata per costruire il modello di riconoscimento audio a partire da un insieme di istanze che vengono fornite dall'utente attraverso l'apposita GUI. In particolar ela funzione consente di : - ottenere la lista di istanze specificate dall'utente - recuperare il path completo associato a ciascuna istanza - unire le istanze in un unico file audio - effettuare la costruzione del modello di riconoscimento vocale - creare la persona e il modello sul database - associare i file creati alla persona e al modello - rimuovere tutti i file temporanei creati """ try: token = auth_params.get('token', '1234') f_name = func_params.get('first_name', 'Pinco') s_name = func_params.get('last_name', 'Pallino') inst_ids = func_params.get('inst_list', []) ubm = os.path.join(get_media_root(), 'models', 'audio', 'globals', 'ubm.gmm') classpath= os.path.join(get_base_dir(), 'plugins_script', 'speaker_extractor' , 'lium_spkdiarization-8.4.1.jar') # crea un modello e una persona con i dati forniti person = create_person(f_name, s_name, token=token) model = create_model(person['id'], 'audio', f_name + ' ' + s_name, last_update=None, token=token) #print person, model # recupera gli oggetti corrispondenti alle istanze #print inst_ids inst_paths = [] for inst_id in inst_ids: inst = get_instance(inst_id, token=token) inst_paths.append(os.path.join(get_media_root(), inst['features'])) #print inst_paths # concat all provided feature files temp = '/tmp/model_' + str(model['id']) + '.wav' concatena_multi(inst_paths, temp) #print temp # calcola e imposta il modello generato nel database model_path = create_new_model(classpath, ubm, temp, 0, None, None) set_model_file(model['id'], model_path, token=token) #print model_path # remove all created temporary files #os.remove(model_path) except Exception as e: print e return 'Error during entity model building'