Использование numpy
.
В качестве примера позвольте мне показать, как я анализировал частоты в стерео WAV-файле;
Сначала я прочитал данные и разделил их по левому и правому каналам;
import wave
import numpy as np
wr = wave.open('input.wav', 'r')
sz = 44100 # Read and process 1 second at a time.
da = np.fromstring(wr.readframes(sz), dtype=np.int16)
left, right = da[0::2], da[1::2]
Далее я запускаю на нем дискретное преобразование Фурье;
lf, rf = abs(np.fft.rfft(left)), abs(np.fft.rfft(right))
И мы построим левый канал с помощью mathplotlib;
import matplotlib.pyplot as plt
plt.figure(1)
a = plt.subplot(211)
r = 2**16/2
a.set_ylim([-r, r])
a.set_xlabel('time [s]')
a.set_ylabel('sample value [-]')
x = np.arange(44100)/44100
plt.plot(x, left)
b = plt.subplot(212)
b.set_xscale('log')
b.set_xlabel('frequency [Hz]')
b.set_ylabel('|amplitude|')
plt.plot(lf)
plt.savefig('sample-graph.png')
График выглядит примерно так;
Посмотрите на 'matplotlib' библиотеки для построения в Python. – leekaiinthesky
Я использую IDLE в pylab, поскольку касается конкретных библиотек, я думаю, что я хорош. Я не мог сделать fft, вот в чем проблема. Я получаю объект «модуль модуля» не вызываемый – Pandryl
Я использовал величину__спектра (insertvaluehere) в случае, если кто-то другой имеет ту же проблему, честно говоря, я не уверен, что он полностью прав, но это что-то. Спасибо за помощь leekaiinthesky! – Pandryl