我希望了解音频分析的各种频谱图。我想将一个音频文件转换为10秒的块,为每个块生成光谱图,并使用CNN模型在这些图像上进行训练,看看它们是好是坏。
我已经研究了线性,对数,mel等,并在某个地方读到基于mel的频谱图最适合用于此。但是没有适当的可证实的信息。我已经使用了以下简单的代码来生成mel谱图。
y,sr= librosa.core.load(r'C:\Users\Tej\Desktop\NoiseWork\NoiseOnly\song.wav')
S = librosa.feature.melspectrogram(y=y, sr=sr)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max))我的问题是,哪个语谱图最能代表用于CNN训练的音频文件的特征?我用的是线性的,但有些音频文件的线性频谱图似乎是一样的
发布于 2019-06-24 05:39:31
为了补充前面所说的内容,我建议通过A Comparison of Audio Signal Preprocessing Methods for Deep Neural Networks on Music Tagging阅读由Keunwoo Choi,György Fazekas,Kyunghyun Cho和Mark Sandler所写的。
对于他们的数据,他们在简单的短时傅立叶变换和光谱图之间实现了几乎相同的分类精度。因此,如果你不介意预处理的话,梅尔谱图似乎是降维的明显赢家。作者还发现,正如琼纳提到的那样,对数缩放(本质上是将振幅转换为分贝刻度)提高了精度。您可以使用Librosa (使用您的代码)轻松完成此操作,如下所示:
y,sr= librosa.core.load(r'C:\Users\Tej\Desktop\NoiseWork\NoiseOnly\song.wav')
S = librosa.feature.melspectrogram(y=y, sr=sr)
S_db = librosa.core.power_to_db(S)至于db缩放后的归一化,这似乎取决于你的数据。从上面的论文中,作者发现对他们的数据使用各种归一化技术几乎没有区别。
最后值得一提的是一种称为每通道能量归一化的新方法。我推荐你读文森特Lostanlen,Justin Salamon,Mark Cartwright,Brian McFee,Andrew Farnsworth,Steve Kelling和Juan Pablo Bello写的Per-Channel Energy Normalization: Why and How。不幸的是,有一些参数需要根据数据进行调整,但在许多情况下,似乎与对数光谱图一样好或更好。您可以像这样在Librosa中实现它:
y,sr= librosa.core.load(r'C:\Users\Tej\Desktop\NoiseWork\NoiseOnly\song.wav')
S = librosa.feature.melspectrogram(y=y, sr=sr)
S_pcen = librosa.pcen(S)尽管,就像我提到的,pcen中有一些参数需要调整!如果你感兴趣,这里的Librosa's documentation on PCEN可以帮助你入门。
发布于 2019-04-06 05:11:11
对数缩放的mel谱图是当前用于卷积神经网络的“标准”。在2015-2018年间,它是音频事件检测和音频场景分类文献中最常用的。
为了对振幅变化更具不变性,通常使用归一化。或者是整个剪辑,或者是被分类的窗口。一般来说,Mean/std归一化效果很好。
但从CNN的角度来看,不同分光计之间的差异相对较小。因此,如果两个或更多的光谱图基本相同,这不太可能解决您的问题。
https://stackoverflow.com/questions/55513652
复制相似问题