声源定位——TDOA多麦克声源定位全解析
文章目录
前言
在之前的文章中,介绍过声源定位开源项目声源定位——使用ODAS图形化显示语音位置的使用。但是该工具包含了很多可能在实际工程中的冗余功能造成性能上的极大浪费,比如3D显示、多声源定位、波束成形等。不适合在嵌入式上的声源定位。
而本文中将从声源定位的原理下手,介绍TDOA(Time Difference of Arrival,到达时间差)是一种无源定位方法,通过分析信号到达多个麦克风的时间差来估计声源方向或位置。
本文将从TDOA 原理入手,结合几何关系、物理约束和多麦克风阵列分析,详细讲解如何通过理论公式、插值方法以及最小二乘优化实现工程级的声源定位。同时,文章穿插了工程中常见问题与解决思路,帮助读者不仅理解理论,还能应用于实际系统。
声源定位项目实践请看:四麦克风声源定位实战:基于 GCC-PHAT + 最小二乘法实现 DOA
|版本声明:山河君,未经博主允许,禁止转载
一、TDOA
1.原理介绍
TDOA (Time Difference of Arrival )的缩写,它是一种利用信号到达不同接收站的时间差来进行定位的技术,是无源定位、声源定位和无线定位领域的核心原理之一。
假设以下是已知的条件:
- 信号源的传播速度为 c ≈ 343 m / s c \approx 343m/s c≈343m/s(声音在空气里传播速度)
- 现在有两个接收站之间距离为 d d d
- 两个接收站先后接收到信号的时间差为 Δ t \Delta t Δt
那么根据这些条件我们就可得到:
- 信号到接收站之间的路径差为 Δ d = c ⋅ Δ t \Delta d=c \cdot \Delta t Δd=c⋅Δt
- 而路径差同样等于 Δ d = d ⋅ \Delta d = d \cdot Δd=d⋅方向上的投影
2.基本公式解析
1)几何关系
假设现在有一个声源:
- 发出声音到两个mic的时间差为 Δ t \Delta t Δt
- 两个mic之间的距离为 d d d
- mic 1的坐标为 ( + d / 2 , 0 ) (+d/2,0) (+d/2,0)
- mic 2的坐标为 ( − d / 2 , 0 ) (-d/2,0) (−d/2,0)
- θ \theta θ定义为:声源方向相对于 x x x轴正方向的夹角(逆时针为正)
我们最终的目就是获得 θ \theta θ,对于几何关系如下图所示
但值得注意的是:当信号源很远时,到每个麦克风的声波几乎是平行的平面波。也就是说到不同麦克风的距离差 = 麦克风位置在声源方向上相对于坐标原点的有向距离的投影差。
2)解几何关系
对其几何关系求解,做出辅助线,如下图:
- 声源向量为 U = ( cos θ , sin θ ) U=(\cos\theta,\sin\theta) U=(cosθ,sinθ)
- mic 1的向量为 r 1 = ( d / 2 , 0 ) r_1=(d/2, 0) r1=(d/2,0)
- mic 2的向量为 r 2 = ( − d / 2 , 0 ) r_2=(-d/2, 0) r2=(−d/2,0)

