Open ICA

An implementation of blind source separation for acoustic sound sources based on frequency-domain independent component analysis

What's Open ICA?

“Open ICA” is an implementation of blind source separation (BSS) for acoustic sound sources based on frequency-domain independent component analysis (FDICA). In these days, many researchers have been reported that ICA can separate acoustic sound sources, and proposed various methods for ICA-based BSS. In “OpenICA”, it is implemented by infomax-type FDICA, and “OpenICA” can treat convolutive problems. “OpenICA” includes the following programs:

  1. bt_ica (batch algorithm)

    A batch algorithm for FDICA-based BSS using higher-order statistics. This program processes recorded audio files (only 'raw' file is supported), and output separated signals.

  2. rt_ica (real-time (block wise batch) algorithm)

    A block wise batch algorithm for FDICA-based BSS using higher-order statistics. This program processes the audio device's input and outputs the separated signals from audio device's output in real-time. This programs uses OSS as sound API.

  3. mk_nbf

    An initial separation matrix generator based on null beamformer.

These programs are implemented based on C/C++, and supports only Linux platforms. Open ICA is not sufficiently tested. It may contains many bugs, and no optimized codes.

Requirements

Open ICA is only tested in the following environment. No test is conducted another environment.

OS Debian/GNU Linux 4.0 (etch)
CPU Intel(R) Xeon(TM) X5355 (4 CPUs)
RAM 1G bytes
CPU g++(GCC) 4.1.2 20061115 (Debian 4.1.1-21)
Audio device RME Hammerfall DSP + Multiface
Sound Driver alsa-1.0.15
Microphone OMNI-directional Sony ECM-C115 (x 2)
Microphone Amp. Audio Technica AT-MA2

If the following requirements are satisfied, it may work normally.

OS Linux
CPU Supports Symmetric Multi Processing(SMP) - (for block wise algorithm)
RAM free 64M bytes physical space
Endian little endian
Sound API OSS (alsa-oss)
Audio device Supports, full-duplex I/O mode, stereo I/O, 16k Hz sampling, little endian, and 16 bit quantization.
Libs. libm, libpthread

Download

All releases of Open ICA are available here (sourceforge.jp)

SVN

You can checkout from openica as follows

$ svn checkout http://svn.sourceforge.jp/svnroot/openica/openica [target]

Sample input file for bt_ica

Sample 2 channel input files are available here

This sample archive contains 2 channle input files which are little endian, 16 kHz sampled, 16 bits raw files.

Build

Just make in the OpenICA directory. And, if you want to rebuild or clean, make as follows.

$ make rebuild
$ make clean

If you want to enter the debug mode, editing the config file and enable “#define __DEBUG”. However, in the debug mode, any useful information is not obtained now. Moreover, we can change accuracy of floating point accuracy with change the definition of the type 'FLOAT' in config.hh. Note that float as FLOAT is not tested sufficiently.

Supported audio format of bt_ica

bt_ica which is a batch algorithm type FDICA-based BSS only supports the following audio format.

  1. RAW file, little endian, signed 16 bit

Usage

Sorry, now under construction. Please refer to Usage.txt in the archive.

Known issues

  1. In some audio devices or systems, noisy output occurs in rt_ica.

    rt_ica set the very small fragment size of the audio I/O to work. Very small fragment causes noisy output because of overhead of write system call.

Licence

Copyright (c) 2008 Yu Takahashi, Shikano-Lab., Nara Institute of Science and Technology (NAIST)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

Acknowledgement

I would like to thank all researchers of ICA, and Shikano-Lab. members.

I also would like to thank ``sourceforge.jp'' which supports many open source projects. SourceForge.jp

Contact

yuu-t@users.sourceforge.jp

Yu Takahashi, Shikano-Lab, Nara Institute of Science and Technology.