BE2M31DSP seminar
Blind separation based on FastICA algorithm
-
Linear mixture of artificially created signal - mixing matrix
- Load signals saved in the following mat-file - tst_signals.mat, where you have available the following signals sampled by sampling frequency 1000 Hz:
- s1 (variable sinusWave02Hz) sinusoid 2 Hz
- s2 (sinusWave10Hz) - sinusoid 20 Hz
- t1 (triangle) - triangular signal
- e1 (exponenciela - periodic exponential pulses
- o1 (rectangle) - periodic rectangular pulses
- b0 (noise_uniform_dist) - white noise with uniform distribution
- b1 (noise_white) - white noise with Gaussian distribution
- c1 (noise_nf) - low-frequency noise with Gaussian distribution
- c2 (noise_vf) - high-frequency noise with Gaussian distribution
- c3 (noise_band) - band noise with Gaussian distribution
- Create 4-channel signal with selected 4 different signals, e.g. e1, t1, s1, b1. Display selected signals in suplots - subplot(411), subplot(412), subplot(413), subplot(414).
- Create 4-channel linear mixture given by the following mixing matrix A=[8 4 6 2; 6 1 3 7; 3 8 1 9; 3 2 3 2] and display the mixture of signals similar way as mentioned above.
- From known mixing matrix A compute inverse matrix W and after its application display separated signals (again same way as mentioned above).
- Realize blind separation on the basis of
FastICA algorithm and observe separated signals using
FastICA same as the estimations of mixing and inverse
matrices (A_ica and W_ica). For the computation
use available functions fastica.m
(you must download remmean.m, pcamat.m, fpica.m, whitenv.m as well), all of these functions aree available in the directory
K:\VYUKA\DSP\m.
- Repeat with the following mixing matrix A=[8 4 6 2; 6 1 3 7; 3 8 1
9; 4 2 3 1] and explain obtained result.
- Repeat with the signals e1, t1, s1, s1 and explain results.
- Repeat with signals b1, c1, c2, c3 (Gaussian noises with various frequency content) and again explain obtained results.
- Result :
- Overview of waveforms of original signals, linear mixtures, and separated signals using ideal inverse matrix or using FastICA-based blind separation.
- Observe also spectra of analyzed and separated signals (estimations of PSD or power spectra), use pwelch for deterministic signals as well, the length of short=time frame should be 512 samples.
-
Separation of 4 simultaneously speaking speakers recorded by a microphone array
- Read any 4 longer utterances from 4 different speakers from the database zreratdb, e.g. T17201S1.CS0, T17217S1.CS0, T17204S1.CS0, T17214S1.CS0 or anyones else. Correct signal lengths according to the length of the shortest signal . Display signals and listen them (fs=16kHz).
- Create 4-channel linear mixture given by the following mixing matrix A=[1 0.9 0.8 0.7; 0.9 1 0.9 0.8; 0.8 0.9 1 0.9; 0.7 0.8 0.9 1], which simulates collection of simultaneous speech of 4 speakers using 4 microphones. Display signal mixture (waveforms and spectrograms) and listen particular signals.
- Realize blind separation based on FastICA algorithm and observe and listen separated signals using FastICA.
- NOTE - Realize listening ALWAYS (!!!) using the function soundsc, which scales the signal amplitudes to the range +/- 1.
- Result :
- waveforms of original signals, linear misture same as separated signals,
- spectrograms of above mentioned original signals, linear misture same as separated signals.
- Repeat the separation of 4 speakers collected using 3 mixtures only (simulation of collection using 3 microphones only) and explain obtained result.