def main():
    parser = argparse.ArgumentParser(version="1.0", prog="Voice Recognition")
    parser.add_argument("-a", "--add", action="store_true", help="Add a new source")
    parser.add_argument("audio", type=str, help="Name of the audio file (*.wav)")

    args = parser.parse_args()
    audio = HOME_FOLDER + args.audio
    db = GMMVoiceDB(HOME_FOLDER)

    if args.add:
        name = str(time.strftime("%d%m%Y%H%M%S"))
        db.add_model(audio.split(".")[0], name)
    else:
        v = Voiceid(db, audio)
        v.diarization()
        dic = db.get_speakers()
        dist = []
        d2u = {}
        for gender in dic:
            users = dic[gender]
            for u in users:
                dist.append(db.match_voice(audio, u, gender)[u])
                d2u[dist[-1]] = u

        dist.sort(None, None, True)
        if (dist[0] - dist[1] + CEIL) > EPS:
            return d2u[dist[0]]
        else:
            return "unkonwn"
def main():
	parser = argparse.ArgumentParser(version='1.0',prog='Voice Recognition')
	parser.add_argument("-a", "--add", action="store_true", help="Add a new source")
	parser.add_argument("audio", type=str, help="Name of the audio file (*.wav)") 

	args = parser.parse_args()
	audio = HOME_FOLDER+args.audio
	db = GMMVoiceDB(HOME_FOLDER)	
	
	if args.add:
		print('Adding User...')
		name = str(time.strftime("%d%m%Y%H%M%S"))
		db.add_model(audio.split('.')[0], name)
		print('User '+name+' Added!')
	else:
		print('Recognition...')
		v = Voiceid(db, audio)
		v.diarization()	
		dic = db.get_speakers()
		dist = []
		d2u = {}
		for gender in dic:
			users = dic[gender]
			#print('Gender: ',gender)
			for u in users:
				#print(db.match_voice(audio, u, gender))
				dist.append(db.match_voice(audio, u, gender)[u])
				d2u[dist[-1]]=u
		
		dist.sort(None, None, True)
		if (dist[0]-dist[1]+CEIL)>EPS :
			print(d2u[dist[0]])
		else:
			print('unkonwn')
		
		print "Done!"
Ejemplo n.º 3
0
def recognition():
	global audio, db, label
	if audio != None:
		print 'Comparing...'
		#dic = db.get_speakers()
		v = Voiceid(db, audio+'.wav')
		#v.extract_speakers()
		v.diarization()	
		dic = db.get_speakers()
		dist = []
		d2u = {}
		for gender in dic:
			users = dic[gender]
			print('Gender: ',gender)
			for u in users:
				print(db.match_voice(audio+'.wav', u, gender))
				dist.append(db.match_voice(audio+'.wav', u, gender)[u])
				d2u[dist[-1]]=u
		
		print('--------------')
		print("Best Speaker (Own)")		
		dist.sort(None, None, True)
		print( (dist[0]-dist[1]+CEIL),EPS,dist )
		if (dist[0]-dist[1]+CEIL)>EPS :
			print(d2u[dist[0]])
		
		#print(dic)
		print('--------------')
		print("Best Speaker")
		print("Audio: ",audio.split('/')[-1])
		v.extract_speakers(False, True)
		for c in v.get_clusters():
			cluster = v.get_cluster(c)
			print(cluster.get_best_speaker() )
			print('------------')
		
		'''
		print 'Comparing...'
		v = Voiceid(db, audio+'.wav')
		#s = StringIO.StringIO()
		#with s as sys.stdout:
		v.extract_speakers(False, True)
		#with open('output.txt','w') as sys.stdout:
		for c in v.get_clusters():
			cluster = v.get_cluster(c)
			user = cluster.get_best_speaker() 
			print('------------')
			if user != "unknown":
				print("Best Speaker: %s" % (user) )
				print("Speaker: %s" % (cluster.get_speaker()) )
				print("Gender: %s" % (cluster.get_gender()) )
				print("Distance: %s" % (cluster.get_distance()) )
				print("Mean: %s" % (cluster.get_mean()) )
				print("Dist. from mean: %s" % (cluster.get_m_distance()) )
				print("Best five speakers: " % (cluster.get_best_five()) )
			else:
				print("User Unknown")
				print("Gender: %s" % (cluster.get_gender()) )
				print("Distance: %s" % (cluster.get_distance()) )
				print("Best five speakers: " % (cluster.get_best_five()) )
			print('------------')
		#sys.stdout = sys.__stdout__
		
		#labelB["text"] = "Users: " + str(listName)'''
		print "Done!"
	else :
		print 'Record audio first!'
Ejemplo n.º 4
0
    #v = Voiceid(db, '../Test_set_all/Monica-Bellucci-interview.mp3')
    #v = Voiceid(db, '../Test_set_all/Pasolini1971.mp3')
    #v = Voiceid(db, '/home/felix/Desktop/u/facciamoiconti.mp3')
    #v = Voiceid(db, '/home/felix/Desktop/u/facciamoiconti/S32.wav')
    
    
    #v = Voiceid(db, '/Users/labcontenuti/Desktop/voiceid/adaltavoce/voci/FabrizioGifuni-promessisposi-p1.wav')
    #v = Voiceid(db, '/Users/labcontenuti/Desktop/voiceid/adaltavoce/test/Piero_Baldini##mobyDick01_1sec.wav')
    #v = Voiceid(db, '/Users/labcontenuti/Desktop/voiceid/adaltavoce/test/Piero_Baldini##mobyDick01_3sec.wav')
    #v = Voiceid(db, '/Users/labcontenuti/Desktop/voiceid/DataSetVideolinaVoci/Giacomo_Mameli/2/Giacomo_Mameli##1-1.wav')
    v = Voiceid(db, '/Users/labcontenuti/Documents/workspace/activevoice/audio_test/2sec.wav')
    #v = Voiceid(db, '/Users/labcontenuti/Desktop/voiceid/DataSetVideolina_FIC02/Fadda_Paolo/Paolo_Fadda##6-30s.wav')
    #v = Voiceid(db, '//Users/labcontenuti/Music/facciamo_i_conti_internet.wav')

    
    v.diarization()
    print v
    v.extract_cluster()
    print v.get_clusters()
    exit()
    v.extract_speakers_without_diarization()    
    #v.extract_speakers()
    
    for c in v.get_clusters():
        #print "c ", c   
        cluster = v.get_cluster(c) 
        print "cluster.wave ", cluster.wave
        print "cluster.get_name ", cluster.get_name()
        print "\n\n\n\n\n\n"
        list_seg=cluster.get_segments()
        for seg in list_seg: