精华内容
下载资源
问答
  • TDOA声源定位算法

    2019-05-06 09:52:07
    导航与定位,TDOA,声源定位算法,c++编程
  • 在室内麦克风阵列声源定位算法的研究中,混响和噪声对定位精度影响很大,传统的声源定位算法无法在高混响和低信噪比的环境中保持较高的定位精度。为了解决这一问题,提出一种基于卷积神经网络的室内声源定位算法,该算法...
  • 基于压缩感知的麦克风阵列声源定位算法
  • 基于混沌人工蜂群优化的声源定位算法
  • 仿真实验表明,与基于子带可控响应功率(SRP-sub)的多声源定位方法相比,在双麦克风混响条件下定位多声源,基于压缩感知的多声源定位算法的定位性能更高,在混响时间为0.6 s时,仅采用40个频点值,定位3个声源的...
  • 基于相位差的声源定位算法研究及实现
  • 时延估计的声源定位算法及MATLAB实现.pdf
  • 针对头佩式麦克风阵列的声源定位算法研究
  • 基于近似核密度估计的近场多声源定位算法
  • 基于头戴式麦克风的低频信号衍射路径的声源定位算法
  • 一种基于麦克风阵列的声源定位算法研究,是论文
  • 基于DSP的声源定位算法研究与实现,硕士毕业论文,含金高,欢迎下载
  • 2009年电子大赛 基于语音激励信息的声源定位算法研究 必备的资料
  • 无线传感器网络分布式鲁棒声源定位算法研究,刘勇,,无线传感器网络中的廉价传感器往往容易收到复杂环境影响,声能量量测具有大拖尾分布特性,使得传统基于极大似然估计和最小二乘估
  • 基于BP神经网络的室内声源定位算法(附有程序)

    千次阅读 多人点赞 2020-05-18 21:45:38
    基于BP神经网络的室内声源定位算法的实现(附有程序) 问题描述 现在有一个安静的房子,有一个人在房间里走动,我要利用屋里的麦克风接收这个人的脚步声,然后对这个人进行定位。 问题的意义 声源定位,这个问题的...

    基于BP神经网络的室内声源定位算法的实现(附有程序)

    • 问题描述
      现在有一个安静的房子,有一个人在房间里走动,我要利用屋里的麦克风接收这个人的脚步声,然后对这个人进行定位。
    • 研究的意义
      声源定位可以克服视觉定位的缺点,对看不见的地方也可以定位,在机器人追踪与探测方面得到了很好的应用。室内声源定位被广泛应用于视频会议、智能家居、车载通话设备等场景中。特别是在人工智能时代,结合机器学习和深度学习,室内声源定位问题的应用价值变得非常大。
    • 问题的研究方法
      目前解决这个问题的主流方法有三个,分别是基于最大输出功率的可控波束形成技术、基于高分辨率谱估计技术、基于声达时间差的定位技术。这三种方法都是通过研究声音的物理性质,建立相应的方程,然后进行求解,过程复杂,求解难度高。
      基于上述原因,本文从人工智能的角度考虑,我们把声音在室内空间的混乱场当成一个黑匣子,只分析输入输出的数据特征,从而找到普遍的规律,达到解决问题的目的。本文利用的人工智能算法是BP神经网络算法,下面将按照正常人的逻辑思维顺序,一步一步介绍算法的实现。
    • 摘要
      本文设计了离线采样方案,构建了隐含层为7个神经元的网络结构,利用 LevenBerg-Marquardt的BP算法作为训练函数,编写了matlab程序用模拟定位,实现了在100平方米的房子里,只需要采样100组数据进行机器训练,就可以将定位误差控制在几厘米的效果。
    • 模型的建立
      (1)离线采样方案
      在建立神经网络之前,我们要先设计出采样模型,分别得到输入数据和输出数据的形式,才能具体的设计神经网络,因此,下面先设计采样模型,再设计网络模型。
      在这里插入图片描述
      如上图所示,我先对将地面划分为n个小区域,用发声装置分别在每一个小区域的中心点坐标处发声一次,每发声一次,就用四个麦克风记录下时间差,,只需要三个时间差即可,分别为
      在这里插入图片描述
      这样,我们能得到n组数据,第i组数据如下所示:
      在这里插入图片描述
      其中x_i,y_i分别代表地面横坐标值和纵坐标值。这n组数据就可以作为BP神经网络的训练数据,离线采样操作就完成了。
      (2)BP神经网络的构建
      离线采样之后,我们就可以构建BP神经网络了。因为输入数据是三个分量,输出数据是两个分量,所以构建的BP神经网络的输入层与输出层分别是三个单位和两个单位。通过不断测试,我得出当隐含层含有7个神经元时,预测结果最佳。网络结构如下图所示。
      在这里插入图片描述
      构建了神经网络的结构,接下来我们要确定的是使用什么激活函数,训练算法和性能函数。在一般情况下,隐含层都是用S形激活函数,输出层都是用线性激活函数,此处的用法也是如此。由于用梯度下降法训练函数构建的网络速度比较慢,而基于LevenBerg-Marquardt算法的训练网络的速度非常快,所以我们使用LevenBerg-Marquardt的BP算法训练函数。由于我们要考虑的是网络的整体性能,所以我们使用的性能函数是均方误差函数。
    • 数值模拟训练和定位测试
      不妨假设房子是个标准的长方体,它的长、宽、高分别为10米、10米、5米,四个麦克风在空间中构成一个四面体,假设四个麦克风在空间的坐标分别为A(4.9,4.9,1.0)、B(4.9,5.1,1.0)、C(5.1,5.1,1.0),D(5.0,5.0,2.0)。地面面积为100平方米,取每一个小区域面积为1平方米,则可得到100组训练数据。将这100组训练数据用BP神经网络算法进行机器学习之后,下面就可以用BP神经网络进行定位测试了。
      接下来我们就可以想一下怎么进行定位测试了,首先,我们将声源随机放置在房间中,即用计算机模拟一个的随机位置坐标,然后根据声音的传播速度,可以求出各个麦克风首次接受到声音的时间差,将这组时间差作为定位测试的输入数据,用已经训练好的BP神经网络进行预测,得到预测值,然后再分析预测位置与真实位置的误差。
      在100平方米的房间里,我们只用了100组训练数据,重复10次定位操作,得到的预测位置与实际位置的关系如下表所示。
      测试次数 声源的实际位置 BP神经网络的预测位置
      在这里插入图片描述
      误差分析如下图所示。
      在这里插入图片描述
      机器训练的结果分析如下图所示。
      在这里插入图片描述
      可以看出,用BP神经网络算法对100平方米的室内进行声源定位,只需要采集100组训练数据,就可以使预测位置与实际位置的误差只有几厘米。从机器训练的结果可以看出,整个定位过程所用时间非常短,收敛速非常快,均方误差已经达到了4×10^(-6)米。
    • matlab程序代码
    %% 清空环境变量
    clc
    clear
    %% 生成训练数据与预测数据
    %%%训练数据
    A=[4.9,4.9,1];%%%麦克风A的坐标
    B=[4.9,5.1,1];%%%麦克风B的坐标
    C=[5.1,5.1,1];%%%麦克风C的坐标
    D=[5.0,5.0,2];%%%麦克风D的坐标
    %x=0.5:1:9.5;y=0.5:1:9.5;%%%用100组数据训练
    x=0.5:0.5:10;y=0.5:0.5:10;%%%用400组数据训练
    [X,Y]=meshgrid(x,y);
    tAB=(sqrt((A(1)-X).^2+(A(2)-Y).^2+A(3).^2)-sqrt((B(1)-X).^2+(B(2)-Y).^2+B(3).^2)); %%%声源到A,B两个麦克风的时间差,下同
    tBC=(sqrt((B(1)-X).^2+(B(2)-Y).^2+B(3).^2)-sqrt((C(1)-X).^2+(C(2)-Y).^2+C(3).^2));
    tCD=(sqrt((C(1)-X).^2+(C(2)-Y).^2+C(3).^2)-sqrt((D(1)-X).^2+(D(2)-Y).^2+D(3).^2));
    ttAB=tAB(:)';
    ttBC=tBC(:)';
    ttCD=tCD(:)';
    input_train=[ttAB;ttBC;ttCD];%%%训练数据的输入值(是麦克风接受声音的时间差)
    XX=X(:)';
    YY=Y(:)';
    output_train=[XX;YY];%%%训练数据的输出值(是位置坐标)
    %%%预测数据
    m=10;   %%%预测m个位置(就是分别将声源放到m个位置,用BP神经网络算法预测,然后对比预测结果和实际结果)
    X=rand(1,m)*10;
    Y=rand(1,m)*10;
    tAB=(sqrt((A(1)-X).^2+(A(2)-Y).^2+A(3).^2)-sqrt((B(1)-X).^2+(B(2)-Y).^2+B(3).^2));
    tBC=(sqrt((B(1)-X).^2+(B(2)-Y).^2+B(3).^2)-sqrt((C(1)-X).^2+(C(2)-Y).^2+C(3).^2));
    tCD=(sqrt((C(1)-X).^2+(C(2)-Y).^2+C(3).^2)-sqrt((D(1)-X).^2+(D(2)-Y).^2+D(3).^2));
    input_test=[tAB;tBC;tCD];%%%预测数据的输入值(是麦克风接受声音的时间差)
    real_locate=[X;Y];%%%真实的声源坐标,用于检验预测值是否正确
    %% 数据归一化
    [inputn,inputps]=mapminmax(input_train);  %%%其中inputps是用于记录数据归一化方法
    [outputn,outputps]=mapminmax(output_train);   %%%outputps同理
    %% BP网络训练
    % %初始化网络结构
    net=newff(inputn,outputn,7);%%%建立一个由7个神经元组成的隐藏层构成了一个网络,这是新版matlab的用法
    net.trainParam.epochs=5000;%%%最大迭代次数
    net.trainParam.lr=0.1;%%%学习率
    net.trainParam.goal=0.000004;%%%目标误差
    net.trainParam.max_fail=10000;
    %网络训练
    net=train(net,inputn,outputn);
    %% BP网络预测
    %预测数据归一化
    inputn_test=mapminmax('apply',input_test,inputps);%%%对测试数据再进行数据归一化,之前是对训练数据进行数据归一化,而且归一化方式和前面的一样
     
    %网络预测输出
    an=sim(net,inputn_test);   %训练输出的结果
     
    %网络输出反归一化
    BPoutput=mapminmax('reverse',an,outputps);%%反归一化得到实际结果
    %% 结果分析
    for i=1:m
    fprintf('第%d 次测试的实际位置是:(%d,%d)',i,real_locate(:,i));fprintf('\n');
    fprintf('BP神经网络预测位置是:(%d,%d)',BPoutput(:,i));fprintf('\n');
    end
    %%%画图
    plot(real_locate(1,:),real_locate(2,:),'*')
    hold on
    plot(BPoutput(1,:),BPoutput(2,:),'o')
    legend('实际位置','预测位置')
    title('BP网络预测输出','fontsize',12)
    ylabel('Y方向','fontsize',12)
    xlabel('X方向','fontsize',12)
    %%%误差分析(预测位置的分量与实际位置的分量做差取绝对值再相加)
    figure(2)
    r=real_locate-BPoutput;
    r=abs(r(1,:))+abs(r(2,:));
    plot(r,'-*')
    title('BP网络预测误差','fontsize',12)
    legend('误差')
    ylabel('误差(单位/米)','fontsize',12)
    xlabel('位置','fontsize',12)
    

    本来想给你上传程序文件的,但是我还不会怎么上传了程序文件,所以等我之后上传了再来这里给链接吧。

    展开全文
  • 提出一种近场宽带声源定位算法新模型,该模型同时考虑声源信号的幅度与相位信息,并用最大似然估计方法进行目标定位。仿真与半消声室实验证明在近场的条件下,该算法模型比仅利用相位或能量的定位算法具有更优的方位...
  • 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法进行定位。常用的阵列信号定位算法主要有三大类:基于高分辨率谱估计的定位技术、基于可控波束...

    声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的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,得到目标的二维角度之后即可推算出目标的三维位置.

    137389c6389a5014f44ab035a8e0eeb6.gif
    22cc67e39d4355d34c03269b82d2712b.png

    注意点

    • 声源使用从网上下载了一段猪语音(wav文件)作为声源生成麦克风接收信号。
    • 实现了单目标声源定位(包括方位和目标位置,根据场景目标应该在地上)
    • 该程序采用了TDOA声源定位算法(可以参考《基于FPGA的声源定位系统软硬件设计》4节、《基于麦克风阵列的声源定位系统硬件设计与算法研究1》第4章)

    更多信息请点击了解更多

    展开全文
  • 原文链接:...声源定位算法是利用麦克风阵列进行声音...

    原文链接:https://blog.xxcxw.cn/2019/08/10/%e5%9f%ba%e4%ba%8etdoa%e5%a3%b0%e6%ba%90%e5%ae%9a%e4%bd%8d%e7%ae%97%e6%b3%95%e4%bb%bf%e7%9c%9f-matlab%e4%bb%bf%e7%9c%9f/
    转自:http://t.cn/AiTjYCqD

    声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的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,得到目标的二维角度之后即可推算出目标的三维位置

    基于TDOA声源定位算法仿真–MATLAB仿真

    基于TDOA声源定位算法仿真–MATLAB仿真

    注意点

    声源使用从网上下载了一段猪语音(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

    展开全文
  • 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法进行定位。 常用的阵列信号定位算法主要有三大类:基于高分辨率谱估计的定位技术、基于可控...

    转自:http://t.cn/AiTjYCqD

    关注微信公众号“通信小课堂”,获取专业小知识

    声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的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

    展开全文
  • 二维声源定位,适合09电赛b题,作为小车声源导航
  • 完整代码可直接运行,运行效果图见压缩包
  • 一般的声源定位方法是基于无遮挡的线性或非线性麦克风阵列。采用头佩式麦克风阵列,考虑到背向声源麦克风的低频声波由于头盔遮挡而发生的衍射作用,针对低频波段的声音信号进行定位算法的设计和研究。该算法利用低频...
  • 目前基于麦克风阵列的声源定位方法大致可以分为三类:基于最大输出功率的可控波束形成技术、基于高分辨率谱图估计技术和基于声音时间差(time-delay estimation,TDE)的声源定位技术。 基于TDE的算法核心在于对...
  • MUSIC算法 是一种基于矩阵特征空间分解的方法。从几何角度讲,信号处理的观测空间可以分解为信号子空间和噪声子空间,显然这两个空间是正交的。信号子空间由阵列接收到的数据协方差矩阵中与信号对应的特征向量组成,...
  • (转载)基于TDOA声源定位算法仿真–MATLAB仿真 转载自:https://blog.xxcxw.cn/archives/28 声源定位算法是利用麦克风阵列进行声音定位,属于宽带信号,传统的MUSIC和DOA算法并不适用该场景,本仿真主要用TDOA算法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 916
精华内容 366
关键字:

声源定位算法