changeset 29:372ee94cc82e

Merge branch 'master' into aaspchall
author Dan Stowell <danstowell@users.sourceforge.net>
date Wed, 13 Feb 2013 16:46:01 +0000
parents 81d346d43a44 (diff) 8319429b20da (current diff)
children 49436fc230eb
files smacpy.py
diffstat 3 files changed, 240 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/smacpy.py	Wed Feb 13 16:45:35 2013 +0000
+++ b/smacpy.py	Wed Feb 13 16:46:01 2013 +0000
@@ -17,6 +17,7 @@
 from scikits.audiolab import Sndfile
 from scikits.audiolab import Format
 from sklearn.mixture import GMM
+import csv
 
 from MFCC import melScaling
 
@@ -147,67 +148,50 @@
 	return (ncorrect, len(testwavs), len(model.gmms))
 
 #######################################################################
-# If this file is invoked as a script, it carries out a simple runthrough
-# of training on some wavs, then testing, with classnames being the start of the filenames
+# This handles the invocation as set up for the AASP challenge
+# eg:  python smacpy.py --trainlist trainlist.example.txt --testlist testlist.example.txt --outlist output.txt
 if __name__ == '__main__':
-
 	# Handle the command-line arguments for where the train/test data comes from:
 	parser = argparse.ArgumentParser()
-	parser.add_argument('-t', '--trainpath', default='wavs', help="Path to the WAV files used for training")
-	parser.add_argument('-T', '--testpath',                  help="Path to the WAV files used for testing")
+	parser.add_argument('-t', '--trainlist', default='NOT_SPECIFIED', help="Path to the file listing WAV files used for training")
+	parser.add_argument('-T', '--testlist',  default='NOT_SPECIFIED', help="Path to the file listing WAV files used for testing")
+	parser.add_argument('-o', '--outlist',   default='output.txt',    help="Path to write results to")
 	parser.add_argument('-q', dest='quiet', action='store_true', help="Be less verbose, don't output much text during processing")
-	group = parser.add_mutually_exclusive_group()
-	group.add_argument('-c', '--charsplit',  default='_',    help="Character used to split filenames: anything BEFORE this character is the class")
-	group.add_argument('-n', '--numchars' ,  default=0  ,    help="Instead of splitting using 'charsplit', use this fixed number of characters from the start of the filename", type=int)
 	args = vars(parser.parse_args())
 	verbose = not args['quiet']
 
-	if args['testpath']==None:
-		args['testpath'] = args['trainpath']
+	# Load the training list as a dictionary of "filename->classification" data
+	trainlist = {}
+	for row in csv.reader(file(args['trainlist']), delimiter="\t"):
+		if len(row)==2:
+			trainlist[row[0]] = row[1]
+		elif len(row)>2:
+			raise ValueError("Row has more than one tab character in: ", row)
 
-	# Build up lists of the training and testing WAV files:
-	wavsfound = {'trainpath':{}, 'testpath':{}}
-	for onepath in ['trainpath', 'testpath']:
-		pattern = os.path.join(args[onepath], '*.wav')
-		for wavpath in glob(pattern):
-			if args['numchars'] != 0:
-				label = os.path.basename(wavpath)[:args['numchars']]
-			else:
-				label = os.path.basename(wavpath).split(args['charsplit'])[0]
-			shortwavpath = os.path.relpath(wavpath, args[onepath])
-			wavsfound[onepath][shortwavpath] = label
-		if len(wavsfound[onepath])==0:
-			raise RuntimeError("Found no files using this pattern: %s" % pattern)
-		if verbose:
-			print("Class-labels and filenames to be used from %s:" % onepath)
-			for wavpath,label in sorted(wavsfound[onepath].items()):
-				print(" %s: \t %s" % (label, wavpath))
+	if verbose:
+		print("Training files to be used:")
+		for wavpath,label in sorted(trainlist.items()):
+			print(" %s: \t %s" % (label, wavpath))
 
