房间脉冲响应测量与模拟方法

article/2025/11/10 20:45:01

本文是作者投稿到“21dB声学人”公众号的文章,现经有允许转载到自己的博客,技术交流可以联系593170280@qq.com

房间脉冲响应(Room Impulse Response, RIR)表征了房间系统的系统响应,可以用于房间均衡和计算房间声学参数等用途。在使用脉冲响应反向积分法计算房间混响时间时,首先需要测量房间内的声源到传声器的脉冲响应。测量房间脉冲响应有许多种方法,文献[1]中对不同的房间脉冲响应测量方法进行了详细的介绍和对比。本文详细介绍其中最为常用的最大长度序列法[2](Maximum Length Sequence, MLS),并在实际房间中使用该方法进行房间脉冲响应的测量。最大长度序列是一种二进制伪随机序列,是具有全带特性的信号。最大长度序列易于硬件生成且具有可重复性,因此通常被作为激励信号由扬声器系统进行重放以进行房间脉冲响应的测量。阶数为 ,周期为 的最大长度序列信号的自相关函数具有以下性质:
Rss ⁡ ( k ) = 1 L ∑ n = 0 L − 1 s ( n ) s ( n + k ) = { 1 k = 0 , L , 2 L , … − 1 L k ≠ 0 , L , 2 L , … \operatorname{Rss}(k)=\frac{1}{L} \sum_{n=0}^{L-1} s(n) s(n+k)=\left\{\begin{array}{cl} 1 & k=0, L, 2 L, \ldots \\ -\frac{1}{L} & k \neq 0, L, 2 L, \ldots \end{array}\right. Rss(k)=L1n=0L1s(n)s(n+k)={1L1k=0,L,2L,k=0,L,2L,

可以发现最大长度序列信号的自相关函数为单位脉冲响应。在计算房间脉冲响应时,正是利用了公式中最大长度序列的自相关函数性质。房间可以被视为一个线性时不变系统,因此计算房间脉冲响应可以被视为一个系统辨识问题。在忽略噪声的情况下,系统的输出信号 y ( t ) y(t) y(t)可以由系统的输入信号 x ( t ) x(t) x(t)和系统的脉冲响应 h ( t ) h(t) h(t)卷积得到:
y ( t ) = ∫ − ∞ ∞ x ( t − k ) h ( k ) d k y(t)=\int_{-\infty}^{\infty} x(t-k) h(k) d k y(t)=x(tk)h(k)dk

在公式两端对输入信号 x ( t ) x(t) x(t)进行互相关运算,可得:
Ryx ⁡ ( τ ) = lim ⁡ T → ∞ 1 T ∫ − T / 2 T / 2 ∫ − ∞ ∞ x ( t + τ − k ) h ( k ) x ( t ) d k d t = ∫ − ∞ ∞ Rxx ⁡ ( τ − k ) h ( k ) d k \begin{aligned} \operatorname{Ryx}(\tau) &=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{-T / 2}^{T / 2} \int_{-\infty}^{\infty} x(t+\tau-k) h(k) x(t) d k d t \\ &=\int_{-\infty}^{\infty} \operatorname{Rxx}(\tau-k) h(k) d k \end{aligned} Ryx(τ)=TlimT1T/2T/2x(t+τk)h(k)x(t)dkdt=Rxx(τk)h(k)dk

将最大长度序列的自相关函数的性质带入上式,可得:
R y x ( τ ) = h ( τ ) Ryx(\tau)=h(\tau) Ryx(τ)=h(τ)

以上推导表明:对系统的输入信号和输出信号进行互相关运算,即可计算出系统的脉冲响应。对于房间系统而言,互相关运算计算出了房间脉冲响应。
由于最大长度序列是可重复信号,因此可以进行多次测量取平均以减少测量的随机误差,这也是最大长度序列信号相对于白噪声信号的优势之一。需要注意的是,在生成最大长度序列信号时应该根据所需房间脉冲响应的长度选择合适的阶数。如果阶数过小,生成的最大长度序列信号长度短语所需房间脉冲响应的长度,会造成信号混叠,导致计算错误[2]。图1分别展示了在真实房间中使用最大长度序列法进行测量时的输入信号、输出信号,以及测得的房间脉冲响应。
精准地测量房间脉冲响应需要专业的仪器与人员,并且耗费较多的时间与精力,不利于大规模测量。在构建混响语音数据集用于训练深度神经网络时,由于数据集的大小与质量直接决定了算法的性能,因此为了获取大量的房间脉冲响应数据,往往采用计算机模拟的方法人工生成房间脉冲响应。
计算机模拟房间脉冲响应的方法主要可分为四类:第一类是基于波动声学的方法,如有限元法[3]和边界元法[4]。这类方法可以准确地模拟房间中的声波传输,但是对于高频声波的计算复杂度比较高。第二类是基于射线声学的方法,如虚源法[5]和路径追踪法[6]。这类方法因为计算复杂度较低而被广泛使用,但是该类方法对于低频声波的仿真存在局限。第三类是基于RIR统计模型的方法,如Schroder统计模型,但是该类方法模拟的RIR与真实的RIR在早期混响部分存在显著差异。第四类是基于深度学习的方法,以上介绍的三类传统RIR模拟
a
在这里插入图片描述
在这里插入图片描述

图 1 在真实房间中使用最大长度序列法进行测量时的信号: (a) 输入信号; (b) 输出信号; (c)测得的房间脉冲响应

方法均适用于特定的理论假设条件,其模拟的RIR与实际的RIR存在一定差异,造成深度学习模型在实际场景下性能下降。因此,有学者提出基于生成对抗网络(Generative Adversarial Network, GAN)的RIR模拟方法[7],提升了深度学习模型在远场语音识别任务下的准确度。然而,该方法无法模拟具有特定混响时间的RIR且远场语音识别任务下使用的混响时间大多在0.8s以下,缺乏长混响时间对应的RIR数据库。作者随后提出一种快速的RIR模拟方法[8],极大提升了RIR的模拟速度。然而,该方法也是主要用于模拟中短混响(0.2-0.7 s)的RIR,并且与真实房间的RIR仍存在差距。在众多的房间脉冲响应模拟方法中,目前应用得最广泛的方法是虚源法。图2 展示了虚源法模拟的房间脉冲响应的时域波形图。
在这里插入图片描述

图2 使用虚源法模拟的房间脉冲响应时域波形图

房间脉冲响应主要由直达声、早期反射声、晚期反射声三部分组成,分别使用黑色、红色、蓝色进行标注。从房间脉冲响应最大值所对应的时间开始计算,前8 ms 的信号属于直达声,从8 ms 到50 ms的信号属于早期反射声,50 ms以后的信号属于晚期反射声。在具有长混响时间的房间中,晚期反射声占有主导地位。虚源法所模拟的房间脉冲响应具有在时域上稀疏的特性,并且其波形由标准的脉冲声和反射声组成。然而,实际房间中的房间性质及反射物更为复杂,因此使用虚源法模拟的房间脉冲响应往往与实际房间中的房间脉冲响应不符。此外,由于虚源法是一种基于射线声学理论的理论模型,无法模拟低频声波特性和复杂房间中的声波传播过程。因此,在使用虚源法所模拟的房间脉冲响应训练深度学习模型时,会造成模型失配问题,导致混响时间盲估计模型在实际应用中性能下降。因此,需要提出一些更加切合实际的房间脉冲响应模拟法,尽量避免了使用虚源法模拟房间脉冲响应带来的弊端。

关键词:

房间脉冲响应、房间脉冲响应测量

参考文献:
[1] STAN G B, EMBRECHTS J J, ARCHAMBEAU D. Comparison of different impulse response measurement techniques[J]. Journal of the Audio engineering society, 2002, 50(4): 249-262.
[2] NIELSEN J L. Maximum-Length Sequence Measurement of Room Impulse Responses with High-Level Disturbances[C]//Audio Engineering Society Convention 100. Audio Engineering Society, 1996.
[3] SHUKU T, ISHIHARA K. The analysis of the acoustic field in irregularly shaped rooms by the finite element method[J]. Journal of Sound and Vibration, 1973, 29(1): 67-IN1.
[4] KIRKUP S. The boundary element method in acoustics: A survey[J]. Applied Sciences, 2019, 9(8): 1642.
[5] ALLEN J B, BERKLEY D A. Image method for efficiently simulating small-room acoustics[J]. The Journal of the Acoustical Society of America, 1979, 65(4): 943-950.
[6] KROKSTAD A, STROM S, SØRSDAL S. Calculating the acoustical room response by the use of a ray tracing technique[J]. Journal of Sound and Vibration, 1968, 8(1): 118-125.
[7] RATNARAJAH A, TANG Z, MANOCHA D. IR-GAN: Room Impulse Response Generator for Far-field Speech Recognition[J/OL]. 2020[2021-07-26]. https://arxiv.org/abs/2010.13219v3.
[8] RATNARAJAH A, ZHANG S X, YU M, 等. FAST-RIR: Fast neural diffuse room impulse response generator[J]. arXiv preprint arXiv:2110.04057, 2021.


http://chatgpt.dhexx.cn/article/V3DGVVvy.shtml

相关文章

时间序列分析(12)| 脉冲响应函数、格兰杰因果检验

上篇介绍到,VAR模型研究的是多个时间序列变量之间的相互影响关系,但是模型估计出的参数结果及其显著水平似乎并不能直观地反映这种影响关系,而要想直观地呈现这种关系,就需要使用本篇介绍的「脉冲响应函数」(impulse r…

鸢尾花数据集可视化

Iris数据集 Iris数据集包含有四个属性一个标签 四个属性分别是 花萼(Sepall)长度花萼宽度花瓣(Petal)长度花瓣宽度 一个标签,用来说明是哪一种鸢尾花 山鸢尾(Setosa)变色鸢尾(versicolor)维吉尼亚鸢尾(virginica) 目标 任意两个不同的…

鸢尾花数据集分类--神经网络

1.1 鸢尾花数据集介绍 iris数据集是用来给莺尾花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征,我们需要建立一个分类器,该分类器可通过样本的四个特征来来判断样本属于山鸢尾(Setosa&#xff0…

机器学习鸢尾花数据集分析

目录 1 sklearn数据集的使用2 sklearn数据集返回值介绍3 查看数据分布4 数据集的划分5 总结 1 sklearn数据集的使用 鸢尾属(拉丁学名:Iris L.)是单子叶植物纲,鸢尾科多年生草本植物,有块茎或匍匐状根茎;叶…

决策树可视化:鸢尾花数据集分类(附代码数据集)

决策树 数据集实战可视化评价 决策树是什么?决策树(decision tree)是一种基本的分类与回归方法。举个通俗易懂的例子,流程图就是一种决策树。 有没有车,没车的话有没有房,没房的话有没有存款,没存款pass。这个流程就是…

机器学习算法:基于鸢尾花(iris)数据集的数据可视化 (200+收藏)

文章目录 基于鸢尾花(iris)数据集的数据可视化1、数据导入2、查看样本数据3、特征与标签组合的散点可视化3.1、 散点图3.2、 箱型图3.2、 三维散点图想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 干货推送,微信随时解答你的疑问 😃😃😃 基于…

鸢尾花数据集的可视化

#TensorFlow实战 鸢尾花数据集的可视化化展示 文章目录 前言一、介绍二、步骤1.引入库2.读入数据 前言 数据可视化展示能在实验中可视化展出实验结果,是基础部分 一、介绍 鸢尾花数据集是公开的数据集,可通过URL从TensorFlow的Keras连接下载。 二、步…

探索sklearn | 鸢尾花数据集

1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集。它是用统计进行分类的鼻祖。 sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一。 导入的方法很简单,不过我比较好奇它是如何来存…

线性回归实例-鸢尾花数据集

文章目录 一、具体实现步骤1. 导入Iris鸢尾花数据集2. 提取花瓣数据3. 拆分数据4. 训练模型 二、可视化结果展示1. 训练集2. 测试集 三、相关知识点讲解1. train_test_split()函数2. LinearRegression()函数3. 散点图与折线统计图的绘制 这篇文章中,我们要通过鸢尾花…

基于朴素贝叶斯的鸢尾花数据集分类

目录 1.作者介绍2.理论知识介绍2.1算法介绍2.2数据集介绍 3.实验代码及结果3.1 数据集下载3.2实验代码3.2实验结果 1.作者介绍 王炜鑫,男,西安工程大学电子信息学院,2021级研究生 研究方向:小型无人直升机模型辨识 电子邮件&…

鸢尾花数据集的数据可视化

鸢尾花数据集的数据显示 一、鸢尾花数据集介绍1.历史2.数据集 二、鸢尾花数据集可视化1.普通读取数据方法2.运行结果3.普通读取数据方法4.运行结果5.未使用mglearn库的代码6.运行结果7.使用mglearn库的代码8.运行结果 一、鸢尾花数据集介绍 1.历史 安德森鸢尾花卉数据集&#…

鸢尾花数据集分类

数据集介绍 共有数据150组,每组包括花萼长、花萼宽、花瓣长、花瓣宽4个输入特征。 同时给出了,这一组特征对应的鸢尾花类别。类别包括Setosa Iris(狗尾草 鸢尾),Versicolour Iris(杂色鸢尾)&…

鸢尾花数据集分类-决策树

文章目录 决策树数据集代码实验分析 决策树 决策树(Decision Tree)是一种基本的分类与回归方法,当决策树用于分类时称为分类树,用于回归时称为回归树。主要介绍分类树。 决策树由结点和有向边组成。结点有两种类型:内…

鸢尾花数据集的各种玩法

目录 鸢尾花数据集下载鸢尾花数据集iris csv文件下载数据集 Pandas访问csv数据集 Pandas库Pandas二维数据基本操作 读取csv数据集文件设置列标题names参数 访问数据显示统计信息DataFrame的常用属性:ndim、size、shape转化为NumPy数组 访问数组元素–索引和切片 鸢…

iris鸢尾花数据集最全数据分析

写在前面 在写这篇文章之前,首先安利下jupyter,简直是神作,既可以用来写文章,又可以用来写代码,文章和代码并存,简直就是写代码/文章/教程的利器。 安装很简单:pip install jupyter 使用很简单…

sklearn数据集——iris鸢尾花数据集

参考书籍:Python机器学习基础教程 1、初始数据 鸢尾花(Iris)数据集,是机器学习和统计学中一个经典的数据集。它包含在 scikit-learn 的 datasets 模块中。 我们可以调用 load_iris 函数来加载数据: from sklearn.da…

重拾Iris鸢尾花数据集分析

最近我又又又开始了我的机器学习道路,并且回过头来重新看了一遍Iris数据分析,作为机器学习里面最经典的案例之一,鸢尾花既是我入门机器学习到放弃的地方,又是再次细读之后给予我灵感的地方。 下面介绍一下这次灵感之旅&am…

Python-鸢尾花数据集Iris 数据可视化 :读取数据、显示数据、描述性统计、散点图、直方图、KDE图、箱线图

本博客运行环境为Jupyter Notebook、Python3。使用的数据集是鸢尾花数据集(Iris)。主要叙述的是数据可视化。 IRIS数据集以鸢尾花的特征作为数据来源,数据集包含150个数据集,有4维,分为3 类,每类50个数据&a…

《机器学习》分析鸢尾花数据集

转载地址:https://www.cnblogs.com/mandy-study/p/7941365.html 分析鸢尾花数据集 下面将结合Scikit-learn官网的逻辑回归模型分析鸢尾花示例,给大家进行详细讲解及拓展。由于该数据集分类标签划分为3类(0类、1类、2类)&#xff…

笔记篇二:鸢尾花数据集分类

目录 一、鸢尾花数据集 二、逻辑回归分析 三、逻辑回归实现鸢尾花数据集分类 四、散点图绘制 一、鸢尾花数据集 1、问题 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 5…