💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
文献来源:
从实地录音中检测鸟鸣对于在生物声学监测中识别鸟类物种至关重要。录音设备的变化、环境条件和其他动物的鸣叫声都使鸟鸣检测变得非常具有挑战性。为了克服这些挑战,我们提出了一个包括两个主要阶段的无监督算法。在第一阶段,提出了一种使用多窗口Savitzky-Golay(MWSG)滤波器的频谱图增强技术。我们展示了使用MWSG滤波器的频谱估计是无偏的,并且与单窗口的对应物相比具有较低的方差。众所周知,鸟鸣在时频(T-F)平面上具有高度结构化。在所提出的方法的第二阶段中,我们利用增强的频谱图中特定方向的T-F活动的突出线索,用于鸟鸣检测。在这方面,我们使用一组四个移动平均滤波器,当应用于增强的频谱图时,产生捕获特定方向信息的方向性频谱图。我们提出了一个阈值方案,用于从每个方向性频谱图计算的时间变化能量剖面中获得帧级别的鸟鸣活动的二进制决策。然后将这些个别决策组合以获得最终决策。我们使用了三个不同的数据集进行实验,记录和噪声条件各不相同。帧级别的F分数被用作鸟鸣检测的评估指标。我们发现,与本文考虑的六种基准方案中最佳方案相比,所提出的方法平均实现了更高的F分数(相对增加了10.24%)。
环境监测已经变得至关重要,因为栖息地的丧失增加和全球气候的变化正在推动各种植物和动物物种灭绝[1],[2]。生物声学监测是研究和支持濒危动物和鸟类保护工作的一种流行方法[3]。生物声学信号通常捕捉不同物种的鸣叫声,这可以揭示它们在栖息地中的行为和互动。随着记录传感器的可用性[4],生物声学监测可以在一天中的任何时间提供研究人员和保护人员丰富的物种和生存环境信息。已经采取了这样的努力来识别和研究鸟类[5],[6];昆虫[7],[8];以及其他动物,如青蛙[9],大象[10]等。在监测鸟类时,通常感兴趣的是从生物声学信号中识别或分类鸟类物种。在物种分类之前的一个基本步骤是从记录的信号中检测鸟鸣声。鸟鸣检测是在给定嘈杂的生物声学音频中识别鸟类声学的任务,从而将录音分割成鸟鸣声和噪声。分割是一个关键步骤,它可以影响鸟类鸣叫识别系统的性能[11]。与原始数据相比,分割的数据在计算时间方面有助于进一步的分析,因为它减少了分类算法的搜索空间。本研究侧重于在无监督设置中,即在给定的音频信号中自动找到包含鸟鸣声的时间段的自动鸟鸣检测。
📚2 运行结果
部分代码:
%% Step 1 MWSG Filter
% Compute the MWSG spectrogram for the given audio signal
disp('Reading wav File');
[signal,fs]=audioread('../data/PC5_20090606_050000_0010.wav'); %% MLSP audio file
% Parameters
M=21; %Matrix length required to calculate SG coefficents
P=3; %Order required to calculate SG coefficents
nfft=512; %FFT Order
shift=256; % Shift
winlength=512;% Window Length
disp('Computing MWSG Spectrogram');
MWSG=compute_MWSG_Spec(signal,fs,M,P);
%% Step 2 Directionality
% Calculate the directional spectrograms based on MWSG Spectrogram
% Parameters
len=11; % No of array values to be summed up in the required direction
disp('Computing directional Spectrograms on MWSG Spectrogram');
[x_D1,x_D2,x_D3,x_D4,DAll]=compute_Dir_Spec_From_MWSG(MWSG,len);
%% Step 3 Segmentation
% Calculating Predicted frames for each directed spectrogam
disp('Computing Predicted Frames');
d1=segment(x_D1); % Predicted frames at 0 degrees directed spectrogram
d2=segment(x_D2); % Predicted frames at 0 degrees directed spectrogram
d3=segment(x_D3); % Predicted frames at 0 degrees directed spectrogram
d4=segment(x_D4); % Predicted frames at 0 degrees directed spectrogram
% Final Predicted frames(d) = max(each directional predicted frame)
d= (d1+d3+d2+d4);
d(d>0)=1;
%% Figures
% Just to get Frequency and Time Points
[~,F,T,~]=spectrogram(signal,winlength,shift,nfft,fs);
% Loading ground truth frames
disp('Reading GroundTruth');
load('../data/GroundTruth.txt');
disp('Saving Figures');
h = figure;
set(h, 'Visible', 'off');
figure()
subplot(3,1,1);
time=(1:length(signal))/fs;
plot(time,signal); % Signal
title('Signal');
xlabel('Time in sec');
ylabel('Amplitute');
subplot(3,1,2);
surf(T,F,10*log10(MWSG),'EdgeColor','none'); %MWSG Spectrogram
view(0,90);
axis tight;
title('MWSG Spectrogram');
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。