一行代码替你做了哪四步:用 Python 取 MFCC
上一课把 MFCC 整条链子手写了一遍。这一课把它交给库:`librosa.feature.mfcc` 一行返回 13 行系数,`librosa.feature.delta` 再给出一阶和二阶变化率,拼起来就是常说的每帧 39 维。照例,一行拿到结果之后要做的第一件事是把它拆回上一课手写的那四步,逐位对齐——四个默认值全改对,最大差才降到 0.0000。中间还会撞上两件事:`delta` 不是「后一帧减前一帧」;13 个系数里没有哪一个单独分得开三种风格。
完整代码在第 20 课脚本,运行环境沿用课程总纲里的一次性配置。
一行就拿到了 13 个系数
换一段音乐:德彪西那段古典乐的前 30 秒。
signal, sr = librosa.load("debussy.wav")
mfccs = librosa.feature.mfcc(y=signal, sr=sr,
n_mfcc=13)
signal 661500 个样本,22050 Hz
mfccs shape = (13, 1292)
librosa.load 不写采样率就默认重采样到 22050——前面十九课一直用的就是这个数,所以这批特征和之前算过的都能互相比较。
13 行是系数序号 0 到 12,1292 列是帧。 帧数还是第 15 课那条算式:,一帧覆盖 92.9 毫秒,每 23.2 毫秒挪一次。
数值范围是 −395.7 到 216.5。这不是分贝。 分贝停在取对数那一步;再做一次变换之后,出来的系数没有单位。
互动持续版
静态图文到这里,接下来让声音和图形动起来
购买后解锁完整课程,以及只有官网互动版才能提供的声音、动画和可操作实验。
- 完整声音对比、分步动画与 8 个交互实验
- 微信账号登录,手机和电脑同步访问
- 申请加入课程会员群,交流、反馈和接收更新
- 持续获得这门课程的勘误与内容升级