-	if args['testpath'] != args['trainpath']:
-		# Separate train-and-test collections
-		ncorrect, ntotal, nclasses = trainAndTest(args['trainpath'], wavsfound['trainpath'], args['testpath'], wavsfound['testpath'])
-		print("Got %i correct out of %i (trained on %i classes)" % (ncorrect, ntotal, nclasses))
-	else:
-		# This runs "stratified leave-one-out crossvalidation": test multiple times by leaving one-of-each-class out and training on the rest.
-		# First we need to build a list of files grouped by each classlabel
-		labelsinuse = sorted(list(set(wavsfound['trainpath'].values())))
-		grouped = {label:[] for label in labelsinuse}
-		for wavpath,label in wavsfound['trainpath'].items():
-			grouped[label].append(wavpath)
-		numfolds = min(len(collection) for collection in grouped.values())
-		# Each "fold" will be a collection of one item of each label
-		folds = [{wavpaths[index]:label for label,wavpaths in grouped.items()} for index in range(numfolds)]
-		totcorrect, tottotal = (0,0)
-		# Then we go through, each time training on all-but-one and testing on the one left out
-		for index in range(numfolds):
-			print("Fold %i of %i" % (index+1, numfolds))
-			chosenfold = folds[index]
-			alltherest = {}
-			for whichfold, otherfold in enumerate(folds):
-				if whichfold != index:
-					alltherest.update(otherfold)
-			ncorrect, ntotal, nclasses = trainAndTest(args['trainpath'], alltherest, args['trainpath'], chosenfold)
-			totcorrect += ncorrect
-			tottotal   += ntotal
-		print("Got %i correct out of %i (using stratified leave-one-out crossvalidation, %i folds)" % (totcorrect, tottotal, numfolds))
+	# Load the test list
+	testlist = []
+	for row in csv.reader(file(args['testlist']), delimiter="\t"):
+		if len(row)==1:
+			testlist.append(row[0])
+		elif len(row)>1:
+			raise ValueError("Row has a tab character in - SHOULD NOT happen for testlist: ", row)
+	if verbose:
+		print("Testing files to be used:")
+		for item in testlist: print(item)
 
+	# OK so let's go
+	outlist = file(args['outlist'], 'wb')
+	if verbose: print("TRAINING")
+	model = Smacpy('/', trainlist)
+	if verbose: print("TESTING")
+	for wavpath in testlist:
+		result = model.classify(wavpath)
+		outlist.write("%s\t%s\n" % (wavpath, result))
+	outlist.close()
+	if verbose: print("Finished.")
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testlist.example.txt	Wed Feb 13 16:46:01 2013 +0000
@@ -0,0 +1,101 @@
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube10.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation01.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation02.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation03.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation04.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation05.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation06.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation07.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation08.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation09.wav
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation10.wav
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trainlist.example.txt	Wed Feb 13 16:46:01 2013 +0000
@@ -0,0 +1,101 @@
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus01.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus02.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus03.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus04.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus05.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus06.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus07.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus08.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus09.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/bus10.wav	bus
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet01.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet02.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet03.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet04.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet05.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet06.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet07.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet08.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet09.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/busystreet10.wav	busystreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office01.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office02.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office03.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office04.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office05.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office06.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office07.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office08.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office09.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/office10.wav	office
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket01.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket02.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket03.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket04.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket05.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket06.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket07.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket08.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket09.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/openairmarket10.wav	openairmarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park01.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park02.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park03.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park04.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park05.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park06.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park07.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park08.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park09.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/park10.wav	park
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet01.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet02.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet03.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet04.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet05.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet06.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet07.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet08.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet09.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/quietstreet10.wav	quietstreet
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant01.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant02.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant03.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant04.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant05.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant06.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant07.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant08.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant09.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/restaurant10.wav	restaurant
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket01.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket02.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket03.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket04.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket05.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket06.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket07.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket08.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket09.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/supermarket10.wav	supermarket
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube01.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube02.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube03.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube04.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube05.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube06.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube07.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube08.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube09.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tube10.wav	tube
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation01.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation02.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation03.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation04.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation05.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation06.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation07.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation08.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation09.wav	tubestation
+/home/aasp/Desktop/aasp_challenge/public_data/scenes_stereo/scenes_stereo/tubestation10.wav	tubestation
+