概念问题 - 在wav的开头/结尾修剪“沉默”

时间:2013-03-19 05:43:08

标签: matlab

我需要通过修剪文件开头和结尾的“相对”静音来计算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;

需要帮助,了解如何通过采样窗口实际遍历矩阵。

1 个答案:

答案 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;

这是你想要找到的那个吗?