Skip to content

Commit c7bd6b5

Browse files
Update example.m
1 parent 0d64ca5 commit c7bd6b5

File tree

1 file changed

+24
-28
lines changed

1 file changed

+24
-28
lines changed

ssl_tools/example/example.m

+24-28
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,39 @@
22

33
addpath(genpath('./../'));
44
addpath('./wav files');
5-
%% Input File & Mic config
6-
fileName = 'male_female_mixture.wav';
5+
%% 音频文件和传声器位置坐标
6+
fileName = 'example.wav';
77
micPos = ...
88
...% mic1 mic2 mic3 mic4 mic5 mic6 mic7 mic8
99
[ 0.037 -0.034 -0.056 -0.056 -0.037 0.034 0.056 0.056; % x
1010
0.056 0.056 0.037 -0.034 -0.056 -0.056 -0.037 0.034; % y
1111
-0.038 0.038 -0.038 0.038 -0.038 0.038 -0.038 0.038]; % z
1212

1313

14-
azBound = [-180 180]; % 方位角搜索范围
15-
elBound = [-90 90]; % 俯仰角搜索范围。若只有水平面:则elBound=0;
16-
gridRes = 1; % 方位角/俯仰角的分辨率
17-
alphaRes = 5; % Resolution (? of the 2D reference system defined for each microphone pair
14+
azBound = [-180 180]; % 方位角搜索范围
15+
elBound = [-90 90]; % 俯仰角搜索范围。若只有水平面:则elBound=0;
16+
gridRes = 1; % 方位角/俯仰角的分辨率
17+
alphaRes = 5; % 分辨率
1818

19-
% method = 'SRP-PHAT';
20-
% method = 'SNR-MVDR';
21-
% method = 'SNR-FWMVDR';
2219
method = 'MUSIC';
2320
wlen = 512;
2421
window = hann(wlen);
2522
noverlap = 0.5*wlen;
2623
nfft = 512;
27-
nsrc = 2; % 声源个数
28-
c = 343; % 声速
29-
freqRange = []; % 计算的频率范围 []为所有频率
30-
pooling = 'max'; % 如何聚合各帧的结果:所有帧取最大或求和{'max' 'sum'}
31-
%% 读取音频文件(fix)
24+
nsrc = 2; % 声源个数
25+
c = 343; % 声速
26+
freqRange = []; % 计算的频率范围 []为所有频率
27+
pooling = 'max'; % 如何聚合各帧的结果:所有帧取最大或求和{'max' 'sum'}
28+
29+
%% 读取音频文件(fix)
3230
[x,fs] = audioread(fileName);
33-
[nSample,nChannel]=size(x);
34-
if nChannel>nSample, error('ERROR:输入信号为nSample x nChannel'); end
31+
[nSample,nChannel] = size(x);
32+
if nChannel>nSample, error('ERROR:输入信号为nSample x nChannel'); end
3533
[~,nMic,~] = size(micPos);
36-
if nChannel~=nMic, error('ERROR:麦克风数应与信号通道数相等'); end
37-
%% 保存参数(fix)
34+
if nChannel~=nMic, error('ERROR:麦克风数应与信号通道数相等'); end
35+
%% 保存参数(fix)
3836
Param = pre_paramInit(c,window, noverlap, nfft,pooling,azBound,elBound,gridRes,alphaRes,fs,freqRange,micPos);
39-
%% 定位(fix)
37+
%% 定位(fix)
4038
if strfind(method,'SRP')
4139
specGlobal = doa_srp(x,method, Param);
4240
elseif strfind(method,'SNR')
@@ -45,19 +43,17 @@
4543
specGlobal = doa_music(x,Param,nsrc);
4644
else
4745
end
48-
% save('n.mat','specGlobal');
49-
% ppfSpec2D = (reshape(specGlobal,length(Param.azimuth),length(Param.elevation)))';
50-
% imagesc(ppfSpec2D)
51-
%% 计算角度
52-
minAngle = 10; % 搜索时两峰之间最小夹角
53-
specDisplay = 1; % 是否展示角度谱{1,0}
46+
47+
%% 计算角度
48+
minAngle = 10; % 搜索时两峰之间最小夹角
49+
specDisplay = 1; % 是否展示角度谱{1,0}
5450
% pfEstAngles = post_sslResult(specGlobal, nsrc, Param.azimuth, Param.elevation, minAngle);
55-
% 绘制角谱
51+
% 绘制角谱
5652
% [pfEstAngles,figHandle] = post_findPeaks(specGlobal, Param.azimuth, Param.elevation, Param.azimuthGrid, Param.elevationGrid, nsrc, minAngle, specDisplay);
5753
[pfEstAngles,figHandle] = post_findPeaks(specGlobal, Param.azimuth, Param.elevation, Param.azimuthGrid, Param.elevationGrid, nsrc, minAngle, specDisplay);
5854

5955
azEst = pfEstAngles(:,1)';
6056
elEst = pfEstAngles(:,2)';
6157
for i = 1:nsrc
62-
fprintf('Estimated source %d : \n Azimuth (Theta): %.0f \t Elevation (Phi): %.0f \n\n',i,azEst(i),elEst(i));
63-
end
58+
fprintf('%d 个声源方位为: \n Azimuth (Theta): %.0f \t Elevation (Phi): %.0f \n\n',i,azEst(i),elEst(i));
59+
end

0 commit comments

Comments
 (0)