]> git.parisson.com Git - timeside.git/commitdiff
Add default parameter for Yaafe analyzer
authorThomas Fillon <thomas@parisson.com>
Mon, 14 Oct 2013 23:46:50 +0000 (01:46 +0200)
committerThomas Fillon <thomas@parisson.com>
Mon, 14 Oct 2013 23:46:50 +0000 (01:46 +0200)
tests/api/exempleCMMR_vamp.py
timeside/analyzer/vamp_plugin.py
timeside/analyzer/yaafe.py

index 43fadc170a678703ac67bfc25bb064f844090ea2..1384a17693eefb7d824dcc2a4dfeda18e3794539 100644 (file)
@@ -12,7 +12,7 @@ import numpy as np
 import sys
 
 wav_file = sys.argv[-1]
-
+wav_file =  '/home/thomas/code/timeside/voix.wav'
 # normal
 d = timeside.decoder.FileDecoder(wav_file, start=10, duration=15)
 
@@ -35,7 +35,7 @@ print my_plugin
 
 #
 # Vamp plugin Analyzer
-vamp = timeside.analyzer.VampSimpleHost(my_plugin)
+vamp = timeside.analyzer.VampSimpleHost([my_plugin])
 
 #
 myPipe = (d | vamp | specgram | waveform).run()
index 33390a631c7f3f4d323ad0495e4d5eff4a55fd38..a73a7bb984ef540620edebd67c6b1cd73e32e869 100644 (file)
@@ -30,8 +30,12 @@ import numpy as np
 class VampSimpleHost(Analyzer):
     implements(IAnalyzer)
 
-    def __init__(self, plugin):
-        self.plugin = ':'.join(plugin)
+    def __init__(self, plugin_list=None):
+
+        if plugin_list is None:
+            plugin_list = self.get_plugins_list()
+
+        self.plugin_list = plugin_list
 
     @interfacedoc
     def setup(self, channels=None, samplerate=None,
@@ -63,42 +67,44 @@ class VampSimpleHost(Analyzer):
 
         wavfile = self.mediainfo()['uri'].split('file://')[-1]
 
-        (blocksize, stepsize, values) = self.vamp_plugin(self.plugin, wavfile)
+        for plugin_line in self.plugin_list:
+            plugin = ':'.join(plugin_line)
+            print plugin
+            (blocksize, stepsize, values) = self.vamp_plugin(plugin, wavfile)
 
-        self.result_blocksize = blocksize
-        self.result_stepsize = stepsize
-        self.result_samplerate = self.mediainfo()['samplerate']
+            self.result_blocksize = blocksize
+            self.result_stepsize = stepsize
+            self.result_samplerate = self.mediainfo()['samplerate']
 
-        plugin_res = self.new_result(data_mode='value', time_mode='framewise')
+            plugin_res = self.new_result(data_mode='value', time_mode='framewise')
 
-        # Fix strat, duration issues if audio is a segment
-        if self.mediainfo()['is_segment']:
-            start_index = np.floor(self.mediainfo()['start'] *
-                                   self.result_samplerate /
-                                   self.result_stepsize)
-            new_start = start_index * self.result_stepsize
+            # Fix strat, duration issues if audio is a segment
+            if self.mediainfo()['is_segment']:
+                start_index = np.floor(self.mediainfo()['start'] *
+                                       self.result_samplerate /
+                                       self.result_stepsize)
 
-            stop_index = np.ceil((self.mediainfo()['start'] +
-                                  self.mediainfo()['duration']) *
-                                 self.result_samplerate /
-                                 self.result_stepsize)
+                stop_index = np.ceil((self.mediainfo()['start'] +
+                                      self.mediainfo()['duration']) *
+                                     self.result_samplerate /
+                                     self.result_stepsize)
 
-            fixed_start = (start_index * self.result_stepsize /
-                           self.result_samplerate)
-            fixed_duration = ((stop_index - start_index) * self.result_stepsize /
-                              self.result_samplerate)
+                fixed_start = (start_index * self.result_stepsize /
+                               self.result_samplerate)
+                fixed_duration = ((stop_index - start_index) * self.result_stepsize /
+                                  self.result_samplerate)
 
-            plugin_res.audio_metadata.start = fixed_start
-            plugin_res.audio_metadata.duration = fixed_duration
+                plugin_res.audio_metadata.start = fixed_start
+                plugin_res.audio_metadata.duration = fixed_duration
 
-            values = values[start_index:stop_index + 1]
+                values = values[start_index:stop_index + 1]
 
-        plugin_res.id_metadata.id += '.' + '.'.join(self.plugin.split(':')[1:])
-        plugin_res.id_metadata.name += ' ' + \
-            ' '.join(self.plugin.split(':')[1:])
-        plugin_res.data_object.value = values
+            plugin_res.id_metadata.id += '.' + '.'.join(self.plugin.split(':')[1:])
+            plugin_res.id_metadata.name += ' ' + \
+                ' '.join(self.plugin.split(':')[1:])
+            plugin_res.data_object.value = values
 
-        self._results.add(plugin_res)
+            self._results.add(plugin_res)
 
     @staticmethod
     def vamp_plugin(plugin, wavfile):
index 783015764047113b4ef1a8fc0135c9c19b077754..b493a935e30222d171ff69a7d58b54e65b2130e1 100644 (file)
@@ -34,8 +34,15 @@ import numpy
 class Yaafe(Analyzer):
     implements(IAnalyzer)
 
-    def __init__(self, yaafeSpecification):
+    def __init__(self, yaafeSpecification=None):
         # Check arguments
+        if yaafeSpecification is None:
+            print 'None'
+            yaafeSpecification = FeaturePlan(sample_rate=32000)
+            # add feature definitions manually
+            yaafeSpecification.addFeature('mfcc: MFCC blockSize=512 stepSize=256')
+
+
         if isinstance(yaafeSpecification, DataFlow):
             self.dataFlow = yaafeSpecification
         elif isinstance(yaafeSpecification, FeaturePlan):