【问题标题】:Get a spectrum of frequencies from WAV/RIFF using linux command line使用 linux 命令行从 WAV/RIFF 获取频谱
【发布时间】:2014-03-12 10:46:57
【问题描述】:

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

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

sox sound.wav -n spectrogram

但我不需要频谱的视觉表示。我只想获取数据文件中的频谱,以便我可以处理它们。我相信必须有一个使用 sox 的选项。 Sox 需要在绘制数据之前生成该数据。如何得到这个?

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

sox sound.wav file.dat

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

谢谢。

【问题讨论】:

标签: linux audio sox spectrum spectrogram


【解决方案1】:

你可以试试 sox 中的 stat 选项。

play track.wav stat -freq

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢。直接从 SOX 使用它怎么样? Sox 必须在绘制此频谱图之前执行 FFT 以生成频谱数​​据。它的工作速度非常快。
    • 我同意 SOX 必须在内部进行 FFT 以生成频谱。但是,我不确定是否有办法让 SOX 输出原始 FFT 数据。但是,您可以使用 SOX 从 wav 文件中提取数字样本,您需要将其输入到 FFT 程序中。有关此问题的更多想法,请参阅 Randall Cook 在stackoverflow.com/questions/15031544/… 的回答。
    【解决方案3】:

    怎么样

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 2015-09-03
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多