Skip to content

Semi-Supervised Separation of Sounds from Single-Channel Mixtures By Probabilistic Latent Component Analysis

Notifications You must be signed in to change notification settings

naeioi/PLCA-sound-separation

Repository files navigation

Semi-Supervised Separation of Sounds from Single-Channel Mixtures By Probabilistic Latent Component Analysis


Introduction

This an implementaion of Probabilistic Latent Component Analysis model, which is essentially a EM-style non-negative matrix factorization algorithm. This example extracts piano sounds from single-channel mixed of music.

This is done by first learning P(f|z) from piano samples, which is later used to partially fix P(f|z) in training on mixed music. Then reconstruct spectrogram from P(f|z), P(t|z) and P(z) with P(z') = 0 for all z' other than piano features.

Usage

Dependency: numpy, scipy, matplotlib

You should install Jupyter notebook to run the code in example.ipynb. Running the notebook produce a extracted_piano.wav in local directory. Please take a look at the piano sample used for training and the original mixed music in dataset folder.

You may also want to fine-tune parameters for best performance by changing count of latent variables zn passed to train() and train_given_Pf().


Credit: Spectrogram construct By Frank Zalkow. Please refer to this blog page.

Piano samples and mixed music are produced with Online Sequencer.

Melody in mixed music is the prelude of Bad Apple originally by ZUN and rearranged by Alstroemeria Records.

[1] P. Smaragdis, B. Raj and M. Shashanka, A Probabilistic Latent Variable Model for Acoustic Modeling, Proc. Neural Information Processing Systems Workshop on Advances in Models for Acoustic Processing, 2006.

About

Semi-Supervised Separation of Sounds from Single-Channel Mixtures By Probabilistic Latent Component Analysis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published