使用Matlab检测两个音频文件中多个点击声音之间的延迟

使用Matlab检测两个音频文件中多个点击声音之间的延迟,matlab,math,audio,signal-processing,Matlab,Math,Audio,Signal Processing,我有两个音轨,大约每秒有一个咔哒声(基本上是短正弦)。采样率为44.1kHz。一次点击大约1000个样本。每个音轨中大约有20-30次点击。相应的点击应该有关于几个样本的错误(最多48个样本) 我可以检测到两个音轨中第一次点击之间的延迟 我知道两种不同的方法: 一, 二, 这两种方法都返回相同的带倒号的值,目前还可以 我想检测所有相应的点击声音之间的延迟 这是另一幅图像,从两个轨迹开始单击: 我怎样才能做到这一点 PS:如果相应的一词用错了,请道歉。我的意思是每秒钟的点击次数。我自己想出了一

我有两个音轨,大约每秒有一个咔哒声(基本上是短正弦)。采样率为44.1kHz。一次点击大约1000个样本。每个音轨中大约有20-30次点击。相应的点击应该有关于几个样本的错误(最多48个样本)

我可以检测到两个音轨中第一次点击之间的延迟

我知道两种不同的方法:

一,

二,

这两种方法都返回相同的带倒号的值,目前还可以

我想检测所有相应的点击声音之间的延迟

这是另一幅图像,从两个轨迹开始单击:

我怎样才能做到这一点


PS:如果相应的
一词用错了,请道歉。我的意思是每秒钟的点击次数。

我自己想出了一个简单的函数。基于声音间隔约为1秒的事实,我在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
函数结果=延迟(文件名)
[pcm,samplerate]=音频读取(文件名);
t1=pcm(:,1);
t2=pcm(:,2);
len=长度(t1);
cnt=1;
结果=[];
而cnt
delay = finddelay(Track1, Track2);
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