我知道你可以这样做:
[w,fs] = wavread('file.wav');
length = length(w)/fs;
但是我试图减少文件开头和结尾处的噪音,并通过样本块中的波形矩阵然后将该块中的最大样本与一个块中的最大样本进行比较来获得大部分记录的持续时间阈值,如果它大于该阈值,则开始测量,当它小于阈值时停止测量。
这是我的尝试:
w = w(:,1);
thold = max(w) * .04;
nwindows = 1000;
counter = 0;
start = true;
for i = 1:nwindows:length(w)
if (max(w(i:min(i+49,length(w)))) > thold)
counter = counter + 1;
elseif (max(w(i:min(i+49,length(w)))) < thold && start == true)
break;
end
end
result = counter/fs;
现在只需要弄清楚如何从计数器中获取毫秒数。
答案 0 :(得分:1)
根据您的代码段,counter是您要查找的wav文件中的索引。要转换为ms,我们需要使用wav文件采样率:
timeInSec = counter/fs;