]> git.parisson.com Git - timeside.git/commitdiff
Analyzer : propagate recent changes to IRIt_Speech analyzers
authorThomas Fillon <thomas@parisson.com>
Mon, 16 Dec 2013 08:24:20 +0000 (09:24 +0100)
committerThomas Fillon <thomas@parisson.com>
Mon, 16 Dec 2013 08:24:20 +0000 (09:24 +0100)
timeside/analyzer/irit_speech_4hz.py
timeside/analyzer/irit_speech_entropy.py

index 1e5e87638992834213fa1043ecd05166fdcf624f..ea8667796e33cbb7be7343f7ccb0b7464d14fe33 100644 (file)
@@ -48,7 +48,8 @@ class IRITSpeech4Hz(Analyzer):
     '''
 
     @interfacedoc
-    def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
+    def setup(self, channels=None, samplerate=None, blocksize=None,
+              totalframes=None):
         super(IRITSpeech4Hz, self).setup(
             channels, samplerate, blocksize, totalframes)
         self.energy4hz = []
@@ -135,13 +136,16 @@ class IRITSpeech4Hz(Analyzer):
 
         modEnergy.data_object.value = conf
 
-        self._results.add(modEnergy)
+        self.process_pipe.results.add(modEnergy)
 
         # Segment
         convert = {False: 0, True: 1}
         label = {0: 'nonSpeech', 1: 'Speech'}
 
         segList = segmentFromValues(modEnergyValue > self.threshold)
+        # Hint : Median filtering could imrove smoothness of the result
+        # from scipy.signal import medfilt
+        # segList = segmentFromValues(medfilt(modEnergyValue > self.threshold, 31))
 
         segs = self.new_result(data_mode='label', time_mode='segment')
         segs.id_metadata.id += '.' + 'segments'
@@ -151,12 +155,12 @@ class IRITSpeech4Hz(Analyzer):
 
         segs.data_object.label = [convert[s[2]] for s in segList]
         segs.data_object.time = [(float(s[0]) * self.blocksize() /
-                                  self.samplerate())
-                                  for s in segList]
+                                 self.samplerate())
+                                 for s in segList]
         segs.data_object.duration = [(float(s[1]-s[0]) * self.blocksize() /
-                                  self.samplerate())
-                                  for s in segList]
+                                     self.samplerate())
+                                     for s in segList]
 
-        self._results.add(segs)
+        self.process_pipe.results.add(segs)
 
         return
index 8f84544dc4a2a54eae0d5e92f38ccd02c5d83a53..8d13ab4bf0ddb271686b985ebf65549be9ce9a53 100644 (file)
@@ -19,7 +19,7 @@
 
 # Author: Maxime Le Coz <lecoz@irit.fr>
 
-from timeside.core import Processor, implements, interfacedoc
+from timeside.core import implements, interfacedoc
 from timeside.analyzer.core import Analyzer
 from timeside.analyzer.utils import entropy, computeModulation
 from timeside.analyzer.utils import segmentFromValues
@@ -32,7 +32,8 @@ class IRITSpeechEntropy(Analyzer):
     implements(IAnalyzer)
 
     @interfacedoc
-    def setup(self, channels=None, samplerate=None, blocksize=None, totalframes=None):
+    def setup(self, channels=None, samplerate=None, blocksize=None,
+              totalframes=None):
         super(IRITSpeechEntropy, self).setup(
             channels, samplerate, blocksize, totalframes)
         self.entropyValue = []
@@ -76,7 +77,7 @@ class IRITSpeechEntropy(Analyzer):
         conf.id_metadata.name += ' ' + 'Confidence'
 
         conf.data_object.value = confEntropy
-        self._results.add(conf)
+        self.process_pipe.results.add(conf)
 
         # Binary Entropy
         binaryEntropy = modulentropy > self.threshold
@@ -87,22 +88,20 @@ class IRITSpeechEntropy(Analyzer):
         label = {0: 'NonSpeech', 1: 'Speech'}
         segList = segmentFromValues(binaryEntropy)
 
-
-
         segs = self.new_result(data_mode='label', time_mode='segment')
         segs.id_metadata.id += '.' + 'segments'
         segs.id_metadata.name += ' ' + 'Segments'
 
-        segs.data_object.label = segList
+        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())
-                                  for s in segList]
+                                 self.samplerate())
+                                 for s in segList]
         segs.data_object.duration = [(float(s[1]-s[0]) * self.blocksize() /
-                                  self.samplerate())
-                                  for s in segList]
+                                     self.samplerate())
+                                     for s in segList]
 
-        self._results.add(segs)
+        self.process_pipe.results.add(segs)
 
         return