Python:声音文件的频率分析

waf*_*man 7 python audio fft gnuplot wav

我正在生成一些声音文件,这些声音文件以不同的频率播放音调,并具有一定数量的谐波.
最终,这些声音将在带有小扬声器的设备上播放.

我有扬声器的频率响应曲线,并希望在Python中执行以下操作:

  1. 绘制声音文件的频谱.我需要对文件进行FFT并绘制它gnuplot
  2. 根据数据表中的频率响应曲线应用非线性传递函数.
  3. 应用函数后绘制结果.

有人知道吗 :

  • 什么是最简单的方法来做到这一点会是什么?
  • 或者是一个可以为我做这个的应用程序(基于GNU/Linux)?

Ste*_*joa 10

我知道你没有提到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))
Run Code Online (Sandbox Code Playgroud)