由此我们得出,mic1和mic2在声源上的投影距离为:
Δ d = r 1 ⋅ U − r 2 ⋅ U = d ⋅ cos θ \Delta d=r_1\cdot U-r_2\cdot U=d\cdot \cos\theta Δd=r1⋅U−r2⋅U=d⋅cosθ
3)核心公式
由上述条件最终我们得到:
Δ d = d ⋅ cos θ , Δ d = c ⋅ Δ t = > θ = arccos ( c ⋅ Δ t d ) \Delta d=d\cdot\cos\theta,\quad \Delta d=c\cdot \Delta t =>\\ \theta=\arccos\Big(\frac{c\cdot \Delta t}{d}\Big) Δd=d⋅cosθ,Δd=c⋅Δt=>θ=arccos(dc⋅Δt)
二、物理约束条件
上文讲了TDOA的原理,那么实际在工程应用中,我们对于真实的物理设备需要一些约束才能做到精准定位。
1.声源约束
对于时延,用 τ \tau τ表示,那么 τ \tau τ满足对于任意两个麦克风:
τ i j = ( r i − r j ) ⋅ u c = Δ d ⋅ cos θ c \tau_{ij}=\frac{(r_i-r_j)\cdot u}{c}=\frac{\Delta d\cdot\cos\theta}{c} τij=c(ri−rj)⋅u=cΔd⋅cosθ
该公式必须满足于:
- 声源距离远大于阵列尺寸,否则抵达阵列的声波非平面波,即不能使用投影差的方式计算
- 声速已知确定 c ≈ 343 m / s c\approx 343m/s c≈343m/s,小阵列中通常可忽略误差
- 如果 ∣ τ i j ∣ > Δ d c |\tau_{ij}|>\frac{\Delta d}{c} ∣τij∣>cΔd,那么一定是错的(插值、噪声、混响)
2.几何约束
1)原点选择
按照直觉来说,原点选择为中心坐标是在数学模型上最好,且如果后面增加mic友好,但实际中TDOA系统中唯一“可观测”的量就是“相对于某一个麦克风的到达时间差”,也就是说在mic阵列里,需要选择一个mic作为原点。
而TDOA系统对整体平移不敏感,将整个mic阵列偏移向量 r r r,将其作为原点:
r i ‘ = r i + r = > r i ‘ − r 0 ‘ = r i − r 0 r^`_i=r_i+r \quad => \quad r^`_i-r^`_0= r_i-r_0 ri‘=ri+r=>ri‘−r0‘=ri−r0
对于时延完全不变。
2)阵列mic数量选择
对于二维平面中一对麦克风,TDOA 约束在几何上对应一条以两麦克风为焦点的双曲线( arcsin \arcsin arcsin函数),由于系统关于麦克风连线轴对称,该双曲线包含上下两个对称分支,因此仅凭一对麦克风无法确定唯一声源位置。
所以为了更进一步获得唯一的值,那么就需要至少两组mic,通过两条双曲线的交点确定唯一的角度值。
备注:在二维空间中,基于 TDOA 的三麦克风阵列在近场条件下可通过双曲线交点估计声源的二维位置,从而同时获得方位角和距离信息。然而在远场假设或阵列孔径远小于声源距离的情况下,TDOA 观测对距离不敏感,问题退化为仅能估计声源方向。
3.信号约束
假设现在采样率为16kHz,而两个mic之间的距离为2cm,那么:
- τ m a x = 0.02 / 343 ≈ 58 μ s \tau_{max}=0.02/343 \approx 58\mu s τmax=0.02/343≈58μs
- 采样点位 T s = 1 / 16000 = 62.5 μ s T_s=1/16000=62.5 \mu s Ts=1/16000=62.5μs
也就是说在理想环境下,我们计算信号序列能获得最大时延只会有 62.5 μ s 62.5 \mu s 62.5μs,根本无法获取准确的时延。为了提高精度存在两种方式:
- 增加阵列尺寸
- 提高频率分辨率
增加阵列尺寸很好理解,对于提高频率分辨率通常采用的方法为亚采样插值或者频域补零。
1)亚采样插值
亚采样插值是时域插值,通过最大峰值 R 0 R_0 R0的序列相邻点数,平滑出最有可能的时延,平滑公式为:
δ = R − 1 − R 1 2 ( R − 1 − 2 R 0 + R 1 ) \delta=\frac{R_{-1}-R_1}{2(R_{-1}-2R_0+R_1)} δ=2(R−1−2R0+R1)R−1−R1
最大时延为:
τ = ( n 0 + δ ) T s = n 0 + δ f s \tau=(n_0+\delta)T_s=\frac{n_0+\delta}{fs} τ=(n0+δ)Ts=fsn0+δ
2)频域补零
在语音信号处理二十三——频谱泄露、加窗以及栅栏效应中我们知道,在进行FFT计算时,实际频域补零提高频谱分辨率实际上在时域对相关函数做 sinc 插值。
三、多麦阵列
1.三麦阵列
1)定义变量
- 声源方向向量:
u = [ cos θ , sin θ ] = [ u x , u y ] u=[\cos\theta,\sin\theta]=[u_x,u_y] u=[cosθ,sinθ]=[ux,uy] - 定义第i个mic位置
p i = [ x i , y i ] p_i=[x_i,y_i] pi=[xi,yi]
2)计算达到时间
远距离声音变为平面波,到达某一个mic的时间,取决于该mic在传播方向上的投影
- 传播距离:相对于原点
d i = p i ⋅ u d_i=p_i\cdot u di=pi⋅u - 达到时间:
t i = t 0 − d i / c t_i=t_0-d_i/c ti=t0−di/c
3)TDOA
选定mic1为原点:
- 时间差:
Δ t i = ( p 0 − p i ) ⋅ u c \Delta t_i=\frac{(p_0 - p_i)\cdot u}{c} Δti=c(p0−pi)⋅u - 距离差
Δ d i = p i − p 0 = Δ t i ⋅ c \Delta d_i=p_i-p_0=\Delta t_i\cdot c Δdi=pi−p0=Δti⋅c
将其代入上式形成线性方程
Δ d i = Δ t i ⋅ c = ( x i − x 0 ) ⋅ u x + ( y i − y 0 ) ⋅ u y \Delta d_i=\Delta t_i\cdot c=(x_i-x_0)\cdot u_x+(y_i-y_0)\cdot u_y Δdi=Δti⋅c=(xi−x0)⋅ux+(yi−y0)⋅uy
4)唯一解析解
由3个mic组成的是两条双曲线,我们列出显式线性方程:
{ Δ d 1 = p 0 − p 1 = ( a 1 , b 1 ) Δ d 2 = p 2 − p 1 = ( a 2 , b 2 ) = > { a 1 u x + b 1 u y = Δ d 1 a 2 u x + b 2 u y = Δ d 2 \begin{cases} \ \Delta d_1=p_0-p_1=(a_1,b_1) \\ \Delta d_2=p_2-p_1=(a_2,b_2) \end{cases} =>\begin{cases} a_1u_x+b_1u_y=\Delta d_1\\a_2u_x+b_2u_y=\Delta d_2 \end{cases} { Δd1=p0−p1=(a1,b1)Δd2=p2−p1=(a2,b2)=>{a1ux+b1uy=Δd1a2ux+b2uy=Δd2
由此我们获得是唯一解:
{ u x = Δ d 1 b 2 − Δ d 2 b 1 a 1 b 2 − a 2 b 1 u y = Δ d 2 a 1 − Δ d 1 a 2 a 1 b 2 − a 2 b 1 \begin{cases}u_x=\frac{\Delta d_1 b_2-\Delta d_2 b_1}{a_1 b_2-a_2b_1}\\ u_y=\frac{\Delta d_2 a_1-\Delta d_1 a_2}{a_1 b_2-a_2b_1}\end{cases} {ux=a1b2−a2b1Δd1b2−Δd2b1uy=a1b2−a2b1Δd2a1−Δd1a2
2.三麦以上
1)影响
当mic的数量达到 N ≥ 4 N \geq 4 N≥4时,独立的TDOA数量为 N − 1 N-1 N−1个,此时会存在以下的情况:
- 当 N > = 4 N>=4 N>=4时,我们有了冗余的测量信息(超过求解两个未知数 ( x , y ) (x, y) (x,y) 所需的最小数量2)
- 由于实际测量必然存在噪声(环境噪声、算法估计误差等),这 N − 1 N-1 N−1条双曲线几乎不可能相交于同一个精确的点。
- 此时,不存在一个能让所有方程同时成立的精确解析解
2)最小二乘法
为了解决多麦带来的影响,我们的目标转变为:寻找一个最优的声源位置 ( x , y ) (x, y) (x,y),使得该位置计算出的理论TDOA与实际测量到的TDOA之间的总体误差最小。
和上文一样,我们定义出:
A = [ x 1 − x 0 , y 1 − y 0 x 2 − x 0 , y 2 − y 0 . . . . x i − x 0 , y i − y 0 ] b = [ Δ d 1 Δ d 2 . . . Δ d i ] A=\left[ \begin{matrix} x_1-x_0,y_1-y_0 \\ x_2-x_0,y_2-y_0 \\ ....\\ x_i-x_0,y_i-y_0 \\ \end{matrix} \right] \quad b=\left[ \begin{matrix} \Delta d_1 \\ \Delta d_2 \\ ...\\ \Delta d_i \\ \end{matrix} \right] A=
x1−x0,y1−y0x2−x0,y2−y0....xi−x0,yi−y0
b=
Δd1Δd2...Δdi
最小二乘:
u = ( A T A ) − 1 A T b u=(A^TA)^{-1}A^Tb u=(ATA)−1ATb
3)优势
在实际工程中,只做声源定位为了节省成本大多会选择使用三麦系统,但在真实环境中,往往存在多声源、噪声、混响等等的场景,也就导致了三麦解实际上并不能达到真实的精度。通常会使用平滑、中间值等等方案在这个解上进行“打补丁”。
而使用最小二乘法就像一个投票系统,它不会采纳任何一个选民的全部意见,而是计算出一个让“所有选民总体不满意程度”最低的中间方案。对于抗噪是具有最大的优势。
3.归一化
由于最小二乘不关心长度,只关心方向比例,最终得到的u不一定满足
∣ ∣ u ∣ ∣ = u x 2 + u y 2 = 1 ||u||=\sqrt{u_x^2+u_y^2}=1 ∣∣u∣∣=ux2+uy2=1
所以我们需要对其进行归一化,方便工程总进行预测 TDOA、做 beamforming、做多帧平滑、做卡尔曼滤波等操作。归一化方式有:
u n o r m = u ∣ ∣ u ∣ ∣ u_{norm}=\frac{u}{||u||} unorm=∣∣u∣∣u
总结
本文围绕 TDOA 技术,从基础原理、几何推导,到物理约束、单对麦克风与多麦克风阵列,再到插值和最小二乘优化进行了详细讲解。
关键点包括:
- 几何理解:TDOA 本质是声源方向在麦克风阵列上的投影差,远场条件下可简化为平面波。
- 物理约束:采样率、麦克风间距和声速等因素决定了时延测量的精度,需要注意极限条件。
- 多麦克风优化:三麦克风可唯一确定声源方向,四麦克风及以上可通过最小二乘处理噪声,实现稳健定位。
- 工程实践:亚采样插值、频域补零以及归一化方法能有效提升定位精度,并适应真实环境中的噪声与混响。
总之,TDOA 不仅是一套理论公式,更是一个结合几何、信号处理和优化算法的完整工程方案。掌握它可以为声源定位、波束形成和多声道语音增强等应用打下坚实基础。
更多推荐
所有评论(0)