Example Code

Natural Gradient Algorithm on LabView (For Convolutive Mixing)

Code and Documents

Attachment

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

http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.15.4414

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.

Contributors