How to use MVDREstimator2D with real acoustic signals received by rectangle Microphone array ?
Show older comments
Hi,I have a microphone array consisting of 8 MEMS microphones, and I recorded an audio piece for testing the MVDREstimator2D.
Before the test, I made a simulation with chirp signal and my array successfully. But what confuses me is that the real signal test result is so bad.
I want to know the reason and how to solve this problem.
My recording code is as follows:
clear; close all; clc;
%The sample rate of my array is 44100
deviceReader = audioDeviceReader('Device','MicArray (YDM8MIC Audio)','ChannelMappingSource','Auto','NumChannels',8);
setup(deviceReader);
fileWriter = dsp.AudioFileWriter('audio_for_test/mySpeech.wav','FileFormat','WAV');
disp('Start...');
tic
while toc < 5 % Record for 5 seconds
acquiredAudio = deviceReader();
fileWriter(acquiredAudio);
end
disp('End');
release(deviceReader)
release(fileWriter)
My estimator code:
close all;clear;
clc;
microphone = phased.OmnidirectionalMicrophoneElement;
array = phased.URA('Size',[2 4],'ElementSpacing',[0.03 0.03],'Element',microphone); % Just as my real array
estimator = phased.MVDREstimator2D('SensorArray',array,...
'DOAOutputPort',true,'NumSignals',1,'OperatingFrequency',44100,'PropagationSpeed',343, ...
'AzimuthScanAngles',-90:90,...
'ElevationScanAngles',-90:90);
[~,doas] = estimator(data); % data is from mySpeech.wav
figure;
plotSpectrum(estimator);
xlabel('Azi(degree)')
ylabel('Ele(degree)')
zlabel('Power(dB)');

My test audio file ‘mySpeech.wav’ is stored in the compressed file attached.
Accepted Answer
More Answers (0)
Categories
Find more on Direction of Arrival Estimation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!