2009-08-20 3 views
24

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

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

ответ

23

Python's wave library позволит вам импортировать аудио. После этого вы можете записать use numpy to take an FFT.

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

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

+8

matplotlib также может вычислить спектрограмму непосредственно с помощью команды 'specgram'. – tom10

+0

, похоже, что это будет именно то, что мне нужно. Спасибо :) –

13

Загрузка файлов 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. Here's a better example.

2
from pylab import * 
specgram(signal) 

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

subplot 

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

1

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

Смежные вопросы