Code Monkey home page Code Monkey logo

audionotebooks's Introduction

Audio Notebooks

A collection of Jupyter Notebooks related to audio processing.

The notebooks act like interactive utility scripts for converting between different representations, usually stored in data/project/ where project is the dataset you're working with. Generally, if you change data_root near the top of the notebook and run the reset of the notebook, it will do something useful.

Setup

librosa currently needs some extra help on OS X, make sure to follow the instructions here first.

$ brew install ffmpeg # for loading and saving audio
$ git clone https://github.com/kylemcdonald/AudioNotebooks.git
$ cd AudioNotebooks.git
$ pip install -r requirements.txt
$ jupyter notebook

Terminology

Here are some words used in the names of the notebooks, and what they mean:

  • Samples refers to one-shot sounds, usually less than 1-2 seconds long. These can be loaded from a directory, like data/project/samples/ or from a precomputed numpy matrix like data/project/samples.npy. When they are stored in a .npy file, all the samples are necessarily concatenated or expanded to be the same length.
  • Multisamples refers to audio that needs to be segmented into samples.
  • Fingerprints refer to small images, usually 32x32 pixels, representing a small chunk of time like 250ms or 500ms. These are either calculated with CQT, STFT, or another frequency domain analysis technique. They are useful for running t-SNE or training neural nets.
  • Spritesheets are single files with multiple sounds, either visually as fingerprints or sonically as a sequence of sounds, organized carefully so they can be chopped up again later.

Some formats in use:

  • .npy are numpy matrices. Numpy can load and save these very quickly, even for large datasets.
  • .tsv are tab separated files referring to one sample per line, usally with normalized numbers in each column. These are good for loading into openFrameworks apps, or into the browser.
  • .txt are like .tsv but only have one item per line, usually a single string. Also good for loading into openFrameworks apps, or into the browser.
  • .pkl are Pickle files, which is the native Python serialization format, and is used for saving and loading datastructures that have lists of objects with lots of different kinds of values (not just numbers or strings).
  • .h5 is the way the Keras saves the weights for a neural net.
  • .json is good for taking what would usually go into a Pickle file, and saving it in a format that can be loaded onto the web. It's also one of the formats used by Keras, part of a saved model.

Example Workflows

Audio spritesheet

  1. Collect Samples
  2. Samples to Audio Spritesheet

t-SNE embedding for samples

  1. Collect Samples
  2. Samples to Fingerprints
  3. Fingerprints to t-SNE (with mode = "fingerprints")

The standard workflow is to create a t-SNE embedding from fingerprints, but it's also possible to create an embedding after learning a classifier:

  1. Collect Samples
  2. Samples to Fingerprints
  3. Collect Metadata
  4. Metadata to Labels
  5. Fingerprints and Labels to Classifier
  6. Fingerprints to t-SNE (with mode = "combined")

t-SNE embedding for phonemes

Right this only really works with extracting phonemes from transcribed speech, using Gentle.

  1. Gentle to Samples (with save_wav = True)
  2. Samples to Fingerprints
  3. Fingerprints to t-SNE

It's also possible to use Sphinx for speech that does not have transcriptions, but it can be very significantly slower:

  1. Sphinx to Samples
  2. Collect Samples
  3. Samples to Fingerprints
  4. Fingerprints to t-SNE

t-SNE grid fingerprints spritesheet

By virtue of creating a rectangular grid, you may lose some points. This technique will only work on 10-20k points maximum

  1. Collect Samples
  2. Samples to Fingerprints
  3. Fingerprints to t-SNE
  4. Run the example-data app from ofxAssignment or use CloudToGrid to convert a 2d t-SNE embedding to a grid embedding.
  5. Fingerprints to Spritesheet

If you only want a spritesheet without any sorting, skip step 4 and only run step 5 partially.

Predict tags given tagged audio

  1. Collect Samples
  2. Samples to Fingerprints
  3. Collect Metadata
  4. Metadata to Labels
  5. Fingerprints and Labels to Classifier

audionotebooks's People

Contributors

abhiyerra avatar kylemcdonald avatar

Forkers

alokproc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.