ref: b7eb9a5f09c30c8835d136a756dc0b6f93486714
dir: /python/bench-pitch/
#! /usr/bin/python
from aubio.bench.node import *
from aubio.tasks import *
class benchpitch(bench):
def compute_file(self,input,output):
filetask = self.task(input,params=self.params)
computed_data = filetask.compute_all()
results = filetask.eval(computed_data)
self.results.append(results)
truth = filetask.gettruth()
#print input, results, results - float(input.split('.')[-2])
self.pretty_print((self.params.mode, truth,
truth - results[0], results[0],
truth - results[1], results[1]))
def compute_data(self):
self.orig, self.missed, self.merged, self.expc, \
self.bad, self.doubled = 0, 0, 0, 0, 0, 0
act_on_data(self.compute_file,self.datadir, \
suffix='',filter='f -name \'*.wav\'')
def compute_results(self,truth):
for i in self.results: print i
def run_bench(self,modes=['dual']):
self.modes = modes
self.pretty_print(self.titles)
for mode in self.modes:
self.params.mode = mode
self.compute_data()
#self.compute_results()
#self.pretty_print(self.results)
if __name__ == "__main__":
import sys
if len(sys.argv) > 1: datapath = sys.argv[1]
else: print "error: a path is required"; sys.exit(1)
modes = ['schmitt', 'yin', 'mcomb', 'fcomb']
benchpitch = benchpitch(datapath)
benchpitch.params = taskparams()
benchpitch.task = taskpitch
benchpitch.titles = [ 'mode', 'thres', 'avg', 'avgdist' ]
benchpitch.formats = ["%12s" , "| %6s", "| %6s", "| %6s", "| %6s", "| %6s" ]
try:
benchpitch.run_bench(modes=modes)
except KeyboardInterrupt:
print "Interrupted by user"
sys.exit(1)
sys.exit(0)