from numpy import array, hamming, dot, mean, float
from numpy.fft import rfft
from scipy.signal import firwin, lfilter
-
+from timeside.analyzer.preprocessors import frames_adapter
class IRITSpeech4Hz(Analyzer):
implements(IAnalyzer)
self.nbFilters = 30
self.modulLen = 2.0
self.melFilter = melFilterBank(self.nbFilters, self.nFFT, samplerate)
+ self.wLen = 0.016
+ self.wStep = 0.008
+ self.input_blocksize = int(self.wLen * samplerate)
+ self.input_stepsize = int(self.wStep * samplerate)
@staticmethod
@interfacedoc
def __str__(self):
return "Speech confidences indexes"
+ @frames_adapter
def process(self, frames, eod=False):
'''
if self.normalizeEnergy:
energy = energy / mean(energy)
+
# Energy Modulation
- frameLenModulation = int(
- self.modulLen * self.samplerate() / self.blocksize())
+ frameLenModulation = self.modulLen/self.wStep
modEnergyValue = computeModulation(energy, frameLenModulation, True)
# Confidence Index
segs.label_metadata.label = label
segs.data_object.label = [convert[s[2]] for s in segList]
- segs.data_object.time = [(float(s[0]) * self.blocksize() /
- self.samplerate())
+ segs.data_object.time = [float(s[0]) * self.wStep
for s in segList]
- segs.data_object.duration = [(float(s[1]-s[0]) * self.blocksize() /
- self.samplerate())
+ segs.data_object.duration = [float(s[1]-s[0]) * self.wStep
for s in segList]
self.process_pipe.results.add(segs)
super(IRITSpeechEntropy, self).setup(
channels, samplerate, blocksize, totalframes)
self.entropyValue = []
- self.threshold = 0.4
- self.smoothLen = 5
- self.modulLen = 2
- self.wLen = 1.0
- self.wStep = 0.1
+ self.threshold = 0.4
+ self.smoothLen = 5
+ self.modulLen = 2
+ self.wLen = 0.016
+ self.wStep = 0.008
+
self.input_blocksize = int(self.wLen * samplerate)
self.input_stepsize = int(self.wStep * samplerate)
def post_process(self):
entropyValue = array(self.entropyValue)
- w = self.modulLen * self.samplerate() / self.input_blocksize
+ w = self.modulLen/self.wStep
+ print w,len(entropyValue)
modulentropy = computeModulation(entropyValue, w, False)
+
+ import pylab
+ pylab.plot(modulentropy)
+ pylab.show()
+
confEntropy = array(modulentropy - self.threshold) / self.threshold
confEntropy[confEntropy > 1] = 1
segs.data_object.time = [(float(s[0]) * self.input_blocksize /
self.samplerate())
for s in segList]
-<<<<<<< HEAD
- segs.data_object.duration = [(float(s[1]-s[0]) * self.input_blocksize /
-=======
+
segs.data_object.duration = [(float(s[1]-s[0]+1) * self.blocksize() /
->>>>>>> 7c3ccb1c5b87c4639fee32df595cca1991265657
self.samplerate())
for s in segList]