def process(self, buf, eof, tm0):
global filterorder, votewin
# correct back to start of self.ssamples[]
tm0 -= self.ssampleslen / float(self.inrate)
self.ssamples.append(buf)
self.ssampleslen += len(buf)
while True:
if self.ssampleslen < 60 * self.inrate:
break
if eof == False and self.ssampleslen < (votewin+1)*60*self.inrate:
break
samples = numpy.concatenate(self.ssamples)
self.ssamples = None
self.ssampleslen = None
filter = weakutil.butter_bandpass(self.center - self.filterwidth/2,
self.center + self.filterwidth/2,
self.inrate, filterorder)
filtered = scipy.signal.lfilter(filter[0], filter[1], samples)
# down-sampling makes everything run much faster.
# XXX perhaps sacrificing fine alignment?
down = weakutil.resample(filtered, self.inrate, self.lorate)
self.process1(down, tm0)
trim = 60*self.inrate
samples = samples[trim:]
self.ssamples = [ samples ]
self.ssampleslen = len(samples)
tm0 += trim / float(self.inrate)
评论列表
文章目录