Python: частотный анализ звуковых файлов - PullRequest
6 голосов
/ 30 ноября 2010

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

У меня есть кривая частотной характеристики динамика и я хочу сделать следующее в Python:

  1. Построить частотный спектр звукового файла.Мне нужно взять БПФ файла и построить его с помощью gnuplot
  2. . Применить нелинейную передаточную функцию на основе кривой АЧХ в листе данных.
  3. Построить результат после функции

Кто-нибудь знает:

  • Каким будет простейший способ сделать это?
  • или Приложение (на основе GNU / Linux), которое может сделать это для меня?

Ответы [ 3 ]

9 голосов
/ 30 ноября 2010

Я знаю, что вы не упомянули Pylab / Matplotlib, но это работает.Вот пример (предполагает одноканальный сигнал):

x, fs, nbits = audiolab.wavread('schubert.wav')
audiolab.play(x, fs)
N = 4*fs    # four seconds of audio
X = scipy.fft(x[:N])
Xdb = 20*scipy.log10(scipy.absolute(X))
f = scipy.linspace(0, fs, N, endpoint=False)
pylab.plot(f, Xdb)
pylab.xlim(0, 5000)   # view up to 5 kHz

Y = X*H
y = scipy.real(scipy.ifft(Y))
3 голосов
/ 30 ноября 2010

вы можете использовать numpy и matPlotLib. Что-то вроде кода ниже:

spectrum = numpy.fft.fft(signal)
frequencies = numpy.fft.fftfreq(len(spectrum))
pylab.plot(frequencies,spectrum)
pylab.show()

Это покажет график спектра БПФ.

0 голосов
/ 30 ноября 2010

scipy имеет БПФ и красиво подключается к gnuplot.Вы должны быть в состоянии использовать модуль signal для выполнения математических операций.

...