Note, two files are RAR'ed : the Natural Grad program and a stereo wav file.
Illustrates the Natural Gradient algorithm. It is used here to separate a mixture of 2 speech signals which have been
mixed with an autoregressive (AR) order 2 system (vector differeence equation) ie
Y(k)=-A1Y(k-1)-A2Y(k-2)+U(k)
where U(k) is a vector [u1(k) u2(k)]' composed of pure speech whilst
Y(k)=[y1(k) y2(k)]' is mixed speech. Although not totally realistic the program can be used to separate real recorded speech.
The attached filed should be used to illustrate the example. It is a stereo file with the separate outputs of the mixture as each channel.
After 3087 (ish) sample it should converge and the speech should be separated back to clean speech. This is known as blind source separation (BSS).
Unfortunately there appears to be no way to make the algorithm stop of its own accord (unlike say LMS) so it keeps going. You can monitor the outputs
as you go along and halt the program manually of course.
The two matrices used are
A1=[-1 -0.4]
[0.3 -0.7]
A2=[0.6 0.3]
[-0.5 0.5]
So if you use a second order FIR filter (multivariable) filter you should get the above matrices when normalised (ie A0= identity matrix). That is the AR systems inverse is
a moving-average (MA) one (FIR).
Tom.Moir@aut.ac.nz AUT University Auckland New-Zealand.
See a video demo here
http://www.youtube.com/watch?v=V_4yrwh9PXk&feature=player_embedded
see the reference used
Multichannel Blind Deconvolution of Non-minimum phase systems using information backpropogation (1999)
Zhang,Cichocki and Amari
I am only using the minimum phase part. Doesn't work on NMP systems at present.
Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.