Blind Source Separation Using Temporal Predictability
The accompanying matlab code (version 5.2) demonstrates how to separate
three mixtures of three signals (e.g. speech) which have arbitrary pdfs.
The code executes the method described in the paper:
"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:
- README.html: This file.
- demo_BSS.m: The main code.
- get_data.m: Read in and synthesize 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:
- super-gaussian (speech)
- 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.
Psychology Department, Sheffield University, Sheffield, S10 2UR, England.