1

我拿了一个文件,它是音符 F2 的干净、重复的波形(我通过在虚拟钢琴上弹奏 F2 并弹奏波形文件并比较来推断)在钢琴上。当我对信号进行 fft 时,通过使用保存的 wav 文件的 wavread,我得到了 176.4 Hz 的峰值频率,这比音符 F2 的正确频率低了一个八度。

当我分析另一个音符时,这次是用物理钢琴录制的,我得到了完全相同的峰值频率。这怎么可能?MATLAB 是否有可能将峰值频率存储在其内存中的多个文件?如果是这样,我该如何解决这个问题?

PS 当我们分析一首完整的歌曲时,即一个包含许多音符的 wav 文件,我们得到了许多峰值,这证实了我们没有对所有内容使用相同的图表。

4

1 回答 1

1

这不是 Matlab 的 FFT 中的错误。

音高不同于峰值频率。这是一种心理声学现象。人类将作为单个音乐音高听到的声音可能包含许多频率峰值,其中最强的频谱频率峰值可能是以完全不同的音高为中心的泛音,和/或比感知音高更高的八度音阶。在听力学和声音感知的神经心理学等领域,有一些书籍涵盖了这个主题。一本关于音乐物理学的书可能会解释为什么钢琴会创造出如此丰富和复杂的频谱内容。

要找到音高,需要使用音高检测/估计算法,而不仅仅是 FFT。使用这些关键字在此处搜索。

于 2013-03-06T16:24:30.107 回答