7

特定の倍音数のさまざまな周波数でトーンを再生するサウンドファイルを生成しています。
最終的に、これらのサウンドは小さなスピーカーを備えたデバイスで再生されます。

スピーカーの周波数応答曲線があり、Pythonで次のことを実行したいと思います。

  1. サウンドファイルの周波数スペクトルをプロットします。ファイルのFFTを取得して、次のようにプロットする必要がありますgnuplot
  2. データシートの周波数応答曲線に基づいて非線形伝達関数を適用します。
  3. 関数が適用された後の結果をプロットします。

誰か知っている :

  • これを行う最も簡単な方法は何でしょうか?
  • または私のためにこれを行うことができるアプリケーション(GNU / Linuxベース)の?
4

3 に答える 3

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))
于 2010-11-30T18:02:25.457 に答える
4

numpyとmatPlotLibを使用できます。以下のコードのようなもの:

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

これにより、fftスペクトルのグラフが表示されます。

于 2010-11-30T20:33:16.923 に答える
0

scipyにはFFTがあり、gnuplotにうまく接続します。シグナルモジュールを使用して計算を実行できるはずです。

于 2010-11-30T16:35:38.430 に答える