声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法进行定位。
常用的阵列信号定位算法主要有三大类:基于高分辨率谱估计的定位技术、基于可控波束形成(Beamforming)的定位技术和基于TDOA的定位技术,以上三种算法在阵列信号处理中,尤其是移动通信的阵列信号处理中都有广泛的应用。但是声音信号与传统的电磁波信号存在许多的不同,主要包括以下几点:
带宽不同:麦克风阵列处理的多是宽带信号,频率范围一般在 300Hz到 3KHz 之间;传统的阵列信号处理的多是窄带信号。
信号的平稳性:麦克风阵列处理的多是非平稳的语言信号,传统阵列处理的对象多是平稳信号。
干扰噪声不同:传统的阵列处理的信号中的噪声一般为不相关的高斯噪声,麦克风阵列处理的信号中既有相关的高斯噪声,也有非高斯噪声。
由于声音信号与电磁波信号存在上述几点不同,尤其是信号带宽问题和信号的平稳性问题,因此传统的基于高分辨率谱估计的定位技术、基于可控波束形成(Beamforming)的定位算法不太适用于声源定位算法,
基于TDOA的声源定位算法具有运算量小、算法简单易实现、定位精度较高、硬件成本低的特点,使得该算法在实际中的应用非常广泛,而且可以实现实时定位。基于 TDOA 的声音定位算法实现原理简单,一般分为延时估计和声源定位两个部分,时延估计的精确度直接决定了声源定位的精度,所以时延估计精度是该算法的核心部分。本章分别介绍基于 TDOA 的声源定位算法中的时延估计的方法和基于得到的时延信息进行声源定位的方法,并对算法进行仿真。
传统的时延估计方法有很多,传统的时延估计算法主要有基于相关分析的时延估计方法,基于相位谱估计的时延估计方法,基于参数估计的时延估计方法等,应用最广泛的方法主要为基于相关分析的时延估计方法中的广义互相关函数法(GCC)和基于自适应滤波器的延时估计方法中的最小均方自适应滤波法(LMS)。
广义互相关法
广义互相关法的基本原理是在传统的通过互相关来求时延的算法的基础上,对接收到的信号进行滤波处理,对信号和噪声进行白化处理,增强信号中信噪比较高的频率成分,从而到达抑制噪声功率的目的,使得相关函数取得尖锐的峰值,提高时延估计的精度,因此和上述的LMS算法相比,广义互相关法可以取得更好的时延估计性能。 因为广义互相关法的基础仍然是互相关算法,因此首先简单介绍下互相关算法,互相关算法的基本原理公式如下式所示,其中h(n)即对应时延为t的冲激响应,且R(k)的幅度峰值应该位于k=t的位置。 广义互相关法为了解决上述问题,对上述得互相关结果R(K)进行了频域得均衡处理,这样就只保留了互相关得相位信息,即时延信息,去除了音频信号本身得影响,再进行反傅里叶变换得到R(k)即可得到一个峰值非常陡峭的冲击信号,其峰值位置正好对应的就是时延差的位置,。由于实际音频信号的采样率有限,为了进一步提高时延估计得分辨率,还需要对广义互相关的结果进行进一步的差值处理,得到更加精确的时延信息,因此处理流程如下所示。
本仿真中主要采用了广义互相关算法作为时延信息得提取算法。 利用广义互相关算法得到时延信息之后,就需要根据麦克风阵列的几何信息估计声源的方位,进而估计出目标的位置。在本文的场景声源于目标的关系可以近似当作是远程声源进行处理。主要考虑使用二维L型阵列进行接收,L型阵列的X轴和Y轴的阵元可以分别视为一个一维的线型阵列,然后可以分别估计声源来向的水平角度和垂直角度。因此在接下来的内容中将简单介绍声源方位估计得算法。分别估计得到水平阵列的角度θ1和垂直阵列的角度θ2之后,由于本文中的声源目标是猪,因此目标的高度维度坐标肯定是0,得到目标的二维角度之后即可推算出目标的三维位置
注意点
声源使用从网上下载了一段猪语音(wav文件)作为声源生成麦克风接收信号。
实现了单目标声源定位(包括方位和目标位置,根据场景目标应该在地上)
该程序采用了TDOA声源定位算法(可以参考《基于FPGA的声源定位系统软硬件设计》4节、《基于麦克风阵列的声源定位系统硬件设计与算法研究1》第4章)
文档下载:链接:https://pan.baidu.com/s/1Hgk_y2FE-Ic04iEkIDAVBw
提取码:h76w
程度下载:链接:https://pan.baidu.com/s/1AurO823CuifsXeH_Po-ItQ
提取码:bcy9
(解压密码获取:http://t.cn/AiTjj4kb)
网友评论