Summary of blind source separation using temporal predictability
The accompanying MATLAB code (version 5.2) demonstrates how to separate three mixtures of three signals (eg speech) which have arbitrary pdfs.
The code executes the method described in the paper:
Stone, J. V. 'Blind source separation using temporal predictability', Neural Computation, 13(7), July 2001.
Downloading the code
The code contained in DEMO_BSS.tar (32K) can be downloaded, after a brief registration form has been completed.
Use a tar tool to unpack files.
The resultant directory (DEMO_BSS) contains five files:
demo_BSS.m The main code
get_data.m Read in and synthesise data for processing
why.wav Speech signal
licence_agreement.txt Conditions for use
Using the code
Set the current directory to the one containing the files named above. To run the code, type "demo_BSS" on the MATLAB command line.
There are two demonstrations, which are set via the variable demo_id=[1,2] in the file demo_BSS.m (default = 2).
The program is demonstrated on three signals:
Sub-Gaussian (sine wave)
Gaussian (ordered gaussian noise)
The program makes use of three MATLAB sound files. The sounds are played during the demonstration. The path associated with these sound files needs to be set in the file get_data.m to: Matlab5:Toolbox:matlab:datafun:
For both demonstrations, results are presented as follows. The program plots the three signal mixtures in figure 1. The original signals and the recovered signals are plotted in figure 2. A correlation matrix is printed in the command window. Each entry in this matrix is the correlation between one source signal and one recovered signal.
For example, the program output should look like this for demonstration 2:
Correlations between sources and recovered signals...
0.0171 0.9998 0.0012
0.9993 0.0001 0.0129
0.0778 0.0081 0.9996
The code has been tested on a PC and a Mac.