from timeside.analyzer.core import Analyzer
from timeside.analyzer.waveform import Waveform
from timeside.api import IAnalyzer
-from numpy import spacing
+import numpy as np
from collections import deque
def __init__(self, ordre, echantillon):
self.ordre = ordre
- self.ft = [0] * (ordre + 2)
- self.ftm1 = [0] * (ordre + 2)
- self.variance_f = [1] * (ordre + 2)
- self.variance_b = [1] * (ordre + 2)
- self.et = [0] * (ordre + 2)
- self.cor = [0] * (ordre + 2)
+ self.ft = np.repeat(0., ordre + 2)
+ self.ftm1 = np.repeat(0., ordre + 2)
+ self.variance_f = np.repeat(1., ordre + 2)
+ self.variance_b = np.repeat(1., ordre + 2)
+ self.et = np.repeat(0., ordre + 2)
+
+ self.et_vec = self.et
+ self.ft_vec = self.ft
+ self.ftm1_vec = self.ftm1
+ self.cor = np.repeat(0., ordre + 2)
self.length = 1
self.erreur_residuelle = 0
self.variance_erreur_residuelle = 0
oubli = 1.0 / float(self.length)
- self.variance_f[0] = self.variance_f[
- 0] + oubli * (echantillon ** 2 - self.variance_f[0])
+ self.variance_f[0] = self.variance_f[0] + oubli * (echantillon ** 2 - self.variance_f[0])
self.variance_b[0] = self.variance_f[0]
self.et[0] = echantillon
self.ft[0] = echantillon
'''
self.length += 1
- self.ftm1 = self.ft[:]
+ self.ftm1 = self.ft.copy()
self.et[0] = echantillon
oubli = 1.0 / float(self.length)
- self.variance_f[0] = self.variance_f[
- 0] + oubli * (echantillon ** 2 - self.variance_f[0])
+ self.variance_f[0] = (1 - oubli) * self.variance_f[0] + oubli * echantillon ** 2
self.variance_b[0] = self.variance_f[0]
ik = min([self.ordre, self.length - 1])
for n in xrange(ik + 1):
oubli = 1.0 / float(self.length - n)
+ oubli_ = 1 - oubli
- self.cor[n] = self.cor[n] + oubli * (
- self.ftm1[n] * self.et[n] - self.cor[n])
+ self.cor[n] = oubli_ * self.cor[n] + oubli * self.ftm1[n] * self.et[n]
- knplus1 = 2 * \
- self.cor[n] / (self.variance_f[n] + self.variance_b[n])
+ knplus1 = 2 * self.cor[n] / (self.variance_f[n] + self.variance_b[n])
self.et[n + 1] = self.et[n] - knplus1 * self.ftm1[n]
self.ft[n + 1] = self.ftm1[n] - knplus1 * self.et[n]
- self.variance_f[n + 1] = self.variance_f[
- n + 1] + oubli * (self.et[n + 1] ** 2 - self.variance_f[n + 1])
- self.variance_b[n + 1] = self.variance_b[
- n + 1] + oubli * (self.ft[n + 1] ** 2 - self.variance_b[n + 1])
+ self.variance_f[n + 1] = oubli_ * self.variance_f[n + 1] + oubli * self.et[n + 1] ** 2
+ self.variance_b[n + 1] = oubli_ * self.variance_b[n + 1] + oubli * self.ft[n + 1] ** 2
+
self.ft[0] = echantillon
self.erreur_residuelle = self.et[ik + 1]
return s
-class ModelCourtTrerm(object):
+class ModelShortTerm(object):
'''
'''
args :
- modeleLong (ModelLongTerme) : Modèle appris sur tous les echantillons depuis la dernière rupture
- - modeleCourt (ModelCourtTrerm): Modèle appris sur les Lmin derniers echantillons
+ - modeleCourt (ModelShortTerm): Modèle appris sur les Lmin derniers echantillons
'''
if modeleCourt.variance_erreur_residuelle == 0:
# epsilon pour le type de donnés correspondant à
# modeleLong.variance_erreur_residuelle
- numerateur = spacing(modeleCourt.variance_erreur_residuelle)
+ numerateur = np.spacing(modeleCourt.variance_erreur_residuelle)
else:
numerateur = modeleCourt.variance_erreur_residuelle
# Initialisation du modèle court terme
if t - rupt_last == Lmin:
- courtTerme = ModelCourtTrerm(ordre, audio_buffer)
+ courtTerme = ModelShortTerm(ordre, audio_buffer)
# Mise à jour du modèle court terme
if t - rupt_last > Lmin:
segs.id_metadata.name += ' ' + 'Segments'
label = {0: 'Instable', 1: 'Forward', -1: 'Backward'}
- segs.label_metadata.label = label
+ segs.data_object.label_metadata.label = label
segs.data_object.label = [s[1] for s in frontieres]
segs.data_object.time = [(float(s[0]) / self.samplerate())
implements(IAnalyzer)
@interfacedoc
- def setup(self, channels=None, samplerate=None,
- blocksize=None, totalframes=None):
-
- super(IRITSingings, self).setup(channels,
- samplerate,
- blocksize,
- totalframes)
-
+ def __init__(self):
+ super(IRITSingings, self).__init__()
self.parents.append(IRITMonopoly())
- self.aubio_pitch = pitch(
- "default", self.input_blocksize, self.input_stepsize,
- samplerate)
- self.aubio_pitch.set_unit("freq")
self.block_read = 0
self.pitches = []
self.spectro = []
self.thPoly = 0.15
self.thMono = 0.1
+ @interfacedoc
+ def setup(self, channels=None, samplerate=None,
+ blocksize=None, totalframes=None):
+
+ super(IRITSingings, self).setup(channels,
+ samplerate,
+ blocksize,
+ totalframes)
+
+ self.aubio_pitch = pitch("default", self.input_blocksize,
+ self.input_stepsize, samplerate)
+ self.aubio_pitch.set_unit("freq")
+
self.input_blocksize = int(self.wLen * samplerate)
self.input_stepsize = int(self.wStep * samplerate)
"""
preproc = self.process_pipe.results.get_result_by_id('irit_monopoly.segments').data_object
- labels = self.process_pipe.results.get_result_by_id('irit_monopoly.segments').label_metadata['label']
+ labels = self.process_pipe.results.get_result_by_id('irit_monopoly.segments').data_object.label_metadata['label']
segments_monopoly = [(start, duration, labels[label])for start, duration, label in zip(preproc.time,
preproc.duration,
preproc.label)]
# sadres = self.new_result(data_mode='value', time_mode='framewise')
# sadres.id_metadata.id += '.' + 'sadres'
# sadres.id_metadata.name += ' ' + 'SAD RESULT'
- sadval = self.process_pipe.results[self.sad_analyzer.id() + '.sad_lhh_diff'].data_object.value[:]
+ sadval = self.process_pipe.results.get_result_by_id(self.sad_analyzer.id() + '.sad_lhh_diff').data_object.value[:]
# sadres.data_object.value = sadval
# self.process_pipe.results.add(sadres)
diar_res.data_object.label = label
diar_res.data_object.time = time
diar_res.data_object.duration = duration
- diar_res.label_metadata.label = dict()
+ diar_res.data_object.label_metadata.label = dict()
for lab in diar_res.data_object.label:
- diar_res.label_metadata.label[lab] = str(lab)
+ diar_res.data_object.label_metadata.label[lab] = str(lab)
# TODO FIXME
# for h in hypothesis.itertracks(label=True):
# diar_res.data_object.label.append(h[2])