Skip to main content

UNKNOWN

Project description

# Usage
Zounds is a dataflow library for building directed acyclic graphs that transform audio. It uses the
[flow](https://bitbucket.org/jvinyard/flow/) 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 flow
import zounds

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


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


class AudioGraph(flow.BaseModel):

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

raw = flow.ByteStreamFeature(
flow.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:

```
>>> 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
## Flow

## Numpy and Scipy
The [Anaconda](https://www.continuum.io/downloads) python distribution is highly recommended
## PySoundFile
`libsndfile 1.0.26` is required. Ubuntu 14.04 is still on `libsndfile 1.0.25`. This means that there are some extra steps involved to get PySoundfile working.

- Ensure that you've got all the dependencies here (https://github.com/erikd/libsndfile). Flac must be >= 1.3.1, so you can't use the package manager (yet)
- Build [libsndfile(https://github.com/erikd/libsndfile) from source
- Get the source for [PySoundfile](https://github.com/bastibe/PySoundFile)
- modify the code to load the libsndfile library from `/usr/local/lib/libsndfile.so`
- install PySoundfile (`python setup.py install`)

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