基于tdoa的麦克风阵列单声源定位(附详细代码)

基于tdoa的麦克风阵列单声源定位(附详细代码)

一、前言

人一生中接收到的所有信息中,听觉共占11%。仅仅通过双耳的听觉,人便可以分辨声源的方位,识别说话的对象,同时听取多个声音且互不干扰。而计算机自从1939年诞生起,经过摩尔定律的疯狂增长,如今的计算能力,无论是速度还是精度上都已经远超人类。那原则上讲,如果没有灵魂或者上帝作用到了人对世界的理解中,只要给了计算机以与人类所接收到的相同的信息,那么计算机也同样能完成上述这些奇妙的任务,甚至达到更高的的水平。能不能创造神迹不好说,但做一些有趣的工作不在话下~

但为什么不用视觉呢?视网膜高清所承载的信息难道不比听到充斥着杂音的听觉音频信息量含量高、信噪比低吗?某种意义上确实,但正是因为这些原因,人对听觉的信息利用率远远低于视觉,而这一个通道所承载的信息又是视觉所无法取代的。抛开这些,难道这种用无法“眼见为实”的方法,近似于魔法的方式来理解世界的方式不足以吸引你吗?话不多说

Let’s step into the Sound Era

二、信息论声学

从信息论的角度出发,声音所承载的信息可以简单地分为两种——信源和信道,或者简单点来说,声源和环境。有人可能要说了,环境不就是噪声吗?哪来的信息?这里需要说明一下,此处的环境是一种泛在的概念,指的是从发声源到接收器过程中所有参与到最终结果的合成中的信息,包括其他的非主要声源,也就是所谓的噪声。除此之外环境信息其实还包括如房间形状,物品陈设的空间信息 (自然可以想到人在小房间的回声和室外的空旷感是不同的,里面包含着所处地点的空间信息);

另外,这里还需要对刚才指一种所谓的“噪声”来一次平反,所谓噪声,都是没有被充分利用的信息,你怎么敢定义什么是噪声?假若我就是想听听窗外的喇叭声来判断交通情况而不是听电视里男女主深情告白呢?从信息论的角度来看。从信息论的角度来看,信源和信道是对立统一且本质相同的。这看起来或许有些不切实际,毕竟物理世界中有那么多参数,根本就是一个复杂系统,你又如何从进行了纷繁复杂的叠加后的复合信息中体取出原来的各个分量呢?

不得不说,物理世界诚然复杂,但不难发现它的复杂背后也有其秩序,不同变量对一个物理过程的影响程度(也就是权重)是不同的,我们只要抓住其中的主因子便能做一系列有趣的分析了,比如接下来的声源定向

三、声源定位简介

声源定位顾名思义指的就是定位声源的位置,最常见的便是我们人耳的声源定位,而在实际中,我们利用多个麦克风(麦克风阵列)在测量不同位置点对声源进行测量,而由于声信号到达不同麦克风的时间有不同程度的延迟(也被称为时延),利用算法对测量得到的声信号进行处理,由此获得声源点相对于麦克风的到达方向(包括方位角,俯仰角)和距离等

目前基于麦克风阵列的声源定位方法主要有三种:基于最大输出功率的可控波束成形的定位方法、基于高分辨谱估计的定位方法、基于到达时延差估计的定位方法(Time Difference of Arrival,TDOA,也就是我们这里用的方法😄)

四、单声源定位技术路线

1. 使用设备

这里使用的都是ReSpeaker Mic Array v2.0,如图有四个麦克风,采样率为16000,采样深度为16位。录音会得到6声道数据,通道0为asr处理声道,通道5是合并播放,通道1-4则为4个麦克风所接收到的数据(分别对应图中右上、左上、左下、右下)

由于该设备只有平面上的四个摄像头,难以采集竖直方向的信息,所以后续的声源定位均是针对二维的

麦克风阵列

这是它的介绍页面,也有购买链接(只是给感兴趣的朋友,真的没有收钱啊😢)

2. 数学基础

根据到达时间差的声源定位根据声源距离麦克风距离可以分为远场和近场两种模型,这里会对两者的特点以及进行tdoa的分析做详细的说明(但最终使用的是远场模型)

  1. 远场模型
远场模型示意

远场即麦克风与声源之间的距离远远大于麦克风之间的距离,此时只能通过不同麦克风接收到声源的相对时间差计算出声源的方向。但声源的具体位置无法确定,因为此时麦克风阵列接收到的近似于平面波,不足以区分同一方向不同距离的声源

远场模型

远场声源数学模型大致可以简化为此,即确定一个麦克风为原点并建立直角坐标系,编号为 R 0 ( 0 , 0 ) R_0(0, 0) R0(0,0); 其余的n-1个麦克风编号为 R i ( x i , y i ) , i = 1 , 2 , . . . n − 1 R_i(x_i, y_i), i = 1, 2, ... n-1 Ri(xi,yi),i=1,2,...n1,而声源则记为 S ( a , b ) S(a, b) S(a,b)

由远场模型中声波可视为平面波的特点,声源S到 R 0 , R i R_0, R_i R0,Ri的距离差 ∣ R 0 S ∣ − ∣ R i S ∣ 可视为 ∣ R 0 P ∣ |R_0 S| - |R_i S|可视为|R_0 P| R0SRiS可视为R0P,所以有公式

∣ R 0 R i ∣ cos ⁡ θ = ∣ R 0 P ∣ = v s o u n d Δ t i |R_0 R_i|\cos{\theta} = |R_0 P| = v_{sound}\Delta t_i R0Ricosθ=R0P=vsoundΔti

为更好地使用坐标信息,这里采用向量化的计算方式

∣ R 0 R i ∣ ⋅ R 0 R i ⃗ ⋅ R 0 R i ⃗ ∣ R 0 R i

麦克风阵列声源定位是指通过多个麦克风的接收时间差(TDOA)来确定声源的位置。该算法的基本思想是在特定的时刻同时记录麦克风信号,并计算信号到达不同麦克风的时间差,然后利用三角定位法或其他定位算法计算声源位置。声源定位技术广泛应用于无线通信、音频信号处理、语音识别、语音合成和安防等领域。 为了验证基于TDOA算法的麦克风阵列声源定位的可行性和准确性,需要进行仿真实验。仿真实验可以通过模拟麦克风阵列接收声波信号,并计算信号到达时间差来模拟真实环境下的声源定位。在仿真实验中,可以通过控制声源位置、噪声水平和麦克风阵列的几何形状等因素来模拟不同的场景。 基于TDOA算法的麦克风阵列声源定位仿真实验需要实现以下步骤: 1. 生成声源信号:通过声波信号发生器生成不同频率和振幅的声源信号。 2. 模拟麦克风阵列接收信号:将声源信号通过声波传播模型模拟成麦克风阵列接收的信号。 3. 计算TDOA:通过信号处理技术计算信号到达不同麦克风的时间差。 4. 声源定位:使用三角定位法或其他定位算法计算声源位置。 5. 分析实验结果:比较仿真实验结果与真实环境下的声源定位结果差异,评估算法的准确性和可靠性。 基于TDOA算法的麦克风阵列声源定位算法仿真实验是一个复杂的过程,需要综合运用声学、信号处理、数学和编程等知识。通过实验,可以深入了解声源定位算法的实现原理和应用现状,为真实环境下的声源定位问题提供重要参考。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值