使用混响时间初始化房间脉冲响应(T60)



我正在使用非负矩阵分解进行语音去混响。

确切地说,我正在研究Nasser的这篇论文(paris.cs.illinois.edu/pubs/Nasser-icassp2015.pdf(,该论文涉及获得房间脉冲响应的最优解(方程10(。因此,我需要首先初始化H。他在论文中提到,"使用线性衰减包络对H的每一行进行了相同的初始化"(第4节,第3页末尾(。我需要初始化脉冲响应(H(,使得其混响时间(T60(为300ms。设H的长度为10。

这是我尝试过的,但它是一个任意的解决方案。

x=1:10;
h = exp(-x/2);
H = repmat(h,600,1);

这将给我一个尺寸为600*10的H。但是,我不知道如何在MATLAB中使用T60进行初始化。

嗯。如果你试图创建一个混响效果,那么H应该只是一个向量,在我看来,你有一个有10列的矩阵。当创建混响效果时,你通常会得到你的脉冲响应,并将其与你的音频信号进行卷积。在这种情况下,h看起来相当武断,我不知道它是否会给你想要的混响量。然而,如果你想将h实现为混响的脉冲响应,你所要做的就是将音频信号与脉冲响应卷积。

[x, fs] = audioread('myaudio.wav');
y = conv(x,h);

如果您有来自录音的脉冲响应和来自录音室的脉冲响应,您可以使用Matlab中的去卷积函数应用去卷积来去除混响。

你应该能够计算出一个公式,使h只是一个指数衰减向量,大约需要300ms才能死亡(尽管实际上听到这可能很棘手(

如果你想在脉冲响应计算方面取得真正的进步,我建议你尝试一种图像源方法来创建脉冲响应。查看以下纸张(旧的,但金色的(;

http://www.umiacs.umd.edu/~ramani/cmsc828d_audio/AllenBerkley79.pdf

如果你对盲反卷积感兴趣,这可能会引起你的兴趣。

https://www.academia.edu/1370250/Predictive_deconvolution_and_kurtosis_maximization_for_speech_dereverberation

需要注意的是,反卷积和房间混响是一项非常棘手的业务。上面给出的图像源模型虽然有趣且有效,但并没有真正捕捉到混响和去混响的复杂性。有几件事会影响声音(驻波等(我不能向你保证,简单地使用衰减的指数矢量和反褶积计算RT60会产生惊人的结果。尽管如此,麦汁还是很有趣的!

最新更新