使用linux命令行从WAV / RIFF获取频谱

时间:2014-02-13 13:55:00

标签: linux audio sox spectrum spectrogram

如何生成包含wav / riff声音文件频率的文件?我想用linux命令行。

我知道生成png谱图的酷sox函数

sox sound.wav -n spectrogram

但我不需要频谱范围的直观表示。我只想在数据文件中获取频谱,以便我可以处理它们。我相信必须有一个使用sox的选项。 Sox需要在绘制数据之前生成该数据。怎么弄这个?

不确定,也许第二种解决方案是将wav文件导出到dat文件中。来自dat文件的每个样品都是膜在某个时刻的位置的量度。所以这不是频谱。

sox sound.wav file.dat

如何将这些膜位置转换为我需要的光谱?

感谢。

3 个答案:

答案 0 :(得分:4)

您正在寻找的是傅立叶变换或快速傅立叶变换(FFT)。 FFT是一种数学算法,可将时域采样(即膜位置,如你所说,在时间点上)转换为频率分量,这些数据包含在.wav文件中。如果您使用Google FFT,您将找到更多信息,包括可以在Linux中编译和重用的源代码。请参阅How do I plot the spectrum of a wav file using FFT?以获得良好的开端。

答案 1 :(得分:3)

您可以在sox中尝试stat选项。

play track.wav stat -freq

答案 2 :(得分:0)

怎么样

sox sound.wav -n stat -freq >& file.dat