我想检测给定wav文件中的拍手数量。这是我的第一次尝试。我可以画画,但我怎么打印"只有一个鼓掌"或"有两个鼓掌"在控制台上?你可以建议任何其他方法来解决同样的问题吗?这是我的代码:
hfile = 'two.wav';
[stereo1, Fs, nbits, readinfo] = wavread(hfile);
mono1 = mean(stereo1,2);
M = round(0.01*Fs);
N = 2^nextpow2(4*M);
w = hamming(M);
spectrogram(mono1,w,120,N,Fs);
答案 0 :(得分:1)
首先获取光谱图的实际输出,而不是仅绘制它。
[S,F,T,P] = spectrogram(mono1,w,120,N,Fs);
我假设在该频谱图中有明显的特征,你可以将其识别为表示一个"拍手",也许是给定频段内的某种功率峰值。输出P
表示给定F(频率组)和T(时间组)的功率,因此您可以执行以下操作:
% take the segment of P relating to your frequencies of interest
P2 = P(F>thresh_l&F<thresh_h,:);
%show the mean power in that band over time
m = mean(P2);
plot(T,m);
然后,您可以查找平均功率突然上升的情况,并将其中的每一个计为&#34;一个拍手&#34;。在确定阈值时,您必须小心,特别是如果拍手没有很好地分开。