1

我知道你可以这样做:

[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;

现在只需要弄清楚如何从计数器中获得毫秒数。

4

1 回答 1

1

根据您的代码片段,计数器是您要查找的 wav 文件中的索引。要转换为 ms,我们需要使用 wav 文件采样率:

 timeInSec = counter/fs;
于 2013-03-19T07:26:08.260 回答