总结
最近,由于需要在房间中生成多通道语音数据,因此需要生成大量的房间脉冲响应。然而,使用热声学太费时间了。一次偶然的机会,gpuRIR被发现是一个开源项目,它可以调用gpu来加速RIR的生成,并解决耗时的热声学问题。本文主要梳理了gpuRIR的安装过程和基本用途。
安装过程
要成功安装gpuRIR,需要提前安装cuda、cmake和c++编译器。本文基于。准备好以上条件后,直接使用命令
出现错误时,可以出错...在安装过程中没有找到任何uda工具集,您可以尝试设置
下级的
手动将文件复制到visual studio的安装目录中
。然后再次执行上述命令。下图显示安装成功。
在前一篇文章中,介绍了热声学。虽然两者都可以用来生成RIR,但是gpuRIR的优势在于可以被GPU加速。Gpu RIR可用于生成大量RIR的场景。
GpuRIR用法
本节主要介绍这个工具的基本用法,因为目前也是用来生成大批量的RIR,所以借此机会记录一下使用过程。gpuRIR有两个主要功能:生成RIR,以及使用生成的RIR生成多通道语音。这些函数声明如下
模拟器
当麦克风是全向的时,只有七个参数被传递给函数以获得RIR。
房间的大小,以米为单位
β:房间墙壁的反射系数,中间共有6个系数。
Pos_src:声源位置,二维数据,每个维度包含3列。这个地方要特别注意:给定的坐标必须满足这个形式,如果传进去,函数会认为是三个声源的坐标。
Pos_rcv:麦克风的坐标。
nb_img: Image方法的镜像阶数。Nb _ img:图像方法的图像顺序。
tmax:rir的最大长度
Fs:采样速率
这个函数的返回值是一个三维数组。第一维表示声源的数量,第二维表示麦克风的数量,第三维表示RIR的时间长度。如果觉得生成的RIR有问题,可以检查返回值中的声源个数是否正确,因为有几次生成的RIR出错是因为传入声源的坐标形式错误。该函数的调用格式如下:
模拟项目
RIR生成后,调用该函数对RIR和语音进行卷积,得到最终的多通道语音。只需输入两个参数。例子如下
代码示例
生成的四声道语音如下。
摘要
上面介绍的是一个静态单声源产生多通道语音的例子,这只是gpuRIR的简单使用。说到动态声源跟踪,由于此时声源沿某一轨迹运动,假设该轨迹可以用N个点来近似,则需要生成N个rir。这时候,打电话给高温声学会很费时间。GpuRIR调用GPU进行加速,可以大大加快运算速度。需要时将引入使用gpuRIR生成动态轨迹的RIR。https://arxiv.org/pdf/1810.11359.pdf,和gpuRIR的GitHub地址为https://github.com/DavidDiazGuerra/gpuRIR参与了论文《图像法生成RIR和加速gpuRIR》的设计原理