【问题标题】:FFT for Spectrograms in PythonPython中频谱图的FFT
【发布时间】:2010-11-21 03:47:54
【问题描述】:

如何使用 Python 从 WAV PCM 文件中读取频率峰值,然后生成它的图像以进行频谱图分析?

我正在尝试制作一个程序,让您可以读取任何音频文件,将其转换为 WAV PCM,然后找到峰值和频率截止。

【问题讨论】:

    标签: python image graphics audio fft


    【解决方案1】:

    Python's wave library 将允许您导入音频。之后就可以use numpy to take an FFT的音频了。

    然后,matplotlib 制作了非常漂亮的图表 - 绝对可以与 MATLAB 媲美。

    它像泥土一样古老,但this article 可能会让您开始解决您所描述的问题(当然是 Python 中的文章)。

    【讨论】:

    • matplotlib 也可以直接用命令specgram计算谱图。
    【解决方案2】:

    使用audiolab 可以轻松加载 WAV 文件:

    from audiolab import wavread
    signal, fs, enc = wavread('test.wav')
    

    或用于读取任何通用音频格式并转换为 WAV:

    from audiolab import Sndfile
    sound_file = Sndfile('test.w64', 'r')
    signal = wave_file.read_frames(wave_file.nframes)
    

    谱图内置于 PyLab:

    from pylab import *
    specgram(signal)
    

    具体来说,它是matplotlib 的一部分。 Here's a better example.

    【讨论】:

      【解决方案3】:
      from pylab import *
      specgram(signal)
      

      是最简单的。在这种情况下也很方便:

      subplot
      

      但请注意:Matplotlib 非常慢,但它可以创建漂亮的图像。你不应该将它用于要求苛刻的动画,在处理 3D 时更不用说

      【讨论】:

        【解决方案4】:

        如果您需要从 PCM 格式转换为整数,则需要使用 struct.unpack。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-24
          • 2013-03-12
          • 1970-01-01
          相关资源
          最近更新 更多