麦克风阵列声源定位四通道麦克风数据库建立


四通道麦克风数据库建立物理模型的建立,来源于文献:SLoClas: A DATABASE FOR JOINT SOUND LOCALIZATION AND CLASSIFICATION
根据图一,声源处于红色圆形上,且声源距离麦克风阵列中心O点的距离为1.5m,其中
mic1(0,-d)、mic2(d,0)、mic3(0,d)、mic4(-d,0) d为0.03m
声源会沿着红色圆圈按照θ角度旋转,麦克风阵列会依次按照一定的采样率每θ角度采集相同数据长度的声源数据,不同麦克风会因为距离角度而导致采集到的信号的幅度和相位不同。实验数据是按照θ=5°采集完成的,实验部分数据集如下图:


TDOA相关法时延求解

TDOA相关法时延求解原理与算法

双曲交汇定位算法

参考文献:运 用 双 曲 线 知 识 测 定 声 源
———研究性学习课题成果


结合图一,以mic2、mic4为焦点构建双曲线方程1:

以mic1、mic3为焦点构建双曲线方程2:

现在定义,T42为声源到mic4的时间与声源到mic2的时间的差,T13为声源到mic1的时间与声源到mic3的时间的差c为声音传播的速度,在这里c=340m/s。
根据双曲线的特性,其中,


两个双曲线方程联立求解,双曲线的交点就是声源的坐标。根据作者何晓东 郑东风 指导教师 支 静的文献,联立两个双曲线方程组求解得:

我们只需要根据T42和T13和0的关系来判定声源的具体位置即可,如下图所示:

声源位置、角度求解与算法代码验证

matlab的算法代码如下:

clc;
clear;
close all
m=100;
filedir=('E:\***\SoClas_database\Segmented_Sound\class06\class06_360\*.wav');%%
infiledir=('E:\***\SoClas_database\Segmented_Sound\class06\class06_360\');
files = dir(filedir);
for num = 1:minfile = [infiledir,files(num).name];[y0,Fs]= audioread(infile);for j = 1:3[c,lags] = xcorr(y0(:,j+1),y0(:,1));[Am,Lm] =  max(c);d = Lm - (length(c)+1)/2;Delay(num,j)=d/Fs;endfor k = 1:2[c1,lags1] = xcorr(y0(:,k+2),y0(:,2));[Am1,Lm1] =  max(c1);d1 = Lm1 - (length(c1)+1)/2;Delay(num,k+3)=d1/Fs;   end[c2,lags2] = xcorr(y0(:,3),y0(:,4));[Am2,Lm2] =  max(c2);d2 = Lm2 - (length(c2)+1)/2;Delay(num,6)=d2/Fs;
endLength = length(y0);
T = 1 / Fs;
t = (1 : Length) * T;
t = t';
figure;subplot(411);
plot(t,y0(:,1));
title('mic1');
xlabel('(秒)')
ylabel('幅度(V)')
subplot(412);
plot(t,y0(:,2));
title('mic2');
xlabel('(秒)')
ylabel('幅度(V)')
subplot(413);
plot(t,y0(:,3));
title('mic3');
xlabel('(秒)')
ylabel('幅度(V)')
subplot(414);
plot(t,y0(:,4));
title('mic4');
xlabel('(秒)')
ylabel('幅度(V)')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c = 340;
ddd = 0.03;
a1 = c*Delay(1,5);
b1 = sqrt(ddd*ddd - a1 * a1);
a2 = c*Delay(1,2);
b2 = sqrt(ddd*ddd - a2 * a2);
kk = b1*b1*b2*b2 - a1*a1*a2*a2;
mm1 = a1*a1*b2*b2;
mm2 = a2*a2*b1*b1;
nn1 = a2*a2+b1*b1;
nn2 = a1*a1+b2*b2;
ppp = sqrt(mm1*nn1/kk);
qqq = sqrt(mm2*nn2/kk);
if a2 > 0yyy = -qqq;
elseyyy = qqq;
end
if a1 > 0xxx = ppp;
elsexxx = -ppp;
end
angle = atan(xxx / yyy)*180/pi
% if angle <= 0
%     theta = -angle + 180
% else
%     theta = angle
% end

上述代码可以通过c语言移植到具备算力的开发板中,根据数据集中的按照不同θ角度的麦克风阵列数据,分别进行角度验证,锁定声源的坐标,根据求得的角度在代入R即可求出声源的实际距离。测试结果如下:









可以看出,双曲交汇定位算法是有一定效果的。良好的定位效果和声源距离麦克风阵列的距离、声源所发声信号的类型频率、背景噪声等有关,下一步将继续优化定位算法,使定位结果更加精准。

上述结构四通道麦克风定位数据集下载

链接:https://pan.baidu.com/s/1t63N73ZDFx9Ih6aeBISrRA
提取码:esnp

定位精度时延改进——时域预处理

为了提高数据精度,需要对时域信号进行预处理——立方处理。就是对时域信号的每个点做三次幂处理。

未预处理实验

close all;
clear;
clc;
[time_txt,Fs] = audioread('E:\***\SoClas_database\Segmented_Sound\class06\class06_270\class06_270_001.wav');
LEN = 7361;
x1 = time_txt(:,1);
x2 = time_txt(:,2);
% xxx1 = x1.*x1.*x1;
% xxx2 = x2.*x2.*x2;
xxx1 = x1;
xxx2 = x2;
X1=(fft(xxx1));
X2=(fft(xxx2));
Sxy=X1.*conj(X2);
Bxy=fftshift(abs(ifft(Sxy)));
figure;
subplot(211);
Xxy=xcorr(xxx1,xxx2);
plot(Xxy);
title('DSP hxg')
subplot(212);
plot((Bxy));
title('MATLAB hxg')

预处理实验

close all;
clear;
clc;
[time_txt,Fs] = audioread('E:\***\SoClas_database\Segmented_Sound\class06\class06_270\class06_270_001.wav');
LEN = 7361;
x1 = time_txt(:,1);
x2 = time_txt(:,2);
xxx1 = x1.*x1.*x1;
xxx2 = x2.*x2.*x2;
X1=(fft(xxx1));
X2=(fft(xxx2));
Sxy=X1.*conj(X2);
Bxy=fftshift(abs(ifft(Sxy)));
figure;
subplot(211);
Xxy=xcorr(xxx1,xxx2);
plot(Xxy);
title('DSP hxg')
subplot(212);
plot((Bxy));
title('MATLAB hxg')

麦克风阵列声源定位四通道麦克风数据库及TDOA双曲交汇定位算法实验相关推荐

  1. 基于时延法的麦克风阵列声源定位分析

    文章目录 一. 关于麦克风阵列 二. 关于声源定位 三. 基于广义互相关(GCC)计算时延 四. 基于时延差的声源定位法 1. 近场模型 2. 远场模型 五. 三维空间阵列的声源定位系统实现 1. 推 ...

  2. 麦克风声源定位原理_基于麦克风阵列声源定位系统最新版

    <基于麦克风阵列声源定位系统.doc>由会员分享,可免费在线阅读全文,更多与<基于麦克风阵列声源定位系统>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜 ...

  3. 【声源定位】 球面散乱数据插值方法/似然估计hybrid spherical interpolation/maximum likelihood (SI/ML) 麦克风阵列声源定位

    1.软件版本 MATLAB2021a 2.本算法理论知识点 球面散乱数据插值方法/似然估计SI/ML 麦克风阵列声源定位 3.算法具体理论 这个部分的程序如下所示: 这个部分理论如下所示: 本文最后的 ...

  4. 麦克风阵列声源定位 GCC-PHAT

    麦克风阵列声源定位 GCC-PHAT 麦克风阵列声源定位(一) 利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival (DOA) estimation),DOA估计的其中一 ...

  5. 音视频开发(40)---麦克风阵列声源定位 GCC-PHAT

    麦克风阵列声源定位 GCC-PHAT 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010592995/article/details/79735 ...

  6. matlab 声源定位csdn_麦克风阵列声源定位 GCC-PHAT(一)

    麦克风阵列声源定位(一) 0 a" N0 Q" t  t2 l$ t) F利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival (DOA) estima ...

  7. 麦克风阵列声源定位 SRP-PHAT

    DOA 声源定位方法一般可分为三类,一种是基于TDOA的两步算法(two-stage algorithm),一种是基于空间谱估计如MUSIC等,还有就是基于beamforming的方法,也就是这里要介 ...

  8. 麦克风阵列声源定位效果测试

    下列图片如果不清楚可以直接访问淘宝链接,从链接中的网盘资料进行拉取.从此链接看到的购买可以跟客服说,提我可以便宜50块钱~~~ 店铺链接:首页-智能语音开发者联盟-淘宝网 产品链接:https://i ...

  9. 麦克风阵列声源定位解决方案

    其高科技: http://www.keygotech.com/cn/solution/ssl/array/noise-source-location-based-on-mic-array 一般来说,基 ...

