БПФ для спектрограмм в Python

Как я могу использовать Python для чтения пиков частоты из файла WAV PCM, а затем иметь возможность генерировать его изображение, для анализа спектров?

Я пытаюсь сделать программу, которая позволяет вам читать любой аудиофайл, преобразовывать его в WAV PCM, а затем находить пики и частотные отсечки.

Волновая библиотека Python позволит вам импортировать аудио. После этого вы можете использовать numpy для получения БПФ аудио.

Затем matplotlib делает очень хорошие диаграммы и графики – абсолютно сопоставимые с MATLAB.

Он старый, как грязь, но эта статья , вероятно, заставит вас начать практически по той проблеме, которую вы описываете (статья в Python, конечно).

Загрузка 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 . Вот лучший пример.

 from pylab import * specgram(signal) 

является самым простым. Также весьма удобно в этом контексте:

 subplot 

Но будьте осторожны: Matplotlib работает очень медленно, но создает красивые изображения. Вы не должны использовать его для требовательной анимации, тем более, когда вы имеете дело с 3D

Если вам нужно преобразовать из формата PCM в целые числа, вы захотите использовать struct.unpack.