形状对上了,数字却全不一样:用 Python 提取梅尔声谱图
上一课把那组梅尔滤波器——十个三角形,每个只管一段频率,中间最敏感、两边逐渐不管——按五步自己造了一遍。这一课让现成的库造一遍,然后把两份结果摆在一起——形状一模一样,数字一个都对不上。 顺着差异追下去,会挖出三个默认值:库默认取到的最高频率不是 8000、默认把每个三角形缩成等面积、默认用的根本不是同一条梅尔公式。三处改过来之后,最大差从 0.9999 降到 0.0147。剩下的那点残差,也有出处。
完整代码在第 18 课脚本,运行环境沿用课程总纲里的一次性配置。
一行就拿到了滤波器组
还是上一课那段音阶,还是那组参数:一帧 2048 个样本,10 个梅尔带——也就是上一课那把按听感刻的尺子上切出来的十段。
librosa.filters.mel(sr=22050,
n_fft=2048,
n_mels=10)
shape = (10, 1025)
形状对上了。 10 是带数,1025 是「帧长 / 2 + 1」——和上一课手写那版一模一样。
到这里很容易就翻篇了。但形状对上不等于内容对上,所以再多看一眼。
互动持续版
静态图文到这里,接下来让声音和图形动起来
购买后解锁完整课程,以及只有官网互动版才能提供的声音、动画和可操作实验。
- 完整声音对比、分步动画与 8 个交互实验
- 微信账号登录,手机和电脑同步访问
- 申请加入课程会员群,交流、反馈和接收更新
- 持续获得这门课程的勘误与内容升级