]> git.parisson.com Git - timeside.git/commitdiff
export analyzer result to sonic visualizer
authorDavid Doukhan <david.doukhan@gmail.com>
Fri, 11 Jul 2014 14:49:35 +0000 (16:49 +0200)
committerDavid Doukhan <david.doukhan@gmail.com>
Fri, 11 Jul 2014 14:49:35 +0000 (16:49 +0200)
timeside/analyzer/core.py

index 9da30496f3497098bae8a124fbffca8ab16baad2..2aed37f78ed6dc95cf62540bef7edde86999a3b4 100644 (file)
@@ -21,6 +21,7 @@
 #   Guillaume Pellerin <yomguy at parisson.com>
 #   Paul Brossier <piem@piem.org>
 #   Thomas Fillon <thomas  at parisson.com>
+#   David Doukhan <doukhan at limsi.fr>
 from __future__ import division
 
 from timeside.core import Processor
@@ -29,6 +30,7 @@ import numpy
 from collections import OrderedDict
 import h5py
 import h5tools
+from py_sonicvisualiser import SVEnv
 import os
 
 if os.environ.has_key('DISPLAY'):
@@ -958,6 +960,28 @@ class AnalyzerResultContainer(dict):
 
         return results
 
+    def to_sonicvisualiser(self, output_file):
+        assert(len(self) > 0)
+        uri = self[self.keys()[0]].audio_metadata['uri']
+        assert(len(uri) > 7 and uri[:7] == 'file://')
+        sve = SVEnv.init_from_wave_file(uri[7:])
+        for k in self:
+            res = self[k]
+            time = res.time
+            data = res.data
+            if res.data_mode == 'value':
+                labels = None
+            elif res.data_mode == 'label':
+                labdic = res.label_metadata.label
+                labels = [labdic[k] for k in data]
+            else:
+                raise NotImplementedError()
+            if res.time_mode != 'segment':
+                sve.add_continuous_annotations(time, res.data, presentationName=k)
+            else:
+                sve.add_interval_annotations(time, res.duration, labels, values=res.data, presentationName=k)
+
+        sve.save(output_file)
 
 class Analyzer(Processor):