用 Python 读取真实声音的频谱:四段声音为什么长得不一样?
同样弹一个音,小提琴、钢琴和萨克斯听起来仍然不同;噪声又是另一种样子。这一课把四段录音交给 Python,比较它们在不同频率上的强弱分布,并把横轴读成真正的 Hz。
上一课已经把公式变成了计算机能执行的 FFT。但我们只用 8 个自己造的数字验证了它,还没有把一段真实录音放进去。
这一课不再推导公式。我们会先听四个声音文件,再让程序依次完成读取、FFT、取绝对值和画图。这样做完后,屏幕上的曲线才会和耳朵听到的差别对应起来。
先听四段声音,再让程序处理它们
先别急着计算。我们准备四个文件,并按下面的顺序播放。前三段都让人听出稳定的高低,这种听觉感受叫音高;最后一段没有稳定重复,只剩杂乱的起伏,这种声音叫噪声。
- 小提琴 C4:violin_c.wav
- 钢琴 C5:piano_c.wav
- 萨克斯 C4:sax.wav
- 噪声:noise.wav
先听很重要。前三段都有明确的音高,却拥有不同的质感;最后一段听不出稳定音高。程序画出的结果,必须能帮助我们解释这个听感差别。
图 1:注意最后一步只是少画一部分结果。高频仍然参加了 FFT,f_ratio 没有重新计算声音。
互动持续版
静态图文到这里,接下来让声音和图形动起来
购买后解锁完整课程,以及只有官网互动版才能提供的声音、动画和可操作实验。
- 完整声音对比、分步动画与 8 个交互实验
- 微信账号登录,手机和电脑同步访问
- 申请加入课程会员群,交流、反馈和接收更新
- 持续获得这门课程的勘误与内容升级