我从未理解音频数据的存储方式。但是,我想知道一种找到PCM数据间距的方法。比方说,例如,我以给定的采样率以16位单声道PCM格式录制了一个钢琴上的单个键。我怎么能找到音频的频率,以赫兹为单位?获得平均频率的简单代码对我有用,但更详细地解释如何更好地理解格式将是理想的。
谢谢!
答案 0 :(得分:5)
PCM音频不会存储为一系列音高。要想出这一点,您需要快速傅立叶变换或FFT。请参阅https://stackoverflow.com/search?q=pitch+detection,已有10篇关于此事的帖子。
想一想音频波形。 PCM编码只是每秒对波进行一定次数的采样,并且每个采样使用特定的比特数。
来自http://en.wikipedia.org/wiki/Pulse-code_modulation的图片
44.1kHz的16位单声道PCM意味着每秒44100次,将存储16位值(2个字节),表示采样时的特定时间的波形。 44.1kHz的速度足以存储接近22kHz的频率(见Nyquist Frequency)。
FFT将这些样本从时域转换到频域。也就是说,您可以找到特定时间段内所有频率的等级。您看到的频段越多,计算密集程度越高。