【问题标题】:Get frequency information from PCM data从 PCM 数据中获取频率信息
【发布时间】:2014-10-03 14:00:47
【问题描述】:

假设我使用wave 模块从声音文件中获取原始 PCM 数据。如何计算特定样本的包含频率的幅度?我后来想为每一帧画一个这样的频率图:

如何计算每个频率的幅度?

如果可能,我更喜欢不需要numpy 的解决方案。在此操作所需的计算背景下提供学习资源的链接也会很有帮助。

【问题讨论】:

  • 答案是尽快放松你对numpy 的恐惧(除非你有非常令人信服的理由),并使用numpy.fft.rfft()
  • 如果您需要资源,请查看优秀的“了解数字信号处理”一书。您无法更好地解释使用 FFT 进行频率分析。
  • The Scientist and Engineer's Guide to Digital Signal Processing By Steven W. Smith, Ph.D. 是一个很好的资源恕我直言。花点时间从头开始,即使它看起来很初级。
  • 你可以compute the DFT -- 但前提是你不关心O(N**2) 的性能。通过 ctypes 使用FFTW 怎么样?

标签: python python-2.x pcm frequency-analysis


【解决方案1】:

要从获取原始 PCM 文件的每个频率计算振幅,您必须执行 Fast Fourier Transform (FFT)。由于您不想使用numpy,您可以使用pylab 作为替代as can be seen here。试试看!

更新:pylab.specgram 文档 are here

【讨论】:

  • Pylab 依赖于 Numpy,不是吗?
  • @heltonbiker 是的。
猜你喜欢
  • 2011-07-28
  • 1970-01-01
  • 2013-08-24
  • 2017-07-10
  • 2012-04-28
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
相关资源
最近更新 更多