Skip to main content

UNKNOWN

Project description

|Build Status| |Coverage Status|

Usage
=====

Zounds is a dataflow library for building directed acyclic graphs that
transform audio. It uses the
`featureflow <https://github.com/JohnVinyard/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.

.. code:: python

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:

.. code:: python

>>> import requests
>>> req = requests.Request(method = 'GET', url = 'https://example.com/audio.wav')
>>> _id = doc = Document.process(meta=req)
>>> 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`` <https://github.com/bastibe/PySoundFile/issues/130>`__.
| Download and run `this
script <https://raw.githubusercontent.com/JohnVinyard/zounds/master/setup.sh>`__
to handle this step.

Numpy and Scipy
---------------

The `Anaconda <https://www.continuum.io/downloads>`__ python
distribution is highly recommended.

Zounds
------

Finall, just:

.. code:: bash

pip install zounds

.. |Build Status| image:: https://travis-ci.org/JohnVinyard/zounds.svg?branch=master
:target: https://travis-ci.org/JohnVinyard/zounds
.. |Coverage Status| image:: https://coveralls.io/repos/github/JohnVinyard/zounds/badge.svg?branch=master
:target: https://coveralls.io/github/JohnVinyard/zounds?branch=master

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.1.2.tar.gz (48.9 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