Using Scikit’s ICA to separate audio sources

Standard

ICA / Independent Component Analysis, is one of the decomposition methods that is capable of decomposing multivariate signals into components, based on the assumption that the source components are statistically independent from each other, and follow a non-gaussian distribution.

The classic application of ICA is in cocktail party problem. Say in a cocktail party, you set up two or more microphones on different locations to record two separate conversations. Each of those microphones would pick up both of the conversations simultaneously, thus you’d expect to hear conversation #1 on both microphones, etc.With ICA, we could (to certain degree) separate those recordings into 2 audio streams that isolate those conversations.

Here’s my example code on using scikit’s Fast ICA to separate audio signal: https://github.com/subokita/Sandbox/blob/master/blind_source.py

You can find a variety of audio data from http://www.ism.ac.jp/~shiro/research/blindsep.html. Those data range from straightforward linear mixture, to some of the more difficult environments.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s