查看: 368|回复: 4|关注: 0

[已解决] 广义互相关中噪声问题

[复制链接]

新手

9 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
宋老师你好,我在对加噪后语音信号进行分帧,结果发现不论噪声SNR多大,结果都会失效。我看过老师在https://www.ilovematlab.cn/thread-485042-1-1.html这个帖子中的解答,感觉自己不是重复加噪的问题。所以想请教老师帮忙看下程序。

clc,clear;
close all
[x0,fs]=audioread('狙击步枪2.wav');
x0=x0(1e5:3.5e5);
xx=x0-mean(x0);                         % 消除直流分量
x1=xx/max(abs(xx));                      % 幅值归一化
S1=[zeros(1,200),x1];
S2=[x1,zeros(1,200)];
wlen=600; inc=300;          % 给出帧长和帧移
win=hanning(wlen);         % 给出海宁窗
N=length(x1);               % 信号长度
X1=enframe(S1,win,inc)';     % 分帧
X2=enframe(S2,win,inc)';     % 分帧
fn=size(X1,2);              % 求出帧数
time=(0:N-1)/fs;           % 计算出信号的时间刻度
% S1=Gnoisegen(S1,20);
% S2=Gnoisegen(S2,20);

a=gccfun1(X1,X2,'basic',wlen,fn);
b=gccfun1(X1,X2,'PHAT',wlen,fn);

function xxx=gccfun1(x1,x2,fun,wlen,fn)

X1=fft(x1);
X2=fft(x2);
a =(X1).*conj(X1);
b = (X2).*conj(X2);
c = (X1).*conj(X2);
if strcmpi(fun,'PHAT')
X12=(c)./(abs(c)); %%PHAT
elseif strcmpi(fun,'basic')
X12=(X1).*conj(X2);
end
x12=ifft(X12);
[maxx,a1]=max(x12);
% xx=[a1;x12(a1)];
a1=a1-1;
for i =1:fn
if a1(i)>(wlen/2)
    a1(i)=a1(i)-wlen;   
end
end
xxx=a1;

论坛优秀回答者

17

主题

5254

帖子

1133

最佳答案
  • 关注者: 658
发表于 2019-8-27 12:16:12 | 显示全部楼层
对于LZ的问题还是不太明白。LZ的“狙击步枪2.wav”是语音信号还是脉冲声? 又LZ计算的基本相关或PHZT广义相关都是循环相关,而不是线性相关。

新手

9 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-8-27 14:12:09 | 显示全部楼层
songzy41 发表于 2019-8-27 12:16
对于LZ的问题还是不太明白。LZ的“狙击步枪2.wav”是语音信号还是脉冲声? 又LZ计算的基本相关或PHZT广义相 ...

1:wav文件是录制的枪声信号,属于语音信号。
2:老师可以讲解一下,为什么我的互相关是循环相关吗?
3:


不添加噪声的PHAT互相关函数

不添加噪声的PHAT互相关函数

添加噪声后的PHAT互相关函数

添加噪声后的PHAT互相关函数

论坛优秀回答者

17

主题

5254

帖子

1133

最佳答案
  • 关注者: 658
发表于 2019-8-27 20:25:21 | 显示全部楼层 |此回复为最佳答案
本帖最后由 songzy41 于 2019-8-27 20:26 编辑
王松_L00eH 发表于 2019-8-27 14:12
1:wav文件是录制的枪声信号,属于语音信号。
2:老师可以讲解一下,为什么我的互相关是循环相关吗?
3: ...

1,从录制的枪声信号的频谱看,明显和语音信号有很大的差别。语音信号是一个宽带信号,而枪声信号是一个窄带信号。
2,有关循环相关的理 想在这里介绍了,LZ可以参看以下书藉:
R.K.Otnes and L.Enochson "Digital Time Series Analysis" Wiley. 1972.
其中6.8节介绍了相关函数。
另外很简单的可以看一下,在MATLAAB中有一个计算线性相关的函数:xcorr,当数据长N时,计算出的线性相关函数长2*N-1,对应延迟量是-(N-1)~(N-1)。而LZ计算出的相关函数只有N长。

新手

9 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-8-28 20:00:39 | 显示全部楼层
songzy41 发表于 2019-8-27 20:25
1,从录制的枪声信号的频谱看,明显和语音信号有很大的差别。语音信号是一个宽带信号,而枪声信号是一个窄 ...

谢谢宋老师的讲解,我找到自己错误的原因了。我分帧前没有对枪声信号进行端点检测,所以把无话段也进行了分帧,错误的互相关函数图是无话段的。自己对整个互相关过程理解不够的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表