我需要通过修剪文件开头和结尾的“相对”静音来计算wav文件的长度,然后以毫秒为单位返回持续时间。我知道你可以找到wav文件的持续时间:
[w,fs] = wavread('file.wav');
length = length(w)/fs;
我的逻辑是使用波形矩阵的第一列(左声道),获得任意阈值,然后通过样本窗口遍历矩阵。如果这些窗口的最大值大于阈值,那么我开始计算那里的时间。当此窗口的最大值小于值时,我停在那里。这就是我到目前为止所做的:
%Just use the first column in the waveform matrix, 2 gives strange results
w = w(:,1);
%Get threshold value by multiplying max amplitude of waveform and
%predetermined percentage (this varies with testing)
thold = max(w) * .04;
需要帮助,了解如何通过采样窗口实际遍历矩阵。
答案 0 :(得分:0)
我不完全确定你想要达到什么目标,但我认为你可以使用自己的建议(某种程度上):
soundIdx = find(abs(w) > thold)
total_time_w_sound = sum(abs(w) > thold)/fs;
time_from_first_sound_to_last = (soundIdx(end)-soundIdx(1))/fs;
这是你想要找到的那个吗?