Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Загрузка WAV файлов легко с помощью audiolab:

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

Ответ 3

from pylab import *
specgram(signal)

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

subplot

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

Ответ 4

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