最新文章

  1. win10只有c盘怎么分区_电脑技巧分享:安装win10系统时系统盘C盘分区多大空间适合?...
  2. HTTP Status 405 - HTTP method POST is not supported by this URL
  3. Netflix提出梯度提升决策树网络Hammock!
  4. 进程上下文与中断上下文
  5. 【Java语法】比较两个字符串是否相等
  6. linux 下vim文件乱码 cat文件正常处理方法
  7. C++引用和指针区别
  8. javascript图片库威力增强版
  9. python手写数字识别实验报告_机器学习python实战之手写数字识别
  10. ES6入门之对象的扩展
  11. Nodejs自带模块querystring的使用简介
  12. html5期末大作业:基于html+css+javascript+jquery+bootstarp响应式图书电商HTML模板网上书店(25页)
  13. 小游戏策划案例精选_小游戏策划方案.docx
  14. LaTeX 页眉设置
  15. CUDA加速——共享内存介绍及其应用
  16. 拍森python百度百科_python对拍_python 拍牌_拍森python - 云+社区 - 腾讯云
  17. 你有多久没有看星星了呢?【爬取NASA的科普网站上的所有图片】
  18. C++写的简易的控制台游戏
  19. 本地笔记本连接sqlserver数据库连接失败 证书链是由不受信任的颁发机构颁发的
  20. 三步学会在noi linu下对拍

热门文章

  1. Build.VERSION.SDK_INT < Build.VERSION_CODES.O的含义
  2. c语言 随机函数详解
  3. Vue服务端渲染(Nodejs)
  4. linux的more 查看命令,linux中more命令如何查找
  5. 社区共读《Python编程从入门到实践》第三天阅读建议
  6. 虹科分享 | 虹科智能自动化2022文章精选
  7. Android 安全之如何反编译与加密apk包
  8. 早期RA的缓解率—比较新缓解标准和与现有标准
  9. 软件设计师---软件工程基础
  10. 安卓HttpURLConnection 进行http请求(传递数据 获取数据 主线程禁止网络请求)以get方式为例