Skip to main content

UNKNOWN

Project description

Build Status Coverage Status PyPI

Usage

Zounds is a dataflow library for building directed acyclic graphs that transform audio. It uses the featureflow library to define the processing pipelines.

For example, here’s the definition of a pipeline that computes a sliding short-time fourier transform of some audio, and then computes spectrograms on the bark and chroma scales.

import featureflow as ff
import zounds

windowing = zounds.HalfLapped()
samplerate = zounds.SR44100()


class Settings(ff.PersistenceSettings):
    id_provider = ff.UuidProvider()
    key_builder = ff.StringDelimitedKeyBuilder()
    database = ff.FileSystemDatabase(path='data', key_builder=key_builder)


class AudioGraph(ff.BaseModel):

    meta = ff.JSONFeature(
        zounds.MetaData,
        encoder=zounds.AudioMetaDataEncoder,
        store=True)

    raw = ff.ByteStreamFeature(
        ff.ByteStream,
        chunksize=2 * 44100 * 30 * 2,
        needs=meta,
        store=False)

    ogg = zounds.OggVorbisFeature(
        zounds.OggVorbis,
        needs=raw,
        store=True)

    pcm = zounds.ConstantRateTimeSeriesFeature(
        zounds.AudioStream,
        needs=raw,
        store=False)

    resampled = zounds.ConstantRateTimeSeriesFeature(
        zounds.Resampler,
        needs=pcm,
        samplerate=samplerate,
        store=False)

    windowed = zounds.ConstantRateTimeSeriesFeature(
        zounds.SlidingWindow,
        needs=resampled,
        wscheme=zounds.HalfLapped(),
        wfunc=zounds.OggVorbisWindowingFunc(),
        store=False)

    fft = zounds.ConstantRateTimeSeriesFeature(
        zounds.FFT,
        needs=windowed,
        store=False)

    bark = zounds.ConstantRateTimeSeriesFeature(
        zounds.BarkBands,
        needs=fft,
        store=True)

    chroma = zounds.ConstantRateTimeSeriesFeature(
        zounds.Chroma,
        needs=fft,
        store=True)

    bfcc = zounds.ConstantRateTimeSeriesFeature(
        zounds.BFCC,
        needs=fft,
        store=True)


class Document(AudioGraph, Settings):
    pass

Data can be processed, and later retrieved as follows:

>>> _id = doc = Document.process(meta='https://example.com/audio.wav')
>>> doc = Document(_id)
>>> doc.chroma.shape
(321, 12)

Installation

Libsndfile Issues

Installation currently requires you to build lbiflac and libsndfile from source, because of an outstanding issue that will be corrected when the apt package is updated to libsndfile 1.0.26. Download and run this script to handle this step.

Numpy and Scipy

The Anaconda python distribution is highly recommended.

Zounds

Finall, just:

pip install zounds

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zounds-0.5.4.tar.gz (55.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page