声使用麦克风阵列波束形成:记录多通道音频

6视图(30天)
我记录了三个定向声源(角(-50,0),-10;0],[50;0])使用“4通道线性麦克风阵列”。
我试图用“MicrophoneBeamformerExample。m”(< //www.tianjin-qmedu.com/help/phased/examples/acoustic-beamforming-using-a-microphone-array.html >)中提取音频从一个特定的方向。
我已经尝试以下
4)创建通道线性麦克风阵列在MATLAB使用分阶段。OmnidirectionalMicrophoneElement phased.ULA。这是重新创建相同的数组是用来记录音频。
b)使用阶跃函数来创建sigArray
c)使用“分阶段。TimeDelayBeamformer”并试图提取音频从特定的方向。
但是我没有得到所期望的输出。下面是我的代码。任何帮助都是高度赞赏。
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
h = phased.OmnidirectionalMicrophoneElement (“FrequencyRange”20 e3, [20]);
Nele = 4;
%公顷= phased.ULA (Nele, 0.05,“元素”,hmic);
哈= phased.ULA (“元素”h,“NumElements”Nele,
“ElementSpacing”,0.05);
%公顷= phased.ULA (Nele, 0.05,“元素”,h);
c = 340;%的声音的速度,在m / s
oFeq = 16000;
ang_1 = [10;0);
ang_2 = [-50;0);
ang_3 = [50;0);
fs = 16000;
% fs = AudioInput.SampleRate;
t_duration = 29;
t = 0:1 / fs: t_duration-1 / fs;
NSampPerFrame = 1000;
NTSample = t_duration * fs;
sigArray = 0 (NTSample Nele);
isAudio万博1manbetxSupported = helperMicrophoneExampleAudioSupported;
如果isAudio万博1manbetxSupported
hap = dsp.AudioPlayer (“SampleRate”fs);
结束
audioFileName =“ABC_FourChannel_Recording.wav”;
AudioInput = dsp.AudioFileReader (
“OutputDataType”,“双”,
“文件名”audioFileName,
“PlayCount”正,
“SamplesPerFrame”,NSampPerFrame);
m = 1: NSampPerFrame: NTSample
sig_idx = m: m + NSampPerFrame-1;
sigArray (sig_idx:) =步骤(AudioInput);
结束
angSteer = ang_3;
住宅= phased.TimeDelayBeamformer (“SensorArray”,哈,“SampleRate”fs,
“方向”angSteer,“PropagationSpeed”c);
hsig = dsp.SignalSource (“信号”sigArray,
“SamplesPerFrame”,NSampPerFrame);
cbfOut = 0 (NTSample, 1);
m = 1: NSampPerFrame: NTSample
temp =步骤(住宅、步骤(hsig));
如果isAudio万博1manbetxSupported
临时步骤(hap);
结束
cbfOut (m: m + NSampPerFrame-1:) = temp;
结束
情节(t, cbfOut);
包含(的时间(秒));ylabel (“振幅(V)”);
标题(“延时Beamformer输出”);ylim (3 [3]);
住宅= phased.FrostBeamformer (“SensorArray”,哈,“SampleRate”fs,
“PropagationSpeed”c“FilterLength”,20岁,“DirectionSource”,输入端口的);
重置(hsig);
FrostOut = 0 (NTSample, 1);
m = 1: NSampPerFrame: NTSample
% FrostOut (m: m + NSampPerFrame-1:) =步骤(步骤(hsig),住宅ang_dft);
% FrostOut (m: m + NSampPerFrame-1:) =步骤(步骤(hsig),住宅ang_cleanspeech);
FrostOut (m: m + NSampPerFrame-1:) =步骤(步骤(hsig),住宅ang_3);
结束
如果isAudio万博1manbetxSupported
释放(hap);
步骤(hap FrostOut);
结束
情节(t, FrostOut);
包含(的时间(秒));ylabel (“振幅(V)”);
标题(“霜Beamformer输出”);ylim (3 [3]);
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1评论
当归Londono博尔哈
当归Londono博尔哈 2021年4月24日
你好Ashwini,希望你做得很好。
你可能得到这个工作吗?我知道它已经很长一段时间以来你贴出这个问题,但是现在我工作在一个类似的项目。
我想波束形成适用于ps3的眼睛记录和我的代码看起来非常类似于你的但它不是工作。
如果你得到这个工作,我会很感激任何洞察力你可以提供给我。
提前谢谢。

登录置评。

答案(2)

宏磊陈
宏磊陈 2015年10月8日
你用一个wav文件为所有四个频道吗?beamformers工作,你将需要四个独立信号从每个麦克风,否则只是一个频道。
HTH
5个评论
宏磊陈
宏磊陈 2015年10月15日
重要的是信号从各个渠道,如果你的wav文件包含这些信息,那么可以使用它。你的文件包含这些数据吗?

登录置评。


Ashwini斯利瓦斯塔瓦
Ashwini斯利瓦斯塔瓦 2015年10月9日
嗨宏磊,
关于“生活记录”和使用波束形成,我怎样才能连接麦克风阵列的处理和使用它作为输入到“分阶段。FrostBeamformer”(参数:SensorArray) ?
一种方法是创建“分阶段。OmnidirectionalMicrophoneElement”,并通过“phased.ULA”。但问题是,麦克风元素间距是非常具体的我的情况。
有办法直接通过连接麦克风阵列Beamformer吗?
温暖的问候Ashwini
1评论
宏磊陈
宏磊陈 2015年10月15日
你只需要构造根据你的参数数组。用于beamformer的几何信息。HTH

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!