Since we had already achieved real-time DOA detection before, I was supposed to testify the effectiveness of the beamforming algorithm with real time data. For the convenience of the verification, I recorded a new audio with a 4000Hz sinusoidal signal, naming the file ‘uPhoneArray_LoudSignal.bin’. Assuming that background noise is white Gaussian distributed, beamforming based on a 64-microphone array could theoretically raise SNR by roughly 18dB, which has been proved mathematically and under simulation environment (See Pic. 1).

However, the result (See Pic. 2) from real data was so disappointing that Mr. Richter Ed and I got stuck to this problem for two weeks. We recalculated the theoretical improvement on SNR, tested the accuracy of Matlab code function by function, block by block and adjusted the way we computed SNR. Everything seemingly worked correctly except SNR. By the end of the 6th week, we were still not able to pinpoint the conflict. Amplification difference among 64 microphones, non-while-Gaussian-distributed noise, the approach to gain signal and noise power, the DC component in signal and so on may all result in the deviation from theory.

Pic. 1 - Simulation: From the upper subplot, the power of signal is improved by 36 dB and the power of noise is improved by 18 dB. From the lower subplot, the SNR is improved by 18 dB.

Pic. 2 – Real data: From the upper subplot, the improvements on power of both signal and noise are much less than respectively 36 dB and 18 dB. From the lower subplot, the SNR for each microphone varies greatly and the SNR of beamforming-adjusted signal is worse than that of the majority of microphones.