基于嵌入式gpu系统的并行化声源定位系统及方法
【技术领域】
[0001] 本发明涉及一种声源定位系统及方法,尤其涉及一种基于嵌入式GPU系统的并行 化声源定位系统及方法,属于声源定位领域。
【背景技术】
[0002] 随着智能感知、智能终端等技术与设备的发展,声源定位被越来越广泛地应用,使 用麦克风阵列进行声源位置的估计已经成为一个热门的研宄领域,它在智能人机交互和工 业控制等领域都有着十分重要的应用。麦克风阵列技术改变传统的单个麦克风使用方式, 利用多个麦克风排列成一定形状的阵列同时采集语音,通过对多路信号进行分析处理,结 合已知的麦克风阵列的空间几何关系,在空间域中定出一个或多个声源的平面或者空间坐 标,从而推算出声源的位置。
[0003] 传统的声源定位技术通常是利用DSP等硬件装置并结合相关估算方法进行定位, 主要包括时延估计法和定向波束形成法。时延估计法主要是利基于声源发出的信号到达各 麦克风阵元存在的时间延迟,根据各个通道信号间的相关关系对这个时间延迟进行估计, 从而来对声源位置进行估计;定向波束形成法是基于最大输出功率可控波束方法的一种形 式,为了搜索能够使波束功率最大的位置,需要对整个空间进行扫描。现有技术虽然能实现 对声源的定位,但其缺点也显而易见,一是硬件成本高,系统结构复杂;二是常用的空间几 何定位方法无法解决近场声源定位的问题;三是由于计算量过大,很难满足实时的要求,其 性能往往难以接受。
[0004]
【发明内容】
[0005] 本发明在于提供一种基于嵌入式GPU系统的并行化声源定位系统及方法,以解决 现有声源定位方法并行化程度低、时间开销大以及成本高的技术问题。
[0006] 本发明的目的通过以下技术方案予以实现:基于嵌入式GPU系统的并行化声源定 位系统及方法,包括嵌入式GPU系统1、麦克风阵列模块2和显示输出模块3 ;其中嵌入式 系统1由预处理模块1-1、并行化时延估计模块1-2和并行化位置解算模块1-3组成,麦 克风阵列模块2由麦克风阵列2-1和同步采集卡2-2组成;语音输入模块2-1采集到的信 号输入至同步采集卡2-2,并从同步采集卡2-2输出至嵌入式GPU系统1,信号在嵌入式GPU 系统1中顺次通过预处理模块1-1、并行化时延估计模块1-2和并行化位置解算模块1-3, 处理后的信号从嵌入式GPU系统1输出至显示输出模块3显示。
[0007] 基于嵌入式GPU系统的并行化声源定位系统的方法,包括下列步骤:
[0008] 1、以四元麦克风阵列2-1中心点为坐标原点0建立三维坐标系,d为各阵元间 距,将麦克风阵列2-1的四个阵元分别安装在Ml(d/2, 0, 0)、M2 (0,d/2, 0)、M3 (_d/2, 0, 0)、 M4(0,-d/2,0)位置。各阵元中自带滤波电路和电压增益电路,并行对各通道采集的音频信 号进行预处理;同步采集卡2-2在主控制器同一个时钟信号指令下,按照固定的采用频率 f,同步采集麦克风阵列2-1的各阵元通道的音频信号,同时将各通道信号进行A/D转换,将 数字化的信号送入基于CUDA平台架构的嵌入式GPU系统1中;
[0009] 判断本次采集的麦克风阵列2中各阵元信号是否大于所设定的阈值,若音频数字 信号大于所设定的阈值,则说明定位范围内存在目标声源,继续执行后续步骤;否则说明定 位范围内无目标声源,则放弃本次采集数据;
[0010] 2、通过并行化的方法给音频信号加窗分帧并进行FFT变换,以便后续进行信号分 析和时延估计;
[0011] 3、利用广义互相关时延估计法测算两阵元接收信号间的时延,其中计算互功率谱 函数等复杂运算在GPU上并行化实现;
[0012] 4、基于估算的声音到达时间差(TDOA),使用并行化的BP神经网络模型进行样本 训练,从而识别出目标声源位置信息;
[0013] 5、将解算出的目标声源方位值送入显示输出模块3显示结果。
[0014] 其中,所述步骤1中同步采集卡2-2采集数据的频率f= 48kHz。
[0015] 其中,所述步骤2中对语音信号的分帧是用可移动的有限长度窗口进行加权的方 法来实现的,即Sw(n) =S(n)*w(n),其中S(n)为加窗前的函数,Sw(n)为加窗后的函数, w(n)即为所加的窗函数;在CUDA平台架构下,分配4个GPU线程(Thread)为各通道信号并 行独立加窗,FFT计算则利用CUDA自带的CUFFT库,采用能同时计算多路相同点数FFT的 库函数计算4路信号的频谱,充分利用GPU并行计算的优势。
[0016] 其中,所述步骤3所述的利用广义互相关时延估计法测算两阵元接收信号间时延 的具体方法:先将时域内的两个音频信号作傅里叶变换得到频域信号,求两信号的互功率 谱,并在频域内给予一定的加权来抑制噪声,再作反变换到时域,从而得到两信号之间的互 相关函数,然后计算互相关函数中峰值出现的时刻,该时刻就是所要求的两信号之间的时 间延迟D。
[0017] 其中,在GPU上并行化计算互功率谱密度,即在计算互相关函数时需要先计算两 信号的互功率谱,将一阵元信号频谱和另一阵元信号频谱的共轭相乘得到两阵元间的互功 率谱,四阵元麦克风阵列2-1共有12个互功率谱函数;在GPU中分配一个线程块(Block) 进行并行化计算各组互功率谱;为了充分利用GPU资源,优化资源配置,将各信号的频谱预 先存入线程块的共享存储器(ShareMemory)中,以此减少各GPU线程访问显存的I/O操作 次数。
[0018] 其中,所述步骤4根据TD0A使用并行化的BP神经网络模型进行声源定位,即根据 麦克风阵列2-1阵元个数和声源位置参数设计BP神经网络的输入层、输出层节点数,根据 声源定位的精度和复杂度设计隐藏层的层数;该方法先用一定数量的样本数据训练BP神 经网络,使BP神经网络能够表达所求的定位模型,然后根据TD0A输入的时延量,利用已训 练好的BP神经网络识别出其方位角9、俯仰角0和距离r,以确定声源在空间的位置;使用 该方法使得处于远场和近场的声源都能进行准确定位。
[0019] 其中,并行化BP神经网络模型基于CPU+GPU异构嵌入式系统,使用CUDA平台架 构,对BP神经网络模型训练过程中的各层算法进行并行计算优化,具体步骤如下:
[0020] ①在Host端(CPU)上分配显存空间,并将本次训练样本的输入、输出、权重值、偏 倚值和学习率复制到Device端(GPU),然后进行GPU资源配置划分;
[0021] ②在Device端上进行并行化的计算,可以并行计算的部分有隐藏层的输出、隐 藏层的误差、输出层的输出、输出层的误差、输出层的权重值和偏倚值;为了充分利用GPU 的计算资源,将每次并行计算划分为若干的线程块(Block),每个线程块里分配若干线程 (Thread),将每个线程块中的共有数据存放在各线程块的共享存储器(ShareMemory)中, 而将本次训练的输入输出结果存入常量存储器(ConstantMemory)中;
[0022] ③将本次训练结果中的权重值和偏倚值复制回Host端,如此循环训练,直至达到 训练次数或识别精度满足要求结束。
[0023] 与现有技术相比,本发明的有益效果是:在原有声源定位处理流程的基础上进行 了部分模块的并行化改进:(1)使用BP神经网络模型,使得处于远场和近场的声源都能进 行准确定位;(2)使用嵌入式GPU系统,由于GPU浮点运算能力强、内存宽带大和成本低,以 及基于CUDA通用并行化计算架构,充分发挥GPU的计算能力;(3)利用并行化的方法对音 频信号处理、BP神经网络学习等过程进行优化,提高了音频信号处理和BP神经网络学习的 计算速度,从而保证了声音位置解算功能的实时性,增强声源定位系统的健壮性和稳定性。
【附图说明】
[0024] 图1为本发明的一种基于嵌入式GPU系统的并行化声源定位方法模块图;
[0025] 图2为本发明的一种基于嵌入式GPU系统的并行化声源定位方法的实施流程图;
[0026] 图3为本发明中麦克风阵列中的四元十字阵定位示意图;
[0027] 图4为本发明中基于CUDA平台下的并行化声源定位方法中CPU和GPU任务划分 示意图。
[0028] 图5为本发明中基于CUDA平台下的广义互相关时延估计法流程图。
【具体实施方式】
[0029] 下面结合附图对本发明的内容作进一步的详细介绍。
[0030] 如图1所示,基于嵌入式GPU系统的并行化声源定位系统及方法,包括嵌入式GPU 系统1、麦克风阵列模块2和显示输出模块3 ;其中嵌入式GPU系统1由预处理模块1-1、并 行化时延估计模块1-2和并行化位置解算模块1-3组成,麦克风阵列模块2由麦克风阵列 2-1和同步采集卡2-2组成;语音输入模块2-1采集到的信号输入至同步采集卡2-2,并从 同步采集卡