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):
        @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
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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])
Exemple #9
0
def soundfile(flo=None):
    synth = NoiseSynthesizer(SR44100())
    samples = synth.synthesize(Seconds(5)).stereo
    flo = samples.encode(flo=flo)
    return samples, flo