Home

Awesome

麦克风声源定位

当前项目基本上实现了基于麦克风阵列的TDOA-SRP的声源定位功能仿真,整体代码基于Matlab进行开发,能够较好地进行定向,但是在定距方面尚有不足。

目录

介绍

首先,需要说明的是当前的代码仅实现了功能仿真,对算法原理的理解有一定的帮助。由于在实际中缺少麦克风阵列传感器,因此本例所使用的原始数据是利用手机录音得到的。同时考虑到即便使用多个手机也无法实现绝对地同步录制,因此这里直接利用一路语音信号的时延和加噪来代替其它通道的信号,这样便得到了仿真中使用的原始数据。

TDOA-SRP算法主要由以下两个步骤实现:

其中在第二步的过程中,本例使用到了空域收缩的方法,即使用球坐标进行搜索并且逐渐缩小搜索的范围(指角度),通过计算每个角度方向上的SRP总和来衡量该方向是否应该被收缩域囊括。但是对于距离的判定出现了较大的误差,因此当前只能实现测角。对于距离定位,还需要对几何以及SRP的原理进行系统的分析才可以完成。

除此之外,本例也使用了一些基本的数值计算方法来尝试进行求解,结果也是能够实现角度定位,但是难以实现距离定位。更加精确的定位还需要进行算法层面上的进一步改进。

使用说明

  1. 当前代码由matlab运行。

  2. 这里TDOA_method.m为主程序,直接运行即可。

  3. mat文件为四路麦克风采集到的语音信号,如果想要使用自己的数据可以参照mat内文件的存储名称,相应的改为自己的语音文件。如果想使用多路麦克风的模型(如6路)则较为困难,需要将所有代码中涉及到四路处理的内容全部修改。

  4. 麦克风阵列模型的坐标在主程序中以完成初始化,必须时可以自行修改。

  5. 这里调用了几种不同的进行声源定位的子函数,其中主要的方法只有两种:SRP-PHAT以及数值计算法。

许可

MIT © Richard McRichface

其它

如有疑问,请与我联系。