Starting from:
$35

$29

Project: Blind source separation using ICA Solution




Introduction




For the final project, you will use all the material you have learned over the course of the labs to build an audio application that employs Blind Source Separation(BSS) using the Fast Independent Components Analysis(FastICA) algorithm. There is an initial deliverable due the week of November 19th in order to ensure you are making sufficient progress to succeed in the project. The project can be broken down into the following steps:




Generation, mixing and storing of sine wave signals



FastICA implementation and testing via separating the mixed sine waves.



Item (1) will be initially demonstrated and documented in the first deliverable; item (2) along with the entire project will be demonstrated and documented in the final deliverable. Guidelines for the reports will be released separately.




Schedule




Note: the schedule is subject to refinement. Demos are expected to be scheduled at the end of their respective weeks.




Mon Nov 12: First deliverable demo week



Mon Nov 19: First deliverable report due



Mon Nov 26: Final deliverable demo week



Tue Dec 4: Final deliverable report due





















Grading




16% First demo 24% First report 24% Final demo 36% Final report







1
ECSE 444 Project










Sine wave generation




You can generate samples of a sine signal via the formula:




 

s(t) = sin 2 f

t



Ts




Here, f is the frequency of the signal and Ts is the sampling frequency, which should be set to 16000 samples/second. Therefore, if you want to generate samples worth 2 seconds of a sine wave, you must generate 32000 samples of s(t), with t 2 [0; 31999]. You should use the CMSIS-DSP library functions to generate the samples.




To verify that the sine wave is correctly generated, set the frequency to 440 Hz and write the sam-ples to the DAC to hear the sound on the headphones, and compare the sound with the sound of a 440 Hz sine wave via this link. To write samples to the DAC, use timer interrupts with the timeout period equal to the sampling frequency. Note that you will have to scale the signal to have a suitable amplitude for the DAC resolution (8 or 12 bits), and also provide a DC offset to the signal (since the lowest value you can write to the DAC is 0, whereas a sine wave has negative samples). You may also verify your sine wave is correctly generated by probing the DAC output with the oscilloscope and measuring the frequency, or by printing out the samples and plotting them in MATLAB.




Once you have verified that your sine wave generation is correct, you must think about how to store the wave. We only have 1 MB of flash memory and 128 kB of SRAM in the MCU, while 1 sec-ond of sine wave data requires 64 kB of memory (assuming it is stored as 32 bit floats or integers). To store your generated data, you must make use of the 8 MB Quad-SPI external flash memory on the board. This document will provide you with all the necessary information you need to success-fully use the QSPI flash memory.




Finally, create 32000 samples each of two sine waves s1(t) and s2(t), each sampled at a rate of Ts = 16000 samples/second, and with a frequency of f1 and f2 respectively (A pleasant example for frequency values could be C4and G4 from the table here). Next, create a 2x2 mixing matrix







A = a11 a12 ;

a21 a22




in which you may choose the mixing coefficients aij that are used to mix the signals s1(t) and s2(t).

Finally, produce the signals x1(t) and x2(t), obtained via the matrix multiplication:
x2
(t)
=
a21
a22
x1
(t)


a11
a12



s2
(t)
:
s1
(t)





If you play s1(t) and s2(t) separately on the left and right headphone, you will notice a clear sine wave tone, while when playing x1(t) and x2(t) you will notice that each of them contains two notes that are a linear combination of the original sines. The signals x1(t) and x2(t) will be unmixed to via FastICA in the next section to recover the original signals s1(t) and s2(t).




Fast Independent components analysis




ICA is arguably the most popular algorithm used for blind source separation. The algorithm basi-cally takes as input the mixed observations x1(t) and x2(t), and works to estimate the mixing matrix A (from the previous section) via recursive gradient ascent. This link describes the algorithm and provides examples of an implementation, and should be sufficient to succeed in this task.




Note: This algorithm can make heavy use of many of the CMSIS-DSP library functions






Version #2 2 Release Date: 14 Nov 2018
ECSE 444 Project










Specifications and tasks to present




The implementation details are left open to you in order to provide you with a vast array of design choices. Over the course of the project, you will face several hardware and software limitations, due to which you may have to turn to strategies such as DMA, interrupts, CMSIS-DSP, OS threads and synchronization, etc. You must also design the user-interface of your application for playback, recording, and separation. The UI can be implemented via USART, or even the push-button and simple printf’s.




The high level deliverables are highlighted below:













Initial deliverable




You must correctly demonstrate that your application is able to:




Generate sine waves of a desired frequency (via playback on DAC). Play and store mixed sine waves.




You should be able to explain and account for all design choices that you have made.













Final project




You must correctly demonstrate that your application is able to perform FastICA BSS on the mixed sine waves generated in the first deliverable, and should be able to explain and account for all design choices that you have made. Note that you will need to provide some justification as to how you have determined that the original source signals have been successfully recovered (eg. Compare original and estimated mixing matrices, measure frequency of unmixed signals via FFT, etc.)
























































































Version #2 3 Release Date: 14 Nov 2018

More products