相位差、广义互相关、相关系数求声音信号的延时值

最近查了很多文献,也尝试了很多方法,可是还是没有找到一个绝好的方法求同一声源下相隔一定距离的两麦克风测得声音序列的延时值。
目前公认最好的求延时值的方法是广义互相关法代码如下

ay=xlsread('C:\Users\solid\Desktop\最新测试\o1.xlsx','B2:B4002');
ax=xlsread('C:\Users\solid\Desktop\最新测试\o1.xlsx','D2:D4002');
afs=8000;%采样频率
N=max(size(ay));%采样数
[R1,a1]=xcorr(ax,ay);%原始数据用互相关法求延时
[Rmax1,Rloc1]=max(R1);
t1=abs((Rloc1-N)/afs)

局限在互相关法有时会出现延时值不准的情况。而且大多数情况下声源为混频信号时延时值相较于更加准确。
因此尝试采用对两麦克风采集到的信号使用快速傅里叶变换,变换后最大幅值所对应频率可以更好的还原原信号,对此频率下两信号的相角做差,再换算为一周期内的延时信号。采用此方法算得延时值相对更加准确一些(尤其是对单频1KHz情况)因为1khz单频信号在频域下两信号最大幅值所对应的频率数值相同,但是混频时理论上是相同,可实际上总是不一样,因此混频下无法找到同一个最大幅值对应的频率。故此方法搁浅。代码就不放了有有兴趣的同学咱们私聊(q:530956317)然后想着试试对混频信号进行滤波试试,目前只用了一种滤波器butterworth滤波器。
采用了低通滤波器截止频率为1000hz,效果一般,可以区分出混频时两信号最大幅值所对应的同一频率最后,我又尝试了通过平移序列的方法找到相关系数最大的点,想着能够通过相关系数对延时值进行修正,结果时单频信号延时值越准却,平移序列后最大相关点出的相关系数值就越大。可是混频信号的数值飘忽不定又让我想到了放弃这种方法


N=4000;%采样数
fs=8000;%采样频率
x0=xlsread('C:\Users\solid\Desktop\最新测试\a3.xlsx','A2:A4002');
x1=xlsread('C:\Users\solid\Desktop\最新测试\a3.xlsx','B2:B4002');
x2=xlsread('C:\Users\solid\Desktop\最新测试\a3.xlsx','D2:D4002');
A=[];
A(1)=abs(corr(x1, x2, 'type' , 'kendall'));
A(2)=abs(corr(x1(2:end), x2(1:end-1), 'type' , 'kendall'));
if A(1)<A(2)
    for i=3:1:10
        A=[A,abs(corr(x1(i:end), x2(1:end-i+1), 'type' , 'kendall'))];
        if A(i)>=A(i-1)
            i=i+1;
        else
            break
        end
    end
else
        for i=2:1:10
            B(1)=abs(corr(x1, x2, 'type' , 'kendall'));
            B=[B,abs(corr(x2(i:end), x1(1:end-i+1), 'type' , 'kendall'))];
        if  B(i)>=B(i-1)
            i=i+1;
        else
            break
        end
    end
end
t2=(i-2)*(1/fs);
C=[];
for j=15: -1 :2
    C=[C,corr(x2(j:end), x1(1:end-j+1), 'type' , 'kendall')];
end
for j=1: 1 :15
    C=[C,corr(x1(j:end), x2(1:end-j+1), 'type' , 'kendall')];
end
D=-14: 1 :14;
stem(D,C)
title('平移后两信号相关系数');
[序列0+为x1向后移,x2向前移。序列0-为x2向后移,x1向前移

[序列0+为x1向后移,x2向前移。序列0-为x2向后移,x1向前移在这里插入图片描述在这里插入图片描述
可以看出相关系数还是呈现一定的周期变化的。
还是要继续努力寻找更好的求延时的方法。
哎,不得不吐槽一下声音信号的微弱性,很容易就测得不准确了。
在下研一小白一枚,有什么不准确的地方欢迎批评指正。欢迎交流分享。
谢谢大家

  • 7
    点赞
  • 11
    评论
  • 18
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值