概述
因为最近的工作涉及到了房间脉冲响应(Room Impulse Response, RIR),所以特地搜索了下和RIR相关的论文以及开源数据集,然后写下该文章作为一个小结。本文主要包括如下几个部分:RIR的基本介绍、生成RIR的开源工具以及RIR数据集介绍。
RIR基本介绍
RIR在训练和语音相关任务模型的时候常常作为一种数据增强的手段,用于提高模型的泛化性能。常见的RIR生成方法主要分为如下三类:
基于波动方程方法:主要包括有限元、边界元以及有限时域差分方法等。
基于光线方法:主要包括Image以及光线追踪,其中Image使用最为广泛。
基于统计方法:主要包括统计能量分析方法。
生成的RIR一般由三个部分构成:直达声、早期混响以及晚期混响。而早期混响在一定程度上能够提高听感,因此在语音增强或者去混响任务中,常常将(直达声+早期混响)与纯净语音进行卷积得到的语音作为网络学习的目标。然后主要去除的是晚期混响。
而生成上述RIR的常见方法就是Image方法,有关该方法的详细介绍可以参考文献[1], 在此只是对Image方法做一个简单的介绍。
在上图中表示声源,表示接收器如麦克风。只考虑一次镜面反射的前提下,将会形成5个镜像声源,其中由于声源和的连线没有穿过平面,因此是一次无效的镜面反射,所以有效的镜像声源为,根据线段之间的关系可以很方便的计算镜像声源和之间的距离,然后计算相应的脉冲响应IR。从上述过程中可以看到,Image方法可能不断生成无效的反射路径,然后验证路径的有效性并拒绝无效路径,由此产生了巨大的计算量。另外Image方法只考虑了镜面反射,但是在实际中漫反射更为常见。镜面反射和漫反射示例如下:
为了解决更复杂的声学场景,如遮蔽以及上面的漫反射等场景,文献[2]提出了方法用于RIR的生成,该方法主要基于方法即随机生成反射路径。能够更好适应镜面反射,漫反射以及遮蔽等复杂的声学场景,关于该方法更详细的介绍请移步文献[2]
开源的RIR生成工具
在该部分主要介绍一些开源的RIR生成工具,主要如下
rir_generator
rir_generator是一个比较经典的RIR生成工具,该工具主要基于Image方法生成RIR,有matlab和pyhon版本。
python版本地址:https://github.com/audiolabs/rir-generator
matlab版本地址:https://github.com/ehabets/RIR-Generator
具体的使用可以github上的Readme文档。
pyroomacoustic
pyroomacoustics是另外一个可以生成RIR的工具,除了生成RIR外,该开源工具还包括自适应滤波(Adaptive Filtering)、盲源分离(Blind Source Separation)、波达方向估计(Direction of Arrival)以及单通道降噪(Single-Channel Denoising)等模块。
github地址:https://github.com/LCAV/pyroomacoustics
说明文档地址:https://pyroomacoustics.readthedocs.io/en/pypi-release/
使用该工具生成RIR的示例可以参考
pyroomacoustic使用示例
TingweiSpeak,公众号:TingweiSpeakpyroomacoustics生成RIR
gpuRIR
gpuRIR是一个能够通过CUDA进行加速计算的开源工具,同样是基于Image方法。相比于通过CPU计算RIR,经过CUDA加速后其RIR生成速度比CPU快将近100倍。
github地址:https://github.com/DavidDiazGuerra/gpuRIR
gpuRIR的使用示例可以参考
gpuRIR使用示例
ctwgL,公众号:音频探险记gpuRIR--房间脉冲响应的加速计算
FRA-RIR
虽然gpuRIR能够大幅减少RIR生成所需要的时间,但是需要GPU的支持。而使用CPU生成RIR又是一件很耗时的事情。因此训练网络时,常常是提前生成一批RIR数据,然后在进行网络的训练。为了加快RIR的生成以便于实现网络训练过程中数据的在线增强,在文献[3]中,罗老师通过对Image生成RIR中的相关参数计算进行了近似,如镜像声源和麦克风之间的距离,房间相关的参数计算以及声源的反射次数,以此来得到加快RIR计算的目的。除此之外,相比于RIR-generator, pyroomacoustic以及gpuRIR而言,经过FRA-RIR生成的RIR更接近于真实环境下的RIR,由此带来了降噪和去混响性能的提升。
GAS
由于Image方法只涉及到了简单声学环境下的镜面反射场景,无法覆盖到漫反射以及遮蔽等复杂的场景,因此衍生出了GAS方法,能够对遮蔽,镜面反射,漫反射等场景进行建模,相比于Image方法生成的RIR而言,GAS生成的RIR和实际环境下的RIR更为接近。
github地址:https://github.com/GAMMA-UMD/pygsound
Fast-RIR
该方法主要采用GAN网络来生成真实的RIR,通过将声源三维坐标,麦克风三维坐标,房间大小的三维坐标以及T60构成10维向量输入到GAN网络中,从而得到真实的RIR。模型的整体结果如下
关于该方法更详细的介绍可以参考文献[4]
github地址:https://github.com/anton-jeran/FAST-RIR
TS_RIR
另外一个比较有意思的工作就是TS_RIR, 该方法同样是使用GAN网络来生成真实的RIR,与Fast-RIR不同的是,TS_RIR的输入是仿真生成的RIR,然后输出真实的RIR。所使用的网络结构如下:
关于该方法更详细的介绍可以参考文献[5]。
github地址:https://github.com/GAMMA-UMD/TS-RIR
RIR数据集
本部分主要列举一下RIR数据集,除了仿真生成的RIR数据之外,下面介绍的RIR数据集更偏向于实采的RIR数据。
ACE Challenge
该数据集采集了7个不同房间的RIR,采集设备包括:
Single-channel ( based on cruciform channel)
2-channel laptop
3-channel mobile
5-channel cruciform
8-channel linear
32-channel spherical(EM32 array)
网址:http://www.ee.ic.ac.uk/naylor/ACEweb/index.html
But Speech@fit Reverb Database
主要采集了9个房间的RIR数据,房间尺寸如下
网址:https://speech.fit.vutbr.cz/software
Arni
在以下环境采集的共132037条RIR数据。
数据地址:https://zenodo.org/record/6985104#.Y7WerexBxqs
SLR 28
包含合成的和实采的RIR数据
网址:https://openslr.org/28/
SLR 26
仿真生成的RIR数据
网址:https://openslr.org/26/
参考文献
[1] Room Impulse Response Generator
[2] IMPROVING REVERBERANT SPEECH TRAINING USING DIFFUSE ACOUSTIC SIMULATION
[3] FRA-RIR: Fast Random Approximation of the Image-source Method
[4] FAST-RIR: FAST NEURAL DIFFUSE ROOM IMPULSE RESPONSE GENERATOR
[5] TS-RIR: TRANSLATED SYNTHETIC ROOM IMPULSE RESPONSES FOR SPEECH AUGMENTATION
领取专属 10元无门槛券
私享最新 技术干货