def setUp(self): @simple_in_memory_settings class Document(stft(store_fft=True)): pass synth = NoiseSynthesizer(SR44100()) audio = synth.synthesize(Seconds(2)) _id = Document.process(meta=audio.encode()) doc = Document(_id) non_doc = SomethingElse(11) parser = FeatureParser(Document, locals()) self.document = Document self.doc = doc self.parser = parser
def setUp(self): self.samplerate = SR22050() rs = resampled(resample_to=self.samplerate) wscheme = HalfLapped() @simple_in_memory_settings class Document(rs): windowed = ArrayWithUnitsFeature( SlidingWindow, wscheme=wscheme, wfunc=OggVorbisWindowingFunc(), needs=rs.resampled, store=False) fft = ArrayWithUnitsFeature( FFT, needs=windowed, store=False) flatness = ArrayWithUnitsFeature( SpectralFlatness, needs=fft, store=True) # create a pure sine wave that fades out ss = SineSynthesizer(self.samplerate) sine = ss.synthesize(Seconds(5), [440.]) sine_envelope = np.linspace(1.0, 0.0, len(sine)) sine *= sine_envelope # create noise ns = NoiseSynthesizer(self.samplerate) noise = ns.synthesize(Seconds(5)) noise_envelope = np.linspace(0.0, 1.0, len(noise)) noise *= noise_envelope # mix the sine wave and noise together self.audio = sine + noise _id = Document.process(meta=self.audio.encode()) self.doc = Document(_id)
def test_has_correct_duration(self): samplerate = SR22050() rs = resampled(resample_to=samplerate) @simple_in_memory_settings class Document(rs): windowed = ArrayWithUnitsFeature(SlidingWindow, wscheme=HalfLapped(), needs=rs.resampled, store=True) synth = NoiseSynthesizer(samplerate) audio = synth.synthesize(Milliseconds(5500)) _id = Document.process(meta=audio.encode()) doc = Document(_id) orig_seconds = audio.dimensions[0].end / Picoseconds(int(1e12)) new_seconds = doc.windowed.dimensions[0].end / Picoseconds(int(1e12)) self.assertAlmostEqual(orig_seconds, new_seconds, delta=0.01)
def test_can_persist_and_retrieve_with_second_long_windowing_scheme(self): samplerate = SR22050() rs = resampled(resample_to=samplerate) window_size = Seconds(1) wscheme = SampleRate(window_size, window_size) @simple_in_memory_settings class Document(rs): windowed = ArrayWithUnitsFeature(SlidingWindow, wscheme=wscheme, needs=rs.resampled, store=True) synth = NoiseSynthesizer(samplerate) audio = synth.synthesize(Milliseconds(5500)) _id = Document.process(meta=audio.encode()) doc = Document(_id) self.assertEqual(6, len(doc.windowed))
def test_has_correct_duration(self): samplerate = SR22050() rs = resampled(resample_to=samplerate) @simple_in_memory_settings class Document(rs): windowed = ArrayWithUnitsFeature( SlidingWindow, wscheme=HalfLapped(), needs=rs.resampled, store=True) synth = NoiseSynthesizer(samplerate) audio = synth.synthesize(Milliseconds(5500)) _id = Document.process(meta=audio.encode()) doc = Document(_id) orig_seconds = audio.dimensions[0].end / Picoseconds(int(1e12)) new_seconds = doc.windowed.dimensions[0].end / Picoseconds(int(1e12)) self.assertAlmostEqual(orig_seconds, new_seconds, delta=0.01)
def test_can_persist_and_retrieve_with_second_long_windowing_scheme(self): samplerate = SR22050() rs = resampled(resample_to=samplerate) window_size = Seconds(1) wscheme = SampleRate(window_size, window_size) @simple_in_memory_settings class Document(rs): windowed = ArrayWithUnitsFeature( SlidingWindow, wscheme=wscheme, needs=rs.resampled, store=True) synth = NoiseSynthesizer(samplerate) audio = synth.synthesize(Milliseconds(5500)) _id = Document.process(meta=audio.encode()) doc = Document(_id) self.assertEqual(6, len(doc.windowed))
def test_can_encode_and_decode_variable_rate_time_Series(self): class TimestampEmitter(ff.Node): def __init__(self, needs=None): super(TimestampEmitter, self).__init__(needs=needs) self.pos = Picoseconds(0) def _process(self, data): td = data.dimensions[0] frequency = td.frequency timestamps = [self.pos + (i * frequency) for i, d in enumerate(data) if random() > 0.9] slices = TimeSlice.slices(timestamps) yield VariableRateTimeSeries( (ts, np.zeros(0)) for ts in slices) self.pos += frequency * len(data) graph = stft(store_fft=True) @simple_in_memory_settings class Document(graph): slices = TimeSliceFeature( TimestampEmitter, needs=graph.fft, store=True) pooled = VariableRateTimeSeriesFeature( Pooled, op=np.max, axis=0, needs=(slices, graph.fft), store=False) signal = NoiseSynthesizer(SR44100())\ .synthesize(Seconds(10))\ .encode() _id = Document.process(meta=signal) doc = Document(_id) self.assertIsInstance(doc.pooled, VariableRateTimeSeries) self.assertEqual(doc.fft.shape[1], doc.pooled.slicedata.shape[1])
def soundfile(flo=None): synth = NoiseSynthesizer(SR44100()) samples = synth.synthesize(Seconds(5)).stereo flo = samples.encode(flo=flo) return samples, flo