我有两个音轨,大约每秒都有一个咔哒声(基本上是短正弦)。采样率为44.1kHz。一次点击大约需要1000个样本。每首曲目大约有20到30次点击。相应的点击应该有几个样本的错误(最多48个样本)。
我可以检测到两首曲目中第一次点击之间的延迟。
我知道两种不同的方法:
1
[c, lags] = xcorr(Track1, Track2);
[max_c, I] = max(c);
delay = lags(I);
2
delay = finddelay(Track1, Track2);
两种方法都使用反转符号返回相同的值,现在可以。
我想检测所有相应点击声音之间的延迟。
这是从两个曲目开始点击的另一张图片:
我怎样才能做到这一点?
PS:抱歉,如果使用错误的corresponding
这个词。我的意思是相应秒的点击次数。
答案 0 :(得分:0)
我自己想出了一个简单的功能。基于声音间隔大约一秒的事实,我迭代PCM数据并以采样率递增计数器。
function result = delays(filename)
[pcm, samplerate] = audioread(filename);
t1 = pcm(:,1);
t2 = pcm(:,2);
len = length(t1);
cnt = 1;
result = [];
while cnt < len
delay = finddelay(t1(cnt:end), t2(cnt:end));
result = [result delay];
cnt = cnt + samplerate;
end
end