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

コード スニペットに基づいて、counter は探している wav ファイルのインデックスです。ms に変換するには、wav ファイルのサンプル レートを使用する必要があります。

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