相位差、廣義互相關、相關係數求聲音信號的延時值

最近查了很多文獻,也嘗試了很多方法,可是還是沒有找到一個絕好的方法求同一聲源下相隔一定距離的兩麥克風測得聲音序列的延時值。
目前公認最好的求延時值的方法是廣義互相關法代碼如下

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向前移在這裏插入圖片描述在這裏插入圖片描述
可以看出相關係數還是呈現一定的週期變化的。
還是要繼續努力尋找更好的求延時的方法。
哎,不得不吐槽一下聲音信號的微弱性,很容易就測得不準確了。
在下研一小白一枚,有什麼不準確的地方歡迎批評指正。歡迎交流分享。
謝謝大家

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章