3

我一直无法理解音频数据是如何存储的。但是,我想知道一种找到 PCM 数据音高的方法。例如,假设我以给定的采样率以 16 位单声道 PCM 格式录制了钢琴上敲击的单个键。我怎样才能找到音频的频率(以赫兹为单位)?获得平均频率的简单代码对我有用,但更详细地解释如何更好地理解格式将是理想的。

谢谢!

4

1 回答 1

8

PCM 音频不存储为一系列音高。要解决这个问题,您需要快速傅立叶变换或 FFT。请参阅https://stackoverflow.com/search?q=pitch+detection,已经有 10 篇关于此的帖子。

想想音频波形。PCM 编码只是每秒对该波进行一定次数的采样,并使用每个样本的特定位数。

波形

图片来自http://en.wikipedia.org/wiki/Pulse-code_modulation

44.1kHz 的 16 位单声道 PCM 意味着每秒 44,100 次,将存储一个 16 位值(2 个字节),表示采样特定时间的波形。44.1kHz 的速度足以存储接近 22kHz 的频率(请参阅奈奎斯特频率)。

FFT 将这些样本从时域转换到频域。也就是说,您可以找到特定时间段内所有频率的电平。您查看的波段越多,计算密集度就越高。

于 2011-04-04T02:33:17.100 回答