18共 23 讲8 分钟

形状对上了,数字却全不一样:用 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 个交互实验
  • 微信账号登录,手机和电脑同步访问
  • 申请加入课程会员群,交流、反馈和接收更新
  • 持续获得这门课程的勘误与内容升级
支付通道配置中比较免费版与互动版