使用MATLAB检测Claps数量

时间:2014-03-11 23:32:01

标签: matlab

我想检测给定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);

1 个答案:

答案 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;。在确定阈值时,您必须小心,特别是如果拍手没有很好地分开。