我正在生成一些声音文件,这些文件可以播放具有一定数量谐波的各种频率的音调。
最终,这些声音将在带有小型扬声器的设备上播放。
我有扬声器的频率响应曲线,想在 Python 中执行以下操作:
- 绘制声音文件的频谱。我需要对文件进行 FFT 并使用
gnuplot
绘制它
- 根据数据表中的频率响应曲线应用非线性传递函数。
- 绘制函数应用后的结果。
有没有人知道:
- 最简单的方法是什么?
- 或可以为我执行此操作的应用程序(基于 GNU/Linux)?
最佳答案
我知道您没有提到 Pylab/Matplotlib,但它确实有效。这是一个示例(假设单 channel 信号):
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))
关于Python:声音文件的频率分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315989/