我拿了一个文件,这是一个干净的,重复的F2音符波形(我通过在虚拟钢琴上演奏F2和在钢琴上演奏wave fle,并进行比较得出了这一点)。当我对信号进行快速傅立叶变换时,通过对保存的wav文件进行波形读取,我得到了176.4 Hz的峰值频率,这比音符F2的正确频率低了一个八度。
当我分析另一个音符时,这次是从物理钢琴上录制的,我得到了完全相同的峰值频率。这怎麽可能?MATLAB有可能在内存中存储多个文件的峰值频率吗?如果是这样,我该如何解决这个问题?
另外,当我们分析一首完整的歌曲,即包含许多音符的wav文件时,我们得到了许多峰值,这证实了我们并没有使用相同的图表来处理所有事情。
发布于 2013-03-07 00:24:30
这不是Matlab的FFT中的错误。
音高不同于峰值频率。这是一种心理声学现象。人类将听到的单个音高的声音可以包含许多频率峰值,其中最强的频谱频率峰值可能是以完全不同的音高类别为中心的泛音,和/或具有比感知音高更高的八度。有一些书籍涵盖了这一主题,如听力学和声音感知的神经心理学。一本关于音乐物理学的书可能会解释为什么钢琴会创造出更丰富、更复杂的频谱内容。
要找到基音,需要使用pitch detection/estimation算法,而不仅仅是FFT。使用这些关键字搜索此处。
https://stackoverflow.com/questions/15240686
复制相似问题