Xiaobin-Rong / gtcrn

The official implementation of GTCRN, an ultra-lite speech enhancement model.
MIT License
202 stars 34 forks source link

hz2ERB的系数 #21

Open Fylll opened 3 months ago

Fylll commented 3 months ago

你好: 非常感谢你的开源模型。让我学到了许多。在学习过程中我发现,你给出的hz2erb函数是erb_f = 24.7np.log10(0.00437freq_hz + 1)定义的,但查阅相关资料发现erb_f=21.366np.log10(0.00437freq_hz + 1),期待你的回复!

Xiaobin-Rong commented 3 months ago

你好,据这篇博客文章(https://www.cnblogs.com/LXP-Never/p/16011229.html#blogTitle6 ),两种近似公式相差无几。

fefenfeng commented 2 months ago

您好作者,首先非常感谢您的工作开源,让我在学习上受益匪浅,也恭喜您做出了这么优秀的工作。

在您ref的这篇博客中ERB的公式有如下几种,其中: Hz2erb_other: n_erb = 21.4 * np.log10(1 + 0.00437 * f); Hz2erb_matlab: n_erb = 11.17268 * np.log(1 + (46.06538 * f) / (f + 14678.49)); Hz2erb_2002: 9.265 * np.log(1 + f / (24.7 * 9.265)三种公式相差无几。 此外hz2erb_1990:24.7 * (4.37 * f / 1000 + 1.0)和hz2erb_1998: 24.7 + (f / 9.26449)几乎一样。

但您的公式为erb_f = 24.7np.log10(0.00437freq_hz + 1),请问前头的系数是否写错了呢?此外您可能没看清这位提问者的问题,@Fylll的问题中,两种函数后面项都一样,只有前头系数不一样,这种情况差距还是挺大的并不是相差无几,所以想问问您这里是不是搞错了呢?小白真心发问,希望您能解答,十分感谢🤞

Xiaobin-Rong commented 2 months ago

@fefenfeng 非常感谢您的指出,我再确认了一遍,这里我写的 ERB 的公式确实有误,正确的应该是 21.4 而不是 24.7,因为我是拿了之前其他人的 ERB 代码过来使用的,没有确认它的正确性。非常抱歉这里误导了你们,我将会改正这个错误,并且重新实验看其是否对实验结果有影响。

fefenfeng commented 2 months ago

感谢您的回复,我也会做些实验,同时也期待您的update🌹

Xiaobin-Rong commented 2 months ago

@fefenfeng 您好,经测试,系数改正为 21.4 对性能几乎没有影响

fefenfeng commented 2 months ago

@Xiaobin-Rong 您好,我下来也做了一些实验,结果和您的测试一样,系数改正对性能不产生影响。同时我怀着好奇在debug的时候将存储滤波器组系数的数组打印出来,并且绘制了滤波器组的频响。发现即使这个系数改到100也没区别。 erb 结果做了很简单的数学推导,如上,其实和这个常数比例系数没有关系。最终滤波器的中心频率的确定时根据频率范围和所选分带(也就是滤波器)数量决定的😊。希望会对您的工作有帮助。感谢。

Xiaobin-Rong commented 2 months ago

@fefenfeng 您好,很细致的推导,感谢您的分享,受教了!