python互相关函数_基于Cross-Correlation互相关函数的信号同步方法

本文介绍了在处理双通道声信号时如何通过互相关函数解决时间同步问题。通过分析信号特征,发现即使存在时延,两个通道信号的变化趋势依然一致。通过计算互相关函数,找到使两通道信号变化趋势最大对齐点,从而实现信号同步。在MATLAB中,可以使用xcorr函数求得互相关函数并确定信号偏移值。
摘要由CSDN通过智能技术生成

a28f600d16dee9fb27d310c3c916158a.png

背景

最近做刷牙声场分析的时候遇到这样一个问题:

同时采集了两个通道的声信号,其中一路,喉麦信号

是通过MIC->链路线->3.5接口进入手机,另一路蓝牙耳机录制的信号
是经过MIC->蓝牙DSP编码->蓝牙传输进入手机,两路信号的传输时延不同,并且两路信号的开始采集时间不同。这就导致在一个时间窗口内,两个通道的信号的时间戳是没有对齐的,如图1所示。如果想融合这两个通道的信号特征并进行分类,这一时间偏差会导致准确率严重下降。

a4244b5c288943f857af56bbbc01bcb1.png
图1 从峰值的位置可以看出 两个通道的信号是没有对齐的 通道T(上)落后于通道B(下)

那么如何解决时间同步的问题?通过分析这两路信号的特征,可以发现有以下特点:

在录制的过程中,物理世界发声的声源只有一个,因此两个MIC录到的一定是同一个振动产生的声信号,当这个振动源的特性发生改变时(如达到共振峰,或者瞬时能量为0),一定会在两个通道的信号中都有所体现,也就是说,虽然两路信号的绝对时间戳没有对齐,但是以声源的时间为参考,这两路信号在任意时刻的变化趋势一定是与发声源相同的。

以图1为例,在声源出现三次振荡时,可以观察到,T和B两个通道都记录到了三次振荡,只不过由于时延,B记录到的振荡是比T要稍微靠前的。直观来讲,如果B和T是同步的,那么当B达到峰值时,T也应该达到峰值;B达到0值时,T也应该达到0值,但是在图1中,以较为明显的第二次振荡为例,B达到峰值时,T等待了若干ms的时间才达到峰值。因此,在这个有偏差的系统中,B和T在任意时刻,有相同变化的趋势(B是峰值T也是峰值,B是0点T也是0点的趋势)都是比较小的。

这时我们就可以考虑,保持B不动,如果把信号T往前滑动几ms,那么B和T有相同变化的趋势就大一点;再往前移几ms,那么B和T有相同变化的趋势就又大一

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值