From: Thomas Fillon Date: Mon, 14 Oct 2013 23:46:50 +0000 (+0200) Subject: Add default parameter for Yaafe analyzer X-Git-Tag: 0.5.0~26 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=0875ccad21e83fd9ddc50d7953454dac670c493f;p=timeside.git Add default parameter for Yaafe analyzer --- diff --git a/tests/api/exempleCMMR_vamp.py b/tests/api/exempleCMMR_vamp.py index 43fadc1..1384a17 100644 --- a/tests/api/exempleCMMR_vamp.py +++ b/tests/api/exempleCMMR_vamp.py @@ -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() diff --git a/timeside/analyzer/vamp_plugin.py b/timeside/analyzer/vamp_plugin.py index 33390a6..a73a7bb 100644 --- a/timeside/analyzer/vamp_plugin.py +++ b/timeside/analyzer/vamp_plugin.py @@ -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): diff --git a/timeside/analyzer/yaafe.py b/timeside/analyzer/yaafe.py index 7830157..b493a93 100644 --- a/timeside/analyzer/yaafe.py +++ b/timeside/analyzer/yaafe.py @@ -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):