音乐流派分类中Spectrogram存储占用远高于MFCC问题咨询
谱图存储占用远高于MFCC的原因
- 特征维度本质差异:MFCC是对原始频谱做梅尔滤波、离散余弦变换(DCT)后得到的低维特征,常规音乐分类任务中
n_mfcc参数一般取13~40维;而STFT生成的谱图频率轴维度为n_fft/2 + 1,比如常用的n_fft=1024对应513维,仅频率轴维度就比MFCC高十几倍,两者时间轴维度基本一致,因此单条谱图的总数据量是MFCC的十几到几十倍。 - JSON存储的额外冗余:你将浮点型数组用
tolist()转成列表后存入JSON,会把每个浮点数序列化为字符串存储,原本单精度浮点数仅占4字节,转成字符串后普遍占用10字节以上,再加上你设置了indent=4的格式化缩进,会额外写入大量空格、换行符,进一步放大了存储占用。 - 存图压缩的优化效果:你后续将谱图存为图片时,首先将浮点型的谱图数值映射为8位灰度/RGB像素(单像素仅占1~3字节),再加上PNG/JPG格式的自带压缩,存储占用自然比JSON存浮点列表低很多。
额外优化建议
如果后续需要保留谱图的原始浮点数值,不想存为损失精度的压缩图片,可以用npy/npz、HDF5(h5py)这类专为数值数组设计的存储格式,比JSON存储效率高10倍以上,同时不会损失数值精度。
内容的提问来源于stack exchange,提问作者MadMac
相关产品推荐
相关产品推荐

