Changeset 5d1c070 for python/aubio/task


Ignore:
Timestamp:
Mar 5, 2006, 4:21:16 AM (19 years ago)
Author:
Paul Brossier <piem@altern.org>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
Children:
d8604ac
Parents:
43938de
Message:

updated to new bench-pitch, fixed gettruth
updated to new bench-pitch, fixed gettruth

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/aubio/task/pitch.py

    r43938de r5d1c070  
    6161                elif floatpit:
    6262                        try:
    63                                 self.truth = aubio_miditofreq(float(floatpit))
    64                                 print "ground truth found in filename:", self.truth
    65                                 tasksil = tasksilence(self.input)
     63                                self.truth = float(floatpit)
     64                                #print "ground truth found in filename:", self.truth
     65                                tasksil = tasksilence(self.input,params=self.params)
    6666                                time,pitch =[],[]
    6767                                while(tasksil.readsize==tasksil.params.hopsize):
     
    8484                                        for i in range(len(values)):
    8585                                                time.append(values[i][0])
    86                                                 pitch.append(values[i][1])
     86                                                pitch.append(aubio_freqtomidi(values[i][1]))
    8787                                        return time,pitch
    8888
    89         def eval(self,results):
     89        def oldeval(self,results):
    9090                def mmean(l):
    9191                        return sum(l)/max(float(len(l)),1)
     
    105105                return self.truth, self.truth-med, self.truth-avg
    106106
    107         def neweval(self,results):
     107        def eval(self,pitch,tol=0.9):
    108108                timet,pitcht = self.gettruth()
    109                 for i in timet:
    110                         print results[i]
    111                 return self.truth, self.truth-med, self.truth-avg
     109                pitch = [aubio_freqtomidi(i) for i in pitch]
     110                for i in range(len(pitch)):
     111                        if pitch[i] == "nan" or pitch[i] == -1:
     112                                pitch[i] = -1
     113                time = [ i*self.params.step for i in range(len(pitch)) ]
     114                assert len(timet) == len(time)
     115                assert len(pitcht) == len(pitch)
     116                osil, esil, opit, epit, echr = 0, 0, 0, 0, 0
     117                for i in range(len(pitcht)):
     118                        if pitcht[i] == -1: # currently silent
     119                                osil += 1 # count a silence
     120                                if pitch[i] == -1. or pitch[i] == "nan":
     121                                        esil += 1 # found a silence
     122                        else:
     123                                opit +=1
     124                                if abs(pitcht[i] - pitch[i]) < tol:
     125                                        epit += 1
     126                                        echr += 1
     127                                elif abs(pitcht[i] - pitch[i]) % 12. < tol:
     128                                        echr += 1
     129                                #else:
     130                                #       print timet[i], pitcht[i], time[i], pitch[i]
     131                #print "origsilence", "foundsilence", "origpitch", "foundpitch", "orig pitchroma", "found pitchchroma"
     132                #print 100.*esil/float(osil), 100.*epit/float(opit), 100.*echr/float(opit)
     133                return osil, esil, opit, epit, echr
    112134
    113135        def plot(self,pitch,wplot,oplots,outplot=None):
     
    115137                import Gnuplot
    116138
    117                 self.eval(pitch)
    118139                downtime = self.params.step*numarray.arange(len(pitch))
    119                 oplots.append(Gnuplot.Data(downtime,pitch,with='lines',
     140                oplots.append(Gnuplot.Data(downtime,pitch,with='linespoints',
    120141                        title=self.params.pitchmode))
    121142
    122143                       
    123         def plotplot(self,wplot,oplots,outplot=None,multiplot = 1):
     144        def plotplot(self,wplot,oplots,outplot=None,multiplot = 0):
    124145                from aubio.gnuplot import gnuplot_init, audio_to_array, make_audio_plot
    125146                import re
     
    132153                timet,pitcht = self.gettruth()
    133154                if timet and pitcht:
     155                        pitcht = [aubio_miditofreq(i) for i in pitcht]
    134156                        oplots = [Gnuplot.Data(timet,pitcht,with='lines',
    135157                                title='ground truth')] + oplots
Note: See TracChangeset for help on using the changeset viewer.