Python:声音文件的频率分析

标签 python audio wav fft gnuplot

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

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

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

有没有人知道:

  • 最简单的方法是什么?
  • 或可以为我执行此操作的应用程序(基于 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/

相关文章:

python - 覆盖默认的 argparse -h 行为

linux - 从信用卡读卡器解码音频

java - 通过 http Retrofit2 请求发送 WAV 文件 - Android Studio

flash - 您可以在SWFOBJECT中使用哪些音频文件?

r - 希望将 SeeWave 生成​​的 3D 摄谱图保存为 .STL 或 R 中的类似文件

c# - 在 WinForms 应用程序中拆分 wmv/wav 文件

python - xpath 正则表达式不会在 lxml.etree 中搜索 tail

python - 正则表达式在 Python 中添加引号,这样我就可以返回 Python 字典

python - 为什么scipy中norm.cdf比norm.pdf更快?

audio - 混合音频和视频,停止MediaMuxer时出现问题