БПФ для спектрограмм в Python - PullRequest
26 голосов
/ 20 августа 2009

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

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

Ответы [ 4 ]

24 голосов
/ 20 августа 2009

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

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

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

15 голосов
/ 02 сентября 2009

Загрузка файлов 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 голосов
/ 25 января 2012
from pylab import *
specgram(signal)

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

subplot

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

1 голос
/ 15 марта 2012

